brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 07f25e1 Raw
117 lines · plain
1;RUN: llc -mtriple=sparc -show-mc-encoding < %s | FileCheck %s -check-prefix=V82;RUN: llc -mtriple=sparc -mattr=v9 < %s | FileCheck %s -check-prefix=V93;RUN: llc -mtriple=sparc -show-mc-encoding -regalloc=basic < %s | FileCheck %s -check-prefix=V84;RUN: llc -mtriple=sparc -regalloc=basic -mattr=v9 < %s | FileCheck %s -check-prefix=V95;RUN: llc -mtriple=sparcv9 < %s | FileCheck %s -check-prefix=SPARC646 7 8define ptr @frameaddr() nounwind readnone {9entry:10;V8-LABEL: frameaddr:11;V8: save %sp, -96, %sp12;V8: ret13;V8: restore %g0, %fp, %o014 15;V9-LABEL: frameaddr:16;V9: save %sp, -96, %sp17;V9: ret18;V9: restore %g0, %fp, %o019 20;SPARC64-LABEL: frameaddr21;SPARC64:       save %sp, -128, %sp22;SPARC64:       ret23;SPARC64:       restore %fp, 2047, %o024 25  %0 = tail call ptr @llvm.frameaddress(i32 0)26  ret ptr %027}28 29define ptr @frameaddr2() nounwind readnone {30entry:31;V8-LABEL: frameaddr2:32;V8: ta 3 ! encoding: [0x91,0xd0,0x20,0x03]33;V8: ld [%fp+56], {{.+}}34;V8: ld [{{.+}}+56], {{.+}}35;V8: ld [{{.+}}+56], {{.+}}36 37;V9-LABEL: frameaddr2:38;V9: flushw39;V9: ld [%fp+56], {{.+}}40;V9: ld [{{.+}}+56], {{.+}}41;V9: ld [{{.+}}+56], {{.+}}42 43;SPARC64-LABEL: frameaddr244;SPARC64: flushw45;SPARC64: ldx [%fp+2159],     %[[R0:[goli][0-7]]]46;SPARC64: ldx [%[[R0]]+2159], %[[R1:[goli][0-7]]]47;SPARC64: ldx [%[[R1]]+2159], %[[R2:[goli][0-7]]]48;SPARC64: ret49;SPARC64: restore %[[R2]], 2047, %o050 51  %0 = tail call ptr @llvm.frameaddress(i32 3)52  ret ptr %053}54 55declare ptr @llvm.frameaddress(i32) nounwind readnone56 57 58 59define ptr @retaddr() nounwind readnone {60entry:61;V8-LABEL: retaddr:62;V8: mov %o7, {{.+}}63 64;V9-LABEL: retaddr:65;V9: mov %o7, {{.+}}66 67;SPARC64-LABEL: retaddr68;SPARC64:       mov %o7, {{.+}}69 70  %0 = tail call ptr @llvm.returnaddress(i32 0)71  ret ptr %072}73 74define ptr @retaddr2() nounwind readnone {75entry:76;V8-LABEL: retaddr2:77;V8: ta 378;V8: ld [%fp+56], {{.+}}79;V8: ld [{{.+}}+56], {{.+}}80;V8: ld [{{.+}}+60], {{.+}}81 82;V9-LABEL: retaddr2:83;V9: flushw84;V9: ld [%fp+56], {{.+}}85;V9: ld [{{.+}}+56], {{.+}}86;V9: ld [{{.+}}+60], {{.+}}87 88;SPARC64-LABEL: retaddr289;SPARC64:       flushw90;SPARC64: ldx [%fp+2159],     %[[R0:[goli][0-7]]]91;SPARC64: ldx [%[[R0]]+2159], %[[R1:[goli][0-7]]]92;SPARC64: ldx [%[[R1]]+2167], {{.+}}93 94  %0 = tail call ptr @llvm.returnaddress(i32 3)95  ret ptr %096}97 98define ptr @retaddr3() nounwind readnone {99entry:100;V8-LABEL: retaddr3:101;V8: ta 3102;V8: ld [%fp+60], {{.+}}103 104;V9-LABEL: retaddr3:105;V9: flushw106;V9: ld [%fp+60], {{.+}}107 108;SPARC64-LABEL: retaddr3109;SPARC64:       flushw110;SPARC64: ldx [%fp+2167],     %[[R0:[goli][0-7]]]111 112  %0 = tail call ptr @llvm.returnaddress(i32 1)113  ret ptr %0114}115 116declare ptr @llvm.returnaddress(i32) nounwind readnone117