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
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.
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) {
23 %0 = icmp sgt i32 %cond, 0
24 br i1 %0, label %if.1, label %end
27 %1 = icmp sgt i32 %cond, 10
28 br i1 %1, label %if.2, label %if.store.1
31 store i32 1, i32 addrspace(1)* %out
35 %2 = icmp sgt i32 %cond, 20
36 br i1 %2, label %if.3, label %if.2.store
39 store i32 2, i32 addrspace(1)* %out
43 store i32 3, i32 addrspace(1)* %out
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) {
56 %0 = icmp sgt i32 %cond, 0
57 br i1 %0, label %if.1, label %end
60 %1 = icmp sgt i32 %cond, 10
61 br i1 %1, label %if.2, label %if.1.store
64 store i32 1, i32 addrspace(1)* %out
68 %2 = icmp sgt i32 %cond, 20
69 br i1 %2, label %if.3, label %if.2.store
72 store i32 2, i32 addrspace(1)* %out
76 %3 = icmp sgt i32 %cond, 30
77 br i1 %3, label %if.4, label %if.3.store
80 store i32 3, i32 addrspace(1)* %out
84 store i32 4, i32 addrspace(1)* %out
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) {
97 %0 = icmp sgt i32 %cond, 0
98 br i1 %0, label %if.1, label %end
101 %1 = icmp sgt i32 %cond, 10
102 br i1 %1, label %if.2, label %if.1.store
105 store i32 1, i32 addrspace(1)* %out
109 %2 = icmp sgt i32 %cond, 20
110 br i1 %2, label %if.3, label %if.2.store
113 store i32 2, i32 addrspace(1)* %out
117 %3 = icmp sgt i32 %cond, 30
118 br i1 %3, label %if.4, label %if.3.store
121 store i32 3, i32 addrspace(1)* %out
125 %4 = icmp sgt i32 %cond, 40
126 br i1 %4, label %if.5, label %if.4.store
129 store i32 4, i32 addrspace(1)* %out
133 %5 = icmp sgt i32 %cond, 50
134 br i1 %5, label %if.6, label %if.5.store
137 store i32 5, i32 addrspace(1)* %out
141 %6 = icmp sgt i32 %cond, 60
142 br i1 %6, label %if.7, label %if.6.store
145 store i32 6, i32 addrspace(1)* %out
149 store i32 7, i32 addrspace(1)* %out
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) {
162 %0 = icmp sgt i32 %cond, 0
163 br i1 %0, label %if.1, label %end
166 %1 = icmp sgt i32 %cond, 10
167 br i1 %1, label %if.2, label %if.1.store
170 store i32 1, i32 addrspace(1)* %out
174 %2 = icmp sgt i32 %cond, 20
175 br i1 %2, label %if.3, label %if.2.store
178 store i32 2, i32 addrspace(1)* %out
182 %3 = icmp sgt i32 %cond, 30
183 br i1 %3, label %if.4, label %if.3.store
186 store i32 3, i32 addrspace(1)* %out
190 %4 = icmp sgt i32 %cond, 40
191 br i1 %4, label %if.5, label %if.4.store
194 store i32 4, i32 addrspace(1)* %out
198 %5 = icmp sgt i32 %cond, 50
199 br i1 %5, label %if.6, label %if.5.store
202 store i32 5, i32 addrspace(1)* %out
206 %6 = icmp sgt i32 %cond, 60
207 br i1 %6, label %if.7, label %if.6.store
210 store i32 6, i32 addrspace(1)* %out
214 %7 = icmp sgt i32 %cond, 70
215 br i1 %7, label %if.8, label %if.7.store
218 store i32 7, i32 addrspace(1)* %out
222 store i32 8, i32 addrspace(1)* %out