|
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