blob: 683d30266717bf8658076be05562a65f97071b48 [file] [log] [blame]
Jakob Stoklund Olesenc5ddb742011-04-05 21:40:41 +00001;RUN: llc -march=sparc < %s | FileCheck %s -check-prefix=V8
2;RUN: llc -march=sparc -mattr=v9 < %s | FileCheck %s -check-prefix=V9
3;RUN: llc -march=sparc -regalloc=basic < %s | FileCheck %s -check-prefix=V8
4;RUN: llc -march=sparc -regalloc=basic -mattr=v9 < %s | FileCheck %s -check-prefix=V9
Venkatraman Govindarajua0b34d62013-06-01 20:42:48 +00005
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +00006
7define i8* @frameaddr() nounwind readnone {
8entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +00009;V8: frameaddr
10;V8: or %g0, %fp, {{.+}}
11
12;V9: frameaddr
13;V9: or %g0, %fp, {{.+}}
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000014 %0 = tail call i8* @llvm.frameaddress(i32 0)
15 ret i8* %0
16}
17
18define i8* @frameaddr2() nounwind readnone {
19entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +000020;V8: frameaddr2
21;V8: ta 3
22;V8: ld [%fp+56], {{.+}}
23;V8: ld [{{.+}}+56], {{.+}}
24;V8: ld [{{.+}}+56], {{.+}}
25
26;V9: frameaddr2
27;V9: flushw
28;V9: ld [%fp+56], {{.+}}
29;V9: ld [{{.+}}+56], {{.+}}
30;V9: ld [{{.+}}+56], {{.+}}
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000031 %0 = tail call i8* @llvm.frameaddress(i32 3)
32 ret i8* %0
33}
34
35declare i8* @llvm.frameaddress(i32) nounwind readnone
36
37
38
39define i8* @retaddr() nounwind readnone {
40entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +000041;V8: retaddr
Venkatraman Govindarajudd482262013-06-02 02:24:27 +000042;V8: or %g0, %o7, {{.+}}
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +000043
44;V9: retaddr
Venkatraman Govindarajudd482262013-06-02 02:24:27 +000045;V9: or %g0, %o7, {{.+}}
Venkatraman Govindarajua0b34d62013-06-01 20:42:48 +000046
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000047 %0 = tail call i8* @llvm.returnaddress(i32 0)
48 ret i8* %0
49}
50
51define i8* @retaddr2() nounwind readnone {
52entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +000053;V8: retaddr2
54;V8: ta 3
55;V8: ld [%fp+56], {{.+}}
56;V8: ld [{{.+}}+56], {{.+}}
57;V8: ld [{{.+}}+60], {{.+}}
58
59;V9: retaddr2
60;V9: flushw
61;V9: ld [%fp+56], {{.+}}
62;V9: ld [{{.+}}+56], {{.+}}
63;V9: ld [{{.+}}+60], {{.+}}
Venkatraman Govindarajua0b34d62013-06-01 20:42:48 +000064
65;V8LEAF: retaddr2
66;V8LEAF: ta 3
67;V8LEAF: ld [%fp+56], %[[R:[goli][0-7]]]
68;V8LEAF: ld [%[[R]]+56], %[[R1:[goli][0-7]]]
69;V8LEAF: ld [%[[R1]]+60], {{.+}}
70
71;V9LEAF: retaddr2
72;V9LEAF: flushw
73;V9LEAF: ld [%fp+56], %[[R:[goli][0-7]]]
74;V9LEAF: ld [%[[R]]+56], %[[R1:[goli][0-7]]]
75;V9LEAF: ld [%[[R1]]+60], {{.+}}
76
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000077 %0 = tail call i8* @llvm.returnaddress(i32 3)
78 ret i8* %0
79}
80
81declare i8* @llvm.returnaddress(i32) nounwind readnone