|
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
|
@@ -82,17 +82,6 @@ define void @main_vf_vscale_x_16(ptr %A) #0 {
|
82 | 82 | ; CHECK-NEXT: [[CMP_N4:%.*]] = icmp eq i64 1024, [[N_VEC3]]
|
83 | 83 | ; CHECK-NEXT: br i1 [[CMP_N4]], label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
84 | 84 | ; CHECK: vec.epilog.scalar.ph:
|
85 |
| -; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC3]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
86 |
| -; CHECK-NEXT: br label [[FOR_BODY:%.*]] |
87 |
| -; CHECK: for.body: |
88 |
| -; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
89 |
| -; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i8, ptr [[A]], i64 [[IV]] |
90 |
| -; CHECK-NEXT: store i8 1, ptr [[ARRAYIDX]], align 1 |
91 |
| -; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
92 |
| -; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
93 |
| -; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP4:![0-9]+]] |
94 |
| -; CHECK: exit: |
95 |
| -; CHECK-NEXT: ret void |
96 | 85 | ;
|
97 | 86 | ; CHECK-VF8-LABEL: @main_vf_vscale_x_16(
|
98 | 87 | ; CHECK-VF8-NEXT: iter.check:
|
@@ -145,17 +134,6 @@ define void @main_vf_vscale_x_16(ptr %A) #0 {
|
145 | 134 | ; CHECK-VF8: vec.epilog.middle.block:
|
146 | 135 | ; CHECK-VF8-NEXT: br i1 true, label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
147 | 136 | ; CHECK-VF8: vec.epilog.scalar.ph:
|
148 |
| -; CHECK-VF8-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1024, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
149 |
| -; CHECK-VF8-NEXT: br label [[FOR_BODY:%.*]] |
150 |
| -; CHECK-VF8: for.body: |
151 |
| -; CHECK-VF8-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
152 |
| -; CHECK-VF8-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i8, ptr [[A]], i64 [[IV]] |
153 |
| -; CHECK-VF8-NEXT: store i8 1, ptr [[ARRAYIDX]], align 1 |
154 |
| -; CHECK-VF8-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
155 |
| -; CHECK-VF8-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
156 |
| -; CHECK-VF8-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP4:![0-9]+]] |
157 |
| -; CHECK-VF8: exit: |
158 |
| -; CHECK-VF8-NEXT: ret void |
159 | 137 | ;
|
160 | 138 | entry:
|
161 | 139 | br label %for.body
|
@@ -239,17 +217,6 @@ define void @main_vf_vscale_x_2(ptr %A) #0 vscale_range(8, 8) {
|
239 | 217 | ; CHECK: vec.epilog.middle.block:
|
240 | 218 | ; CHECK-NEXT: br i1 true, label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
241 | 219 | ; CHECK: vec.epilog.scalar.ph:
|
242 |
| -; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1024, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
243 |
| -; CHECK-NEXT: br label [[FOR_BODY:%.*]] |
244 |
| -; CHECK: for.body: |
245 |
| -; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
246 |
| -; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[IV]] |
247 |
| -; CHECK-NEXT: store i64 1, ptr [[ARRAYIDX]], align 1 |
248 |
| -; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
249 |
| -; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
250 |
| -; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP7:![0-9]+]] |
251 |
| -; CHECK: exit: |
252 |
| -; CHECK-NEXT: ret void |
253 | 220 | ;
|
254 | 221 | ; CHECK-VF8-LABEL: @main_vf_vscale_x_2(
|
255 | 222 | ; CHECK-VF8-NEXT: iter.check:
|
@@ -302,17 +269,6 @@ define void @main_vf_vscale_x_2(ptr %A) #0 vscale_range(8, 8) {
|
302 | 269 | ; CHECK-VF8: vec.epilog.middle.block:
|
303 | 270 | ; CHECK-VF8-NEXT: br i1 true, label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
304 | 271 | ; CHECK-VF8: vec.epilog.scalar.ph:
|
305 |
| -; CHECK-VF8-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1024, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
306 |
| -; CHECK-VF8-NEXT: br label [[FOR_BODY:%.*]] |
307 |
| -; CHECK-VF8: for.body: |
308 |
| -; CHECK-VF8-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ] |
309 |
| -; CHECK-VF8-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[IV]] |
310 |
| -; CHECK-VF8-NEXT: store i64 1, ptr [[ARRAYIDX]], align 1 |
311 |
| -; CHECK-VF8-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
312 |
| -; CHECK-VF8-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[IV_NEXT]], 1024 |
313 |
| -; CHECK-VF8-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[EXIT]], !llvm.loop [[LOOP7:![0-9]+]] |
314 |
| -; CHECK-VF8: exit: |
315 |
| -; CHECK-VF8-NEXT: ret void |
316 | 272 | ;
|
317 | 273 | entry:
|
318 | 274 | br label %for.body
|
@@ -397,19 +353,6 @@ define void @test_pr57912_pointer_induction(ptr %start) #0 {
|
397 | 353 | ; CHECK-NEXT: [[CMP_N6:%.*]] = icmp eq i64 10000, [[N_VEC3]]
|
398 | 354 | ; CHECK-NEXT: br i1 [[CMP_N6]], label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
399 | 355 | ; CHECK: vec.epilog.scalar.ph:
|
400 |
| -; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC3]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
401 |
| -; CHECK-NEXT: [[BC_RESUME_VAL5:%.*]] = phi ptr [ [[IND_END]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END4]], [[VEC_EPILOG_ITER_CHECK]] ], [ [[START]], [[ITER_CHECK]] ] |
402 |
| -; CHECK-NEXT: br label [[LOOP:%.*]] |
403 |
| -; CHECK: loop: |
404 |
| -; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ] |
405 |
| -; CHECK-NEXT: [[PTR_IV:%.*]] = phi ptr [ [[BC_RESUME_VAL5]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[PTR_IV_NEXT:%.*]], [[LOOP]] ] |
406 |
| -; CHECK-NEXT: store i8 0, ptr [[PTR_IV]], align 1 |
407 |
| -; CHECK-NEXT: [[PTR_IV_NEXT]] = getelementptr inbounds i8, ptr [[PTR_IV]], i64 1 |
408 |
| -; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
409 |
| -; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[IV_NEXT]], 10000 |
410 |
| -; CHECK-NEXT: br i1 [[CMP]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP10:![0-9]+]] |
411 |
| -; CHECK: exit: |
412 |
| -; CHECK-NEXT: ret void |
413 | 356 | ;
|
414 | 357 | ; CHECK-VF8-LABEL: @test_pr57912_pointer_induction(
|
415 | 358 | ; CHECK-VF8-NEXT: iter.check:
|
@@ -464,19 +407,6 @@ define void @test_pr57912_pointer_induction(ptr %start) #0 {
|
464 | 407 | ; CHECK-VF8: vec.epilog.middle.block:
|
465 | 408 | ; CHECK-VF8-NEXT: br i1 true, label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
|
466 | 409 | ; CHECK-VF8: vec.epilog.scalar.ph:
|
467 |
| -; CHECK-VF8-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 10000, [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[ITER_CHECK:%.*]] ] |
468 |
| -; CHECK-VF8-NEXT: [[BC_RESUME_VAL2:%.*]] = phi ptr [ [[IND_END]], [[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END1]], [[VEC_EPILOG_ITER_CHECK]] ], [ [[START]], [[ITER_CHECK]] ] |
469 |
| -; CHECK-VF8-NEXT: br label [[LOOP:%.*]] |
470 |
| -; CHECK-VF8: loop: |
471 |
| -; CHECK-VF8-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ] |
472 |
| -; CHECK-VF8-NEXT: [[PTR_IV:%.*]] = phi ptr [ [[BC_RESUME_VAL2]], [[VEC_EPILOG_SCALAR_PH]] ], [ [[PTR_IV_NEXT:%.*]], [[LOOP]] ] |
473 |
| -; CHECK-VF8-NEXT: store i8 0, ptr [[PTR_IV]], align 1 |
474 |
| -; CHECK-VF8-NEXT: [[PTR_IV_NEXT]] = getelementptr inbounds i8, ptr [[PTR_IV]], i64 1 |
475 |
| -; CHECK-VF8-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 |
476 |
| -; CHECK-VF8-NEXT: [[CMP:%.*]] = icmp eq i64 [[IV_NEXT]], 10000 |
477 |
| -; CHECK-VF8-NEXT: br i1 [[CMP]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP10:![0-9]+]] |
478 |
| -; CHECK-VF8: exit: |
479 |
| -; CHECK-VF8-NEXT: ret void |
480 | 410 | ;
|
481 | 411 | entry:
|
482 | 412 | br label %loop
|
|
0 commit comments