|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
|
2 | 2 | ; RUN: opt -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -amdgpu-enable-uniform-intrinsic-combine=0 -O3 -S < %s | FileCheck %s -check-prefix=CURRENT-CHECK
|
3 | 3 | ; RUN: opt -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -passes=amdgpu-uniform-intrinsic-combine -S < %s | FileCheck %s -check-prefix=PASS-CHECK
|
4 |
| -; RUN: opt -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -passes=amdgpu-uniform-intrinsic-combine,early-cse,instcombine,simplifycfg -S < %s | FileCheck %s -check-prefix=DCE-CHECK |
| 4 | +; RUN: opt -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -O3 -S < %s | FileCheck %s -check-prefix=O3-CHECK |
5 | 5 |
|
6 | 6 | define protected amdgpu_kernel void @trivial_waterfall_eq_zero(ptr addrspace(1) %out) {
|
7 | 7 | ; CURRENT-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_eq_zero(
|
@@ -31,18 +31,11 @@ define protected amdgpu_kernel void @trivial_waterfall_eq_zero(ptr addrspace(1)
|
31 | 31 | ; PASS-CHECK: [[EXIT]]:
|
32 | 32 | ; PASS-CHECK-NEXT: ret void
|
33 | 33 | ;
|
34 |
| -; DCE-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_eq_zero( |
35 |
| -; DCE-CHECK-SAME: ptr addrspace(1) [[OUT:%.*]]) #[[ATTR0:[0-9]+]] { |
36 |
| -; DCE-CHECK-NEXT: [[ENTRY:.*]]: |
37 |
| -; DCE-CHECK-NEXT: br label %[[WHILE:.*]] |
38 |
| -; DCE-CHECK: [[WHILE]]: |
39 |
| -; DCE-CHECK-NEXT: [[DONE:%.*]] = phi i1 [ false, %[[ENTRY]] ], [ true, %[[IF:.*]] ] |
40 |
| -; DCE-CHECK-NEXT: br i1 [[DONE]], label %[[EXIT:.*]], label %[[IF]] |
41 |
| -; DCE-CHECK: [[IF]]: |
42 |
| -; DCE-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
43 |
| -; DCE-CHECK-NEXT: br label %[[WHILE]] |
44 |
| -; DCE-CHECK: [[EXIT]]: |
45 |
| -; DCE-CHECK-NEXT: ret void |
| 34 | +; O3-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_eq_zero( |
| 35 | +; O3-CHECK-SAME: ptr addrspace(1) writeonly captures(none) initializes((0, 4)) [[OUT:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] { |
| 36 | +; O3-CHECK-NEXT: [[ENTRY:.*:]] |
| 37 | +; O3-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
| 38 | +; O3-CHECK-NEXT: ret void |
46 | 39 | ;
|
47 | 40 | entry:
|
48 | 41 | br label %while
|
@@ -90,18 +83,11 @@ define protected amdgpu_kernel void @trivial_waterfall_eq_zero_swap_op(ptr addrs
|
90 | 83 | ; PASS-CHECK: [[EXIT]]:
|
91 | 84 | ; PASS-CHECK-NEXT: ret void
|
92 | 85 | ;
|
93 |
| -; DCE-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_eq_zero_swap_op( |
94 |
| -; DCE-CHECK-SAME: ptr addrspace(1) [[OUT:%.*]]) #[[ATTR0]] { |
95 |
| -; DCE-CHECK-NEXT: [[ENTRY:.*]]: |
96 |
| -; DCE-CHECK-NEXT: br label %[[WHILE:.*]] |
97 |
| -; DCE-CHECK: [[WHILE]]: |
98 |
| -; DCE-CHECK-NEXT: [[DONE:%.*]] = phi i1 [ false, %[[ENTRY]] ], [ true, %[[IF:.*]] ] |
99 |
| -; DCE-CHECK-NEXT: br i1 [[DONE]], label %[[EXIT:.*]], label %[[IF]] |
100 |
| -; DCE-CHECK: [[IF]]: |
101 |
| -; DCE-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
102 |
| -; DCE-CHECK-NEXT: br label %[[WHILE]] |
103 |
| -; DCE-CHECK: [[EXIT]]: |
104 |
| -; DCE-CHECK-NEXT: ret void |
| 86 | +; O3-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_eq_zero_swap_op( |
| 87 | +; O3-CHECK-SAME: ptr addrspace(1) writeonly captures(none) initializes((0, 4)) [[OUT:%.*]]) local_unnamed_addr #[[ATTR0]] { |
| 88 | +; O3-CHECK-NEXT: [[ENTRY:.*:]] |
| 89 | +; O3-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
| 90 | +; O3-CHECK-NEXT: ret void |
105 | 91 | ;
|
106 | 92 | entry:
|
107 | 93 | br label %while
|
@@ -147,18 +133,11 @@ define protected amdgpu_kernel void @trivial_waterfall_ne_zero(ptr addrspace(1)
|
147 | 133 | ; PASS-CHECK: [[EXIT]]:
|
148 | 134 | ; PASS-CHECK-NEXT: ret void
|
149 | 135 | ;
|
150 |
| -; DCE-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_ne_zero( |
151 |
| -; DCE-CHECK-SAME: ptr addrspace(1) [[OUT:%.*]]) #[[ATTR0]] { |
152 |
| -; DCE-CHECK-NEXT: [[ENTRY:.*]]: |
153 |
| -; DCE-CHECK-NEXT: br label %[[WHILE:.*]] |
154 |
| -; DCE-CHECK: [[WHILE]]: |
155 |
| -; DCE-CHECK-NEXT: [[DONE:%.*]] = phi i1 [ false, %[[ENTRY]] ], [ true, %[[IF:.*]] ] |
156 |
| -; DCE-CHECK-NEXT: br i1 [[DONE]], label %[[EXIT:.*]], label %[[IF]] |
157 |
| -; DCE-CHECK: [[IF]]: |
158 |
| -; DCE-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
159 |
| -; DCE-CHECK-NEXT: br label %[[WHILE]] |
160 |
| -; DCE-CHECK: [[EXIT]]: |
161 |
| -; DCE-CHECK-NEXT: ret void |
| 136 | +; O3-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_ne_zero( |
| 137 | +; O3-CHECK-SAME: ptr addrspace(1) writeonly captures(none) initializes((0, 4)) [[OUT:%.*]]) local_unnamed_addr #[[ATTR0]] { |
| 138 | +; O3-CHECK-NEXT: [[ENTRY:.*:]] |
| 139 | +; O3-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
| 140 | +; O3-CHECK-NEXT: ret void |
162 | 141 | ;
|
163 | 142 | entry:
|
164 | 143 | br label %while
|
@@ -203,18 +182,11 @@ define protected amdgpu_kernel void @trivial_waterfall_ne_zero_swap(ptr addrspac
|
203 | 182 | ; PASS-CHECK: [[EXIT]]:
|
204 | 183 | ; PASS-CHECK-NEXT: ret void
|
205 | 184 | ;
|
206 |
| -; DCE-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_ne_zero_swap( |
207 |
| -; DCE-CHECK-SAME: ptr addrspace(1) [[OUT:%.*]]) #[[ATTR0]] { |
208 |
| -; DCE-CHECK-NEXT: [[ENTRY:.*]]: |
209 |
| -; DCE-CHECK-NEXT: br label %[[WHILE:.*]] |
210 |
| -; DCE-CHECK: [[WHILE]]: |
211 |
| -; DCE-CHECK-NEXT: [[DONE:%.*]] = phi i1 [ false, %[[ENTRY]] ], [ true, %[[IF:.*]] ] |
212 |
| -; DCE-CHECK-NEXT: br i1 [[DONE]], label %[[EXIT:.*]], label %[[IF]] |
213 |
| -; DCE-CHECK: [[IF]]: |
214 |
| -; DCE-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
215 |
| -; DCE-CHECK-NEXT: br label %[[WHILE]] |
216 |
| -; DCE-CHECK: [[EXIT]]: |
217 |
| -; DCE-CHECK-NEXT: ret void |
| 185 | +; O3-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_ne_zero_swap( |
| 186 | +; O3-CHECK-SAME: ptr addrspace(1) writeonly captures(none) initializes((0, 4)) [[OUT:%.*]]) local_unnamed_addr #[[ATTR0]] { |
| 187 | +; O3-CHECK-NEXT: [[ENTRY:.*:]] |
| 188 | +; O3-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
| 189 | +; O3-CHECK-NEXT: ret void |
218 | 190 | ;
|
219 | 191 | entry:
|
220 | 192 | br label %while
|
@@ -267,18 +239,11 @@ define protected amdgpu_kernel void @trivial_uniform_waterfall(ptr addrspace(1)
|
267 | 239 | ; PASS-CHECK: [[EXIT]]:
|
268 | 240 | ; PASS-CHECK-NEXT: ret void
|
269 | 241 | ;
|
270 |
| -; DCE-CHECK-LABEL: define protected amdgpu_kernel void @trivial_uniform_waterfall( |
271 |
| -; DCE-CHECK-SAME: ptr addrspace(1) [[OUT:%.*]]) #[[ATTR0]] { |
272 |
| -; DCE-CHECK-NEXT: [[ENTRY:.*]]: |
273 |
| -; DCE-CHECK-NEXT: br label %[[WHILE:.*]] |
274 |
| -; DCE-CHECK: [[WHILE]]: |
275 |
| -; DCE-CHECK-NEXT: [[DONE:%.*]] = phi i1 [ false, %[[ENTRY]] ], [ true, %[[WORK:.*]] ] |
276 |
| -; DCE-CHECK-NEXT: br i1 [[DONE]], label %[[EXIT:.*]], label %[[WORK]] |
277 |
| -; DCE-CHECK: [[WORK]]: |
278 |
| -; DCE-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
279 |
| -; DCE-CHECK-NEXT: br label %[[WHILE]] |
280 |
| -; DCE-CHECK: [[EXIT]]: |
281 |
| -; DCE-CHECK-NEXT: ret void |
| 242 | +; O3-CHECK-LABEL: define protected amdgpu_kernel void @trivial_uniform_waterfall( |
| 243 | +; O3-CHECK-SAME: ptr addrspace(1) writeonly captures(none) initializes((0, 4)) [[OUT:%.*]]) local_unnamed_addr #[[ATTR0]] { |
| 244 | +; O3-CHECK-NEXT: [[ENTRY:.*:]] |
| 245 | +; O3-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
| 246 | +; O3-CHECK-NEXT: ret void |
282 | 247 | ;
|
283 | 248 | entry:
|
284 | 249 | br label %while
|
@@ -312,8 +277,8 @@ define protected amdgpu_kernel void @uniform_waterfall(ptr addrspace(1) %out, i3
|
312 | 277 | ; CURRENT-CHECK-SAME: ptr addrspace(1) writeonly captures(none) [[OUT:%.*]], i32 [[MYMASK:%.*]]) local_unnamed_addr #[[ATTR0]] {
|
313 | 278 | ; CURRENT-CHECK-NEXT: [[ENTRY:.*:]]
|
314 | 279 | ; CURRENT-CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.amdgcn.ballot.i32(i1 true)
|
315 |
| -; CURRENT-CHECK-NEXT: [[IS_DONE:%.*]] = icmp eq i32 [[TMP0]], 0 |
316 |
| -; CURRENT-CHECK-NEXT: br i1 [[IS_DONE]], label %[[EXIT:.*]], label %[[WORK_PEEL:.*]] |
| 280 | +; CURRENT-CHECK-NEXT: [[IS_DONE_PEEL:%.*]] = icmp eq i32 [[TMP0]], 0 |
| 281 | +; CURRENT-CHECK-NEXT: br i1 [[IS_DONE_PEEL]], label %[[EXIT:.*]], label %[[WORK_PEEL:.*]] |
317 | 282 | ; CURRENT-CHECK: [[WORK_PEEL]]:
|
318 | 283 | ; CURRENT-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4
|
319 | 284 | ; CURRENT-CHECK-NEXT: br label %[[EXIT]]
|
@@ -341,18 +306,11 @@ define protected amdgpu_kernel void @uniform_waterfall(ptr addrspace(1) %out, i3
|
341 | 306 | ; PASS-CHECK: [[EXIT]]:
|
342 | 307 | ; PASS-CHECK-NEXT: ret void
|
343 | 308 | ;
|
344 |
| -; DCE-CHECK-LABEL: define protected amdgpu_kernel void @uniform_waterfall( |
345 |
| -; DCE-CHECK-SAME: ptr addrspace(1) [[OUT:%.*]], i32 [[MYMASK:%.*]]) #[[ATTR0]] { |
346 |
| -; DCE-CHECK-NEXT: [[ENTRY:.*]]: |
347 |
| -; DCE-CHECK-NEXT: br label %[[WHILE:.*]] |
348 |
| -; DCE-CHECK: [[WHILE]]: |
349 |
| -; DCE-CHECK-NEXT: [[DONE:%.*]] = phi i1 [ false, %[[ENTRY]] ], [ true, %[[WORK:.*]] ] |
350 |
| -; DCE-CHECK-NEXT: br i1 [[DONE]], label %[[EXIT:.*]], label %[[WORK]] |
351 |
| -; DCE-CHECK: [[WORK]]: |
352 |
| -; DCE-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
353 |
| -; DCE-CHECK-NEXT: br label %[[WHILE]] |
354 |
| -; DCE-CHECK: [[EXIT]]: |
355 |
| -; DCE-CHECK-NEXT: ret void |
| 309 | +; O3-CHECK-LABEL: define protected amdgpu_kernel void @uniform_waterfall( |
| 310 | +; O3-CHECK-SAME: ptr addrspace(1) writeonly captures(none) initializes((0, 4)) [[OUT:%.*]], i32 [[MYMASK:%.*]]) local_unnamed_addr #[[ATTR0]] { |
| 311 | +; O3-CHECK-NEXT: [[ENTRY:.*:]] |
| 312 | +; O3-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
| 313 | +; O3-CHECK-NEXT: ret void |
356 | 314 | ;
|
357 | 315 | entry:
|
358 | 316 | br label %while
|
@@ -409,18 +367,11 @@ define protected amdgpu_kernel void @trivial_waterfall_eq_zero_i32(ptr addrspace
|
409 | 367 | ; PASS-CHECK: [[EXIT]]:
|
410 | 368 | ; PASS-CHECK-NEXT: ret void
|
411 | 369 | ;
|
412 |
| -; DCE-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_eq_zero_i32( |
413 |
| -; DCE-CHECK-SAME: ptr addrspace(1) [[OUT:%.*]]) #[[ATTR0]] { |
414 |
| -; DCE-CHECK-NEXT: [[ENTRY:.*]]: |
415 |
| -; DCE-CHECK-NEXT: br label %[[WHILE:.*]] |
416 |
| -; DCE-CHECK: [[WHILE]]: |
417 |
| -; DCE-CHECK-NEXT: [[DONE:%.*]] = phi i1 [ false, %[[ENTRY]] ], [ true, %[[IF:.*]] ] |
418 |
| -; DCE-CHECK-NEXT: br i1 [[DONE]], label %[[EXIT:.*]], label %[[IF]] |
419 |
| -; DCE-CHECK: [[IF]]: |
420 |
| -; DCE-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
421 |
| -; DCE-CHECK-NEXT: br label %[[WHILE]] |
422 |
| -; DCE-CHECK: [[EXIT]]: |
423 |
| -; DCE-CHECK-NEXT: ret void |
| 370 | +; O3-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_eq_zero_i32( |
| 371 | +; O3-CHECK-SAME: ptr addrspace(1) writeonly captures(none) initializes((0, 4)) [[OUT:%.*]]) local_unnamed_addr #[[ATTR0]] { |
| 372 | +; O3-CHECK-NEXT: [[ENTRY:.*:]] |
| 373 | +; O3-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
| 374 | +; O3-CHECK-NEXT: ret void |
424 | 375 | ;
|
425 | 376 | entry:
|
426 | 377 | br label %while
|
@@ -466,18 +417,11 @@ define protected amdgpu_kernel void @trivial_waterfall_ne_zero_i32(ptr addrspace
|
466 | 417 | ; PASS-CHECK: [[EXIT]]:
|
467 | 418 | ; PASS-CHECK-NEXT: ret void
|
468 | 419 | ;
|
469 |
| -; DCE-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_ne_zero_i32( |
470 |
| -; DCE-CHECK-SAME: ptr addrspace(1) [[OUT:%.*]]) #[[ATTR0]] { |
471 |
| -; DCE-CHECK-NEXT: [[ENTRY:.*]]: |
472 |
| -; DCE-CHECK-NEXT: br label %[[WHILE:.*]] |
473 |
| -; DCE-CHECK: [[WHILE]]: |
474 |
| -; DCE-CHECK-NEXT: [[DONE:%.*]] = phi i1 [ false, %[[ENTRY]] ], [ true, %[[IF:.*]] ] |
475 |
| -; DCE-CHECK-NEXT: br i1 [[DONE]], label %[[EXIT:.*]], label %[[IF]] |
476 |
| -; DCE-CHECK: [[IF]]: |
477 |
| -; DCE-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
478 |
| -; DCE-CHECK-NEXT: br label %[[WHILE]] |
479 |
| -; DCE-CHECK: [[EXIT]]: |
480 |
| -; DCE-CHECK-NEXT: ret void |
| 420 | +; O3-CHECK-LABEL: define protected amdgpu_kernel void @trivial_waterfall_ne_zero_i32( |
| 421 | +; O3-CHECK-SAME: ptr addrspace(1) writeonly captures(none) initializes((0, 4)) [[OUT:%.*]]) local_unnamed_addr #[[ATTR0]] { |
| 422 | +; O3-CHECK-NEXT: [[ENTRY:.*:]] |
| 423 | +; O3-CHECK-NEXT: store i32 5, ptr addrspace(1) [[OUT]], align 4 |
| 424 | +; O3-CHECK-NEXT: ret void |
481 | 425 | ;
|
482 | 426 | entry:
|
483 | 427 | br label %while
|
|
0 commit comments