|
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 "^vec.epilog.scalar.ph:" |
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
|
@@ -81,17 +81,6 @@ define void @main_vf_vscale_x_16(ptr %A) #0 {
|
81 | 81 | ; CHECK-NEXT: [[CMP_N4:%.*]] = icmp eq i64 1024, [[N_VEC3]]
|
82 | 82 | ; CHECK-NEXT: br i1 [[CMP_N4]], label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
83 | 83 | ; CHECK: vec.epilog.scalar.ph:
|
84 |
| -; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC3]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
85 |
| -; CHECK-NEXT: br label [[FOR_BODY:%.*]] |
86 |
| -; CHECK: for.body: |
87 |
| -; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
88 |
| -; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i8, ptr [[A]], i64 [[IV]] |
89 |
| -; CHECK-NEXT: store i8 1, ptr [[ARRAYIDX]], align 1 |
90 |
| -; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
91 |
| -; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
92 |
| -; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP4:![0-9]+]] |
93 |
| -; CHECK: exit: |
94 |
| -; CHECK-NEXT: ret void |
95 | 84 | ;
|
96 | 85 | ; CHECK-VF8-LABEL: @main_vf_vscale_x_16(
|
97 | 86 | ; CHECK-VF8-NEXT: iter.check:
|
@@ -143,17 +132,6 @@ define void @main_vf_vscale_x_16(ptr %A) #0 {
|
143 | 132 | ; CHECK-VF8: vec.epilog.middle.block:
|
144 | 133 | ; CHECK-VF8-NEXT: br i1 true, label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
145 | 134 | ; CHECK-VF8: vec.epilog.scalar.ph:
|
146 |
| -; CHECK-VF8-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1024, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
147 |
| -; CHECK-VF8-NEXT: br label [[FOR_BODY:%.*]] |
148 |
| -; CHECK-VF8: for.body: |
149 |
| -; CHECK-VF8-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
150 |
| -; CHECK-VF8-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i8, ptr [[A]], i64 [[IV]] |
151 |
| -; CHECK-VF8-NEXT: store i8 1, ptr [[ARRAYIDX]], align 1 |
152 |
| -; CHECK-VF8-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
153 |
| -; CHECK-VF8-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
154 |
| -; CHECK-VF8-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP4:![0-9]+]] |
155 |
| -; CHECK-VF8: exit: |
156 |
| -; CHECK-VF8-NEXT: ret void |
157 | 135 | ;
|
158 | 136 | entry:
|
159 | 137 | br label %for.body
|
@@ -236,17 +214,6 @@ define void @main_vf_vscale_x_2(ptr %A) #0 vscale_range(8, 8) {
|
236 | 214 | ; CHECK: vec.epilog.middle.block:
|
237 | 215 | ; CHECK-NEXT: br i1 true, label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
238 | 216 | ; CHECK: vec.epilog.scalar.ph:
|
239 |
| -; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1024, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
240 |
| -; CHECK-NEXT: br label [[FOR_BODY:%.*]] |
241 |
| -; CHECK: for.body: |
242 |
| -; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
243 |
| -; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[IV]] |
244 |
| -; CHECK-NEXT: store i64 1, ptr [[ARRAYIDX]], align 1 |
245 |
| -; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
246 |
| -; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
247 |
| -; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP7:![0-9]+]] |
248 |
| -; CHECK: exit: |
249 |
| -; CHECK-NEXT: ret void |
250 | 217 | ;
|
251 | 218 | ; CHECK-VF8-LABEL: @main_vf_vscale_x_2(
|
252 | 219 | ; CHECK-VF8-NEXT: iter.check:
|
@@ -298,17 +265,6 @@ define void @main_vf_vscale_x_2(ptr %A) #0 vscale_range(8, 8) {
|
298 | 265 | ; CHECK-VF8: vec.epilog.middle.block:
|
299 | 266 | ; CHECK-VF8-NEXT: br i1 true, label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
300 | 267 | ; CHECK-VF8: vec.epilog.scalar.ph:
|
301 |
| -; CHECK-VF8-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1024, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
302 |
| -; CHECK-VF8-NEXT: br label [[FOR_BODY:%.*]] |
303 |
| -; CHECK-VF8: for.body: |
304 |
| -; CHECK-VF8-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
305 |
| -; CHECK-VF8-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[IV]] |
306 |
| -; CHECK-VF8-NEXT: store i64 1, ptr [[ARRAYIDX]], align 1 |
307 |
| -; CHECK-VF8-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
308 |
| -; CHECK-VF8-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
309 |
| -; CHECK-VF8-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP7:![0-9]+]] |
310 |
| -; CHECK-VF8: exit: |
311 |
| -; CHECK-VF8-NEXT: ret void |
312 | 268 | ;
|
313 | 269 | entry:
|
314 | 270 | br label %for.body
|
@@ -392,19 +348,6 @@ define void @test_pr57912_pointer_induction(ptr %start) #0 {
|
392 | 348 | ; CHECK-NEXT: [[CMP_N6:%.*]] = icmp eq i64 10000, [[N_VEC3]]
|
393 | 349 | ; CHECK-NEXT: br i1 [[CMP_N6]], label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
394 | 350 | ; CHECK: vec.epilog.scalar.ph:
|
395 |
| -; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC3]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
396 |
| -; CHECK-NEXT: [[BC_RESUME_VAL5:%.*]] = phi ptr [ [[IND_END]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END4]], [[VEC_EPILOG_ITER_CHECK]] ], [ [[START]], [[ITER_CHECK]] ] |
397 |
| -; CHECK-NEXT: br label [[LOOP:%.*]] |
398 |
| -; CHECK: loop: |
399 |
| -; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ] |
400 |
| -; CHECK-NEXT: [[PTR_IV:%.*]] = phi ptr [ [[BC_RESUME_VAL5]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[PTR_IV_NEXT:%.*]], [[LOOP]] ] |
401 |
| -; CHECK-NEXT: store i8 0, ptr [[PTR_IV]], align 1 |
402 |
| -; CHECK-NEXT: [[PTR_IV_NEXT]] = getelementptr inbounds i8, ptr [[PTR_IV]], i64 1 |
403 |
| -; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
404 |
| -; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[IV_NEXT]], 10000 |
405 |
| -; CHECK-NEXT: br i1 [[CMP]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP10:![0-9]+]] |
406 |
| -; CHECK: exit: |
407 |
| -; CHECK-NEXT: ret void |
408 | 351 | ;
|
409 | 352 | ; CHECK-VF8-LABEL: @test_pr57912_pointer_induction(
|
410 | 353 | ; CHECK-VF8-NEXT: iter.check:
|
@@ -458,19 +401,6 @@ define void @test_pr57912_pointer_induction(ptr %start) #0 {
|
458 | 401 | ; CHECK-VF8: vec.epilog.middle.block:
|
459 | 402 | ; CHECK-VF8-NEXT: br i1 true, label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
460 | 403 | ; CHECK-VF8: vec.epilog.scalar.ph:
|
461 |
| -; CHECK-VF8-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 10000, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
462 |
| -; CHECK-VF8-NEXT: [[BC_RESUME_VAL2:%.*]] = phi ptr [ [[IND_END]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END1]], [[VEC_EPILOG_ITER_CHECK]] ], [ [[START]], [[ITER_CHECK]] ] |
463 |
| -; CHECK-VF8-NEXT: br label [[LOOP:%.*]] |
464 |
| -; CHECK-VF8: loop: |
465 |
| -; CHECK-VF8-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ] |
466 |
| -; CHECK-VF8-NEXT: [[PTR_IV:%.*]] = phi ptr [ [[BC_RESUME_VAL2]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[PTR_IV_NEXT:%.*]], [[LOOP]] ] |
467 |
| -; CHECK-VF8-NEXT: store i8 0, ptr [[PTR_IV]], align 1 |
468 |
| -; CHECK-VF8-NEXT: [[PTR_IV_NEXT]] = getelementptr inbounds i8, ptr [[PTR_IV]], i64 1 |
469 |
| -; CHECK-VF8-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
470 |
| -; CHECK-VF8-NEXT: [[CMP:%.*]] = icmp eq i64 [[IV_NEXT]], 10000 |
471 |
| -; CHECK-VF8-NEXT: br i1 [[CMP]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP10:![0-9]+]] |
472 |
| -; CHECK-VF8: exit: |
473 |
| -; CHECK-VF8-NEXT: ret void |
474 | 404 | ;
|
475 | 405 | entry:
|
476 | 406 | br label %loop
|
|
0 commit comments