blob: 6516b2d19e7d2ee733509c6ff127cc288f05edef [file] [log] [blame]
Jakob Stoklund Olesena6f74992011-03-31 18:42:43 +00001;RUN: llc -march=sparc -regalloc=linearscan < %s | FileCheck %s -check-prefix=V8
2;RUN: llc -march=sparc -regalloc=linearscan -mattr=v9 < %s | FileCheck %s -check-prefix=V9
3
4; These tests depend on linear scan's trivial coalescer for reserved registers.
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +00005
6define i8* @frameaddr() nounwind readnone {
7entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +00008;V8: frameaddr
9;V8: or %g0, %fp, {{.+}}
10
11;V9: frameaddr
12;V9: or %g0, %fp, {{.+}}
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000013 %0 = tail call i8* @llvm.frameaddress(i32 0)
14 ret i8* %0
15}
16
17define i8* @frameaddr2() nounwind readnone {
18entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +000019;V8: frameaddr2
20;V8: ta 3
21;V8: ld [%fp+56], {{.+}}
22;V8: ld [{{.+}}+56], {{.+}}
23;V8: ld [{{.+}}+56], {{.+}}
24
25;V9: frameaddr2
26;V9: flushw
27;V9: ld [%fp+56], {{.+}}
28;V9: ld [{{.+}}+56], {{.+}}
29;V9: ld [{{.+}}+56], {{.+}}
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000030 %0 = tail call i8* @llvm.frameaddress(i32 3)
31 ret i8* %0
32}
33
34declare i8* @llvm.frameaddress(i32) nounwind readnone
35
36
37
38define i8* @retaddr() nounwind readnone {
39entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +000040;V8: retaddr
41;V8: or %g0, %i7, {{.+}}
42
43;V9: retaddr
44;V9: or %g0, %i7, {{.+}}
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000045 %0 = tail call i8* @llvm.returnaddress(i32 0)
46 ret i8* %0
47}
48
49define i8* @retaddr2() nounwind readnone {
50entry:
Venkatraman Govindarajufc3faa72011-01-21 22:00:00 +000051;V8: retaddr2
52;V8: ta 3
53;V8: ld [%fp+56], {{.+}}
54;V8: ld [{{.+}}+56], {{.+}}
55;V8: ld [{{.+}}+60], {{.+}}
56
57;V9: retaddr2
58;V9: flushw
59;V9: ld [%fp+56], {{.+}}
60;V9: ld [{{.+}}+56], {{.+}}
61;V9: ld [{{.+}}+60], {{.+}}
Venkatraman Govindaraju860b64c2011-01-12 05:08:36 +000062 %0 = tail call i8* @llvm.returnaddress(i32 3)
63 ret i8* %0
64}
65
66declare i8* @llvm.returnaddress(i32) nounwind readnone