|
1 |
| -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --filter-out-after "^for.body:" --filter-out-after "^loop:" |
2 | 2 | ; REQUIRES: asserts
|
3 | 3 | ; RUN: opt < %s -passes=loop-vectorize -force-vector-interleave=2 -epilogue-vectorization-minimum-VF=0 -prefer-predicate-over-epilogue=scalar-epilogue \
|
4 | 4 | ; RUN: -debug-only=loop-vectorize -force-target-instruction-cost=1 -S 2>%t | FileCheck %s --check-prefix=CHECK
|
@@ -83,14 +83,6 @@ define void @main_vf_vscale_x_16(ptr %A) #0 {
|
83 | 83 | ; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC3]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ]
|
84 | 84 | ; CHECK-NEXT: br label [[FOR_BODY:%.*]]
|
85 | 85 | ; CHECK: for.body:
|
86 |
| -; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
87 |
| -; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i8, ptr [[A]], i64 [[IV]] |
88 |
| -; CHECK-NEXT: store i8 1, ptr [[ARRAYIDX]], align 1 |
89 |
| -; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
90 |
| -; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
91 |
| -; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP4:![0-9]+]] |
92 |
| -; CHECK: exit: |
93 |
| -; CHECK-NEXT: ret void |
94 | 86 | ;
|
95 | 87 | ; CHECK-VF8-LABEL: @main_vf_vscale_x_16(
|
96 | 88 | ; CHECK-VF8-NEXT: iter.check:
|
@@ -144,14 +136,6 @@ define void @main_vf_vscale_x_16(ptr %A) #0 {
|
144 | 136 | ; CHECK-VF8-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1024, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ]
|
145 | 137 | ; CHECK-VF8-NEXT: br label [[FOR_BODY:%.*]]
|
146 | 138 | ; CHECK-VF8: for.body:
|
147 |
| -; CHECK-VF8-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
148 |
| -; CHECK-VF8-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i8, ptr [[A]], i64 [[IV]] |
149 |
| -; CHECK-VF8-NEXT: store i8 1, ptr [[ARRAYIDX]], align 1 |
150 |
| -; CHECK-VF8-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
151 |
| -; CHECK-VF8-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
152 |
| -; CHECK-VF8-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP4:![0-9]+]] |
153 |
| -; CHECK-VF8: exit: |
154 |
| -; CHECK-VF8-NEXT: ret void |
155 | 139 | ;
|
156 | 140 | entry:
|
157 | 141 | br label %for.body
|
@@ -236,14 +220,6 @@ define void @main_vf_vscale_x_2(ptr %A) #0 vscale_range(8, 8) {
|
236 | 220 | ; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1024, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ]
|
237 | 221 | ; CHECK-NEXT: br label [[FOR_BODY:%.*]]
|
238 | 222 | ; CHECK: for.body:
|
239 |
| -; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
240 |
| -; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[IV]] |
241 |
| -; CHECK-NEXT: store i64 1, ptr [[ARRAYIDX]], align 1 |
242 |
| -; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
243 |
| -; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
244 |
| -; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP7:![0-9]+]] |
245 |
| -; CHECK: exit: |
246 |
| -; CHECK-NEXT: ret void |
247 | 223 | ;
|
248 | 224 | ; CHECK-VF8-LABEL: @main_vf_vscale_x_2(
|
249 | 225 | ; CHECK-VF8-NEXT: iter.check:
|
@@ -297,14 +273,6 @@ define void @main_vf_vscale_x_2(ptr %A) #0 vscale_range(8, 8) {
|
297 | 273 | ; CHECK-VF8-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1024, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ]
|
298 | 274 | ; CHECK-VF8-NEXT: br label [[FOR_BODY:%.*]]
|
299 | 275 | ; CHECK-VF8: for.body:
|
300 |
| -; CHECK-VF8-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
301 |
| -; CHECK-VF8-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[IV]] |
302 |
| -; CHECK-VF8-NEXT: store i64 1, ptr [[ARRAYIDX]], align 1 |
303 |
| -; CHECK-VF8-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
304 |
| -; CHECK-VF8-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
305 |
| -; CHECK-VF8-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP7:![0-9]+]] |
306 |
| -; CHECK-VF8: exit: |
307 |
| -; CHECK-VF8-NEXT: ret void |
308 | 276 | ;
|
309 | 277 | entry:
|
310 | 278 | br label %for.body
|
@@ -391,15 +359,6 @@ define void @test_pr57912_pointer_induction(ptr %start) #0 {
|
391 | 359 | ; CHECK-NEXT: [[BC_RESUME_VAL5:%.*]] = phi ptr [ [[IND_END]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END4]], [[VEC_EPILOG_ITER_CHECK]] ], [ [[START]], [[ITER_CHECK]] ]
|
392 | 360 | ; CHECK-NEXT: br label [[LOOP:%.*]]
|
393 | 361 | ; CHECK: loop:
|
394 |
| -; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ] |
395 |
| -; CHECK-NEXT: [[PTR_IV:%.*]] = phi ptr [ [[BC_RESUME_VAL5]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[PTR_IV_NEXT:%.*]], [[LOOP]] ] |
396 |
| -; CHECK-NEXT: store i8 0, ptr [[PTR_IV]], align 1 |
397 |
| -; CHECK-NEXT: [[PTR_IV_NEXT]] = getelementptr inbounds i8, ptr [[PTR_IV]], i64 1 |
398 |
| -; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
399 |
| -; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[IV_NEXT]], 10000 |
400 |
| -; CHECK-NEXT: br i1 [[CMP]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP10:![0-9]+]] |
401 |
| -; CHECK: exit: |
402 |
| -; CHECK-NEXT: ret void |
403 | 362 | ;
|
404 | 363 | ; CHECK-VF8-LABEL: @test_pr57912_pointer_induction(
|
405 | 364 | ; CHECK-VF8-NEXT: iter.check:
|
@@ -456,15 +415,6 @@ define void @test_pr57912_pointer_induction(ptr %start) #0 {
|
456 | 415 | ; CHECK-VF8-NEXT: [[BC_RESUME_VAL2:%.*]] = phi ptr [ [[IND_END]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END1]], [[VEC_EPILOG_ITER_CHECK]] ], [ [[START]], [[ITER_CHECK]] ]
|
457 | 416 | ; CHECK-VF8-NEXT: br label [[LOOP:%.*]]
|
458 | 417 | ; CHECK-VF8: loop:
|
459 |
| -; CHECK-VF8-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ] |
460 |
| -; CHECK-VF8-NEXT: [[PTR_IV:%.*]] = phi ptr [ [[BC_RESUME_VAL2]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[PTR_IV_NEXT:%.*]], [[LOOP]] ] |
461 |
| -; CHECK-VF8-NEXT: store i8 0, ptr [[PTR_IV]], align 1 |
462 |
| -; CHECK-VF8-NEXT: [[PTR_IV_NEXT]] = getelementptr inbounds i8, ptr [[PTR_IV]], i64 1 |
463 |
| -; CHECK-VF8-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
464 |
| -; CHECK-VF8-NEXT: [[CMP:%.*]] = icmp eq i64 [[IV_NEXT]], 10000 |
465 |
| -; CHECK-VF8-NEXT: br i1 [[CMP]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP10:![0-9]+]] |
466 |
| -; CHECK-VF8: exit: |
467 |
| -; CHECK-VF8-NEXT: ret void |
468 | 418 | ;
|
469 | 419 | entry:
|
470 | 420 | br label %loop
|
|
0 commit comments