R600/SI: Change how DS offsets are printed
[oota-llvm.git] / test / CodeGen / R600 / cf-stack-bug.ll
1 ; RUN: llc -march=r600 -mcpu=redwood -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG64 --check-prefix=FUNC
2 ; RUN: llc -march=r600 -mcpu=sumo -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG64 --check-prefix=FUNC
3 ; RUN: llc -march=r600 -mcpu=barts -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG64 --check-prefix=FUNC
4 ; RUN: llc -march=r600 -mcpu=turks -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG64 --check-prefix=FUNC
5 ; RUN: llc -march=r600 -mcpu=caicos -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG64 --check-prefix=FUNC
6 ; RUN: llc -march=r600 -mcpu=cedar -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG32 --check-prefix=FUNC
7 ; RUN: llc -march=r600 -mcpu=juniper -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=NOBUG --check-prefix=FUNC
8 ; RUN: llc -march=r600 -mcpu=cypress -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=NOBUG --check-prefix=FUNC
9 ; RUN: llc -march=r600 -mcpu=cayman -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=NOBUG --check-prefix=FUNC
10
11 ; REQUIRES: asserts
12
13 ; We are currently allocating 2 extra sub-entries on Evergreen / NI for
14 ; non-WQM push instructions if we change this to 1, then we will need to
15 ; add one level of depth to each of these tests.
16
17 ; BUG64-NOT: Applying bug work-around
18 ; BUG32-NOT: Applying bug work-around
19 ; NOBUG-NOT: Applying bug work-around
20 ; FUNC-LABEL: {{^}}nested3:
21 define void @nested3(i32 addrspace(1)* %out, i32 %cond) {
22 entry:
23   %0 = icmp sgt i32 %cond, 0
24   br i1 %0, label %if.1, label %end
25
26 if.1:
27   %1 = icmp sgt i32 %cond, 10
28   br i1 %1, label %if.2, label %if.store.1
29
30 if.store.1:
31   store i32 1, i32 addrspace(1)* %out
32   br label %end
33
34 if.2:
35   %2 = icmp sgt i32 %cond, 20
36   br i1 %2, label %if.3, label %if.2.store
37
38 if.2.store:
39   store i32 2, i32 addrspace(1)* %out
40   br label %end
41
42 if.3:
43   store i32 3, i32 addrspace(1)* %out
44   br label %end
45
46 end:
47   ret void
48 }
49
50 ; BUG64: Applying bug work-around
51 ; BUG32-NOT: Applying bug work-around
52 ; NOBUG-NOT: Applying bug work-around
53 ; FUNC-LABEL: {{^}}nested4:
54 define void @nested4(i32 addrspace(1)* %out, i32 %cond) {
55 entry:
56   %0 = icmp sgt i32 %cond, 0
57   br i1 %0, label %if.1, label %end
58
59 if.1:
60   %1 = icmp sgt i32 %cond, 10
61   br i1 %1, label %if.2, label %if.1.store
62
63 if.1.store:
64   store i32 1, i32 addrspace(1)* %out
65   br label %end
66
67 if.2:
68   %2 = icmp sgt i32 %cond, 20
69   br i1 %2, label %if.3, label %if.2.store
70
71 if.2.store:
72   store i32 2, i32 addrspace(1)* %out
73   br label %end
74
75 if.3:
76   %3 = icmp sgt i32 %cond, 30
77   br i1 %3, label %if.4, label %if.3.store
78
79 if.3.store:
80   store i32 3, i32 addrspace(1)* %out
81   br label %end
82
83 if.4:
84   store i32 4, i32 addrspace(1)* %out
85   br label %end
86
87 end:
88   ret void
89 }
90
91 ; BUG64: Applying bug work-around
92 ; BUG32-NOT: Applying bug work-around
93 ; NOBUG-NOT: Applying bug work-around
94 ; FUNC-LABEL: {{^}}nested7:
95 define void @nested7(i32 addrspace(1)* %out, i32 %cond) {
96 entry:
97   %0 = icmp sgt i32 %cond, 0
98   br i1 %0, label %if.1, label %end
99
100 if.1:
101   %1 = icmp sgt i32 %cond, 10
102   br i1 %1, label %if.2, label %if.1.store
103
104 if.1.store:
105   store i32 1, i32 addrspace(1)* %out
106   br label %end
107
108 if.2:
109   %2 = icmp sgt i32 %cond, 20
110   br i1 %2, label %if.3, label %if.2.store
111
112 if.2.store:
113   store i32 2, i32 addrspace(1)* %out
114   br label %end
115
116 if.3:
117   %3 = icmp sgt i32 %cond, 30
118   br i1 %3, label %if.4, label %if.3.store
119
120 if.3.store:
121   store i32 3, i32 addrspace(1)* %out
122   br label %end
123
124 if.4:
125   %4 = icmp sgt i32 %cond, 40
126   br i1 %4, label %if.5, label %if.4.store
127
128 if.4.store:
129   store i32 4, i32 addrspace(1)* %out
130   br label %end
131
132 if.5:
133   %5 = icmp sgt i32 %cond, 50
134   br i1 %5, label %if.6, label %if.5.store
135
136 if.5.store:
137   store i32 5, i32 addrspace(1)* %out
138   br label %end
139
140 if.6:
141   %6 = icmp sgt i32 %cond, 60
142   br i1 %6, label %if.7, label %if.6.store
143
144 if.6.store:
145   store i32 6, i32 addrspace(1)* %out
146   br label %end
147
148 if.7:
149   store i32 7, i32 addrspace(1)* %out
150   br label %end
151
152 end:
153   ret void
154 }
155
156 ; BUG64: Applying bug work-around
157 ; BUG32: Applying bug work-around
158 ; NOBUG-NOT: Applying bug work-around
159 ; FUNC-LABEL: {{^}}nested8:
160 define void @nested8(i32 addrspace(1)* %out, i32 %cond) {
161 entry:
162   %0 = icmp sgt i32 %cond, 0
163   br i1 %0, label %if.1, label %end
164
165 if.1:
166   %1 = icmp sgt i32 %cond, 10
167   br i1 %1, label %if.2, label %if.1.store
168
169 if.1.store:
170   store i32 1, i32 addrspace(1)* %out
171   br label %end
172
173 if.2:
174   %2 = icmp sgt i32 %cond, 20
175   br i1 %2, label %if.3, label %if.2.store
176
177 if.2.store:
178   store i32 2, i32 addrspace(1)* %out
179   br label %end
180
181 if.3:
182   %3 = icmp sgt i32 %cond, 30
183   br i1 %3, label %if.4, label %if.3.store
184
185 if.3.store:
186   store i32 3, i32 addrspace(1)* %out
187   br label %end
188
189 if.4:
190   %4 = icmp sgt i32 %cond, 40
191   br i1 %4, label %if.5, label %if.4.store
192
193 if.4.store:
194   store i32 4, i32 addrspace(1)* %out
195   br label %end
196
197 if.5:
198   %5 = icmp sgt i32 %cond, 50
199   br i1 %5, label %if.6, label %if.5.store
200
201 if.5.store:
202   store i32 5, i32 addrspace(1)* %out
203   br label %end
204
205 if.6:
206   %6 = icmp sgt i32 %cond, 60
207   br i1 %6, label %if.7, label %if.6.store
208
209 if.6.store:
210   store i32 6, i32 addrspace(1)* %out
211   br label %end
212
213 if.7:
214   %7 = icmp sgt i32 %cond, 70
215   br i1 %7, label %if.8, label %if.7.store
216
217 if.7.store:
218   store i32 7, i32 addrspace(1)* %out
219   br label %end
220
221 if.8:
222   store i32 8, i32 addrspace(1)* %out
223   br label %end
224
225 end:
226   ret void
227 }