blob: fbf724270566f9c185f2f98320d270f358f94b19 [file] [log] [blame]
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +00001;RUN: llc -march=sparc < %s | FileCheck %s -check-prefix=V8
2;RUN: llc -march=sparc -mattr=v9 < %s | FileCheck %s -check-prefix=V9
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +00003
4define i8* @frameaddr() nounwind readnone {
5entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +00006;V8: frameaddr
7;V8: or %g0, %fp, {{.+}}
8
9;V9: frameaddr
10;V9: or %g0, %fp, {{.+}}
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000011 %0 = tail call i8* @llvm.frameaddress(i32 0)
12 ret i8* %0
13}
14
15define i8* @frameaddr2() nounwind readnone {
16entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +000017;V8: frameaddr2
18;V8: ta 3
19;V8: ld [%fp+56], {{.+}}
20;V8: ld [{{.+}}+56], {{.+}}
21;V8: ld [{{.+}}+56], {{.+}}
22
23;V9: frameaddr2
24;V9: flushw
25;V9: ld [%fp+56], {{.+}}
26;V9: ld [{{.+}}+56], {{.+}}
27;V9: ld [{{.+}}+56], {{.+}}
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000028 %0 = tail call i8* @llvm.frameaddress(i32 3)
29 ret i8* %0
30}
31
32declare i8* @llvm.frameaddress(i32) nounwind readnone
33
34
35
36define i8* @retaddr() nounwind readnone {
37entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +000038;V8: retaddr
39;V8: or %g0, %i7, {{.+}}
40
41;V9: retaddr
42;V9: or %g0, %i7, {{.+}}
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000043 %0 = tail call i8* @llvm.returnaddress(i32 0)
44 ret i8* %0
45}
46
47define i8* @retaddr2() nounwind readnone {
48entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +000049;V8: retaddr2
50;V8: ta 3
51;V8: ld [%fp+56], {{.+}}
52;V8: ld [{{.+}}+56], {{.+}}
53;V8: ld [{{.+}}+60], {{.+}}
54
55;V9: retaddr2
56;V9: flushw
57;V9: ld [%fp+56], {{.+}}
58;V9: ld [{{.+}}+56], {{.+}}
59;V9: ld [{{.+}}+60], {{.+}}
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000060 %0 = tail call i8* @llvm.returnaddress(i32 3)
61 ret i8* %0
62}
63
64declare i8* @llvm.returnaddress(i32) nounwind readnone