Skip to content

Commit 8cdab07

Browse files
committed
Reapply "[VPlan] Remove trivial dead VPPhi cycles."
This reverts commit 1c7c8e3. Recommit with a fix for the verifier error caused for EVL recipes. Extra test coverage added in 6f939da.
1 parent ca05058 commit 8cdab07

File tree

55 files changed

+17
-497
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+17
-497
lines changed

llvm/lib/Transforms/Vectorize/LoopVectorize.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7348,8 +7348,7 @@ DenseMap<const SCEV *, Value *> LoopVectorizationPlanner::executePlan(
73487348
BasicBlock *EntryBB =
73497349
cast<VPIRBasicBlock>(BestVPlan.getEntry())->getIRBasicBlock();
73507350
State.CFG.PrevBB = ILV.createVectorizedLoopSkeleton();
7351-
if (VectorizingEpilogue)
7352-
VPlanTransforms::removeDeadRecipes(BestVPlan);
7351+
VPlanTransforms::removeDeadRecipes(BestVPlan);
73537352

73547353
assert(verifyVPlanIsValid(BestVPlan, true /*VerifyLate*/) &&
73557354
"final VPlan is invalid");

llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,8 +553,22 @@ void VPlanTransforms::removeDeadRecipes(VPlan &Plan) {
553553
// The recipes in the block are processed in reverse order, to catch chains
554554
// of dead recipes.
555555
for (VPRecipeBase &R : make_early_inc_range(reverse(*VPBB))) {
556-
if (isDeadRecipe(R))
556+
if (isDeadRecipe(R)) {
557557
R.eraseFromParent();
558+
continue;
559+
}
560+
561+
// Check if R is a dead VPPhi <-> update cycle and remove it.
562+
auto *PhiR = dyn_cast<VPPhi>(&R);
563+
if (!PhiR || PhiR->getNumOperands() != 2 || PhiR->getNumUsers() != 1)
564+
continue;
565+
VPValue *Incoming = PhiR->getOperand(1);
566+
if (*PhiR->user_begin() != Incoming->getDefiningRecipe() ||
567+
Incoming->getNumUsers() != 1)
568+
continue;
569+
PhiR->replaceAllUsesWith(PhiR->getOperand(0));
570+
PhiR->eraseFromParent();
571+
Incoming->getDefiningRecipe()->eraseFromParent();
558572
}
559573
}
560574
}

llvm/test/Transforms/LoopVectorize/AArch64/force-target-instruction-cost.ll

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@ define double @test_reduction_costs() {
1111
; CHECK: [[VECTOR_PH]]:
1212
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
1313
; CHECK: [[VECTOR_BODY]]:
14-
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
1514
; CHECK-NEXT: [[VEC_PHI:%.*]] = phi double [ 0.000000e+00, %[[VECTOR_PH]] ], [ [[TMP0:%.*]], %[[VECTOR_BODY]] ]
1615
; CHECK-NEXT: [[VEC_PHI1:%.*]] = phi double [ 0.000000e+00, %[[VECTOR_PH]] ], [ [[TMP1:%.*]], %[[VECTOR_BODY]] ]
1716
; CHECK-NEXT: [[TMP0]] = call double @llvm.vector.reduce.fadd.v2f64(double [[VEC_PHI]], <2 x double> splat (double 3.000000e+00))
1817
; CHECK-NEXT: [[TMP1]] = call double @llvm.vector.reduce.fadd.v2f64(double [[VEC_PHI1]], <2 x double> splat (double 9.000000e+00))
19-
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
2018
; CHECK-NEXT: br i1 true, label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
2119
; CHECK: [[MIDDLE_BLOCK]]:
2220
; CHECK-NEXT: br label %[[EXIT:.*]]

llvm/test/Transforms/LoopVectorize/RISCV/bf16.ll

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ define void @fadd(ptr noalias %a, ptr noalias %b, i64 %n) {
2828
; ZVFBFMIN-NEXT: [[ENTRY:.*:]]
2929
; ZVFBFMIN-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
3030
; ZVFBFMIN: [[VECTOR_PH]]:
31-
; ZVFBFMIN-NEXT: [[TMP12:%.*]] = call i64 @llvm.vscale.i64()
32-
; ZVFBFMIN-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP12]], 8
3331
; ZVFBFMIN-NEXT: br label %[[VECTOR_BODY:.*]]
3432
; ZVFBFMIN: [[VECTOR_BODY]]:
3533
; ZVFBFMIN-NEXT: [[TMP0:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_EVL_NEXT:%.*]], %[[VECTOR_BODY]] ]
@@ -135,8 +133,6 @@ define void @vfwmaccbf16.vv(ptr noalias %a, ptr noalias %b, ptr noalias %c, i64
135133
; ZVFBFMIN-NEXT: [[ENTRY:.*:]]
136134
; ZVFBFMIN-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
137135
; ZVFBFMIN: [[VECTOR_PH]]:
138-
; ZVFBFMIN-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
139-
; ZVFBFMIN-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 4
140136
; ZVFBFMIN-NEXT: br label %[[VECTOR_BODY:.*]]
141137
; ZVFBFMIN: [[VECTOR_BODY]]:
142138
; ZVFBFMIN-NEXT: [[TMP6:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_EVL_NEXT:%.*]], %[[VECTOR_BODY]] ]

llvm/test/Transforms/LoopVectorize/RISCV/blocks-with-dead-instructions.ll

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ define void @block_with_dead_inst_1(ptr %src, i64 %N) #0 {
1313
; CHECK-NEXT: [[TMP2:%.*]] = add nuw nsw i64 [[TMP1]], 1
1414
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
1515
; CHECK: [[VECTOR_PH]]:
16-
; CHECK-NEXT: [[TMP9:%.*]] = call i64 @llvm.vscale.i64()
17-
; CHECK-NEXT: [[TMP10:%.*]] = mul nuw i64 [[TMP9]], 8
1816
; CHECK-NEXT: [[TMP11:%.*]] = call <vscale x 8 x i64> @llvm.stepvector.nxv8i64()
1917
; CHECK-NEXT: [[TMP13:%.*]] = mul <vscale x 8 x i64> [[TMP11]], splat (i64 3)
2018
; CHECK-NEXT: [[INDUCTION:%.*]] = add <vscale x 8 x i64> zeroinitializer, [[TMP13]]
@@ -91,8 +89,6 @@ define void @block_with_dead_inst_2(ptr %src) #0 {
9189
; CHECK-NEXT: [[ENTRY:.*:]]
9290
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
9391
; CHECK: [[VECTOR_PH]]:
94-
; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.vscale.i64()
95-
; CHECK-NEXT: [[TMP4:%.*]] = mul nuw i64 [[TMP6]], 8
9692
; CHECK-NEXT: [[TMP5:%.*]] = call <vscale x 8 x i64> @llvm.stepvector.nxv8i64()
9793
; CHECK-NEXT: [[TMP8:%.*]] = mul <vscale x 8 x i64> [[TMP5]], splat (i64 3)
9894
; CHECK-NEXT: [[INDUCTION:%.*]] = add <vscale x 8 x i64> zeroinitializer, [[TMP8]]
@@ -169,8 +165,6 @@ define void @multiple_blocks_with_dead_insts_3(ptr %src) #0 {
169165
; CHECK-NEXT: [[ENTRY:.*:]]
170166
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
171167
; CHECK: [[VECTOR_PH]]:
172-
; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.vscale.i64()
173-
; CHECK-NEXT: [[TMP4:%.*]] = mul nuw i64 [[TMP6]], 8
174168
; CHECK-NEXT: [[TMP5:%.*]] = call <vscale x 8 x i64> @llvm.stepvector.nxv8i64()
175169
; CHECK-NEXT: [[TMP8:%.*]] = mul <vscale x 8 x i64> [[TMP5]], splat (i64 3)
176170
; CHECK-NEXT: [[INDUCTION:%.*]] = add <vscale x 8 x i64> zeroinitializer, [[TMP8]]
@@ -257,8 +251,6 @@ define void @multiple_blocks_with_dead_insts_4(ptr %src, i64 %N) #0 {
257251
; CHECK-NEXT: [[TMP2:%.*]] = add nuw nsw i64 [[TMP1]], 1
258252
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
259253
; CHECK: [[VECTOR_PH]]:
260-
; CHECK-NEXT: [[TMP9:%.*]] = call i64 @llvm.vscale.i64()
261-
; CHECK-NEXT: [[TMP10:%.*]] = mul nuw i64 [[TMP9]], 8
262254
; CHECK-NEXT: [[TMP11:%.*]] = call <vscale x 8 x i64> @llvm.stepvector.nxv8i64()
263255
; CHECK-NEXT: [[TMP13:%.*]] = mul <vscale x 8 x i64> [[TMP11]], splat (i64 3)
264256
; CHECK-NEXT: [[INDUCTION:%.*]] = add <vscale x 8 x i64> zeroinitializer, [[TMP13]]
@@ -347,8 +339,6 @@ define void @multiple_blocks_with_dead_inst_multiple_successors_5(ptr %src) #0 {
347339
; CHECK-NEXT: [[ENTRY:.*:]]
348340
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
349341
; CHECK: [[VECTOR_PH]]:
350-
; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.vscale.i64()
351-
; CHECK-NEXT: [[TMP4:%.*]] = mul nuw i64 [[TMP6]], 8
352342
; CHECK-NEXT: [[TMP5:%.*]] = call <vscale x 8 x i64> @llvm.stepvector.nxv8i64()
353343
; CHECK-NEXT: [[TMP8:%.*]] = mul <vscale x 8 x i64> [[TMP5]], splat (i64 3)
354344
; CHECK-NEXT: [[INDUCTION:%.*]] = add <vscale x 8 x i64> zeroinitializer, [[TMP8]]
@@ -445,8 +435,6 @@ define void @multiple_blocks_with_dead_inst_multiple_successors_6(ptr %src, i1 %
445435
; CHECK-NEXT: [[TMP2:%.*]] = add nuw nsw i64 [[TMP1]], 1
446436
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
447437
; CHECK: [[VECTOR_PH]]:
448-
; CHECK-NEXT: [[TMP9:%.*]] = call i64 @llvm.vscale.i64()
449-
; CHECK-NEXT: [[TMP10:%.*]] = mul nuw i64 [[TMP9]], 8
450438
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 8 x i1> poison, i1 [[IC]], i64 0
451439
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 8 x i1> [[BROADCAST_SPLATINSERT]], <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
452440
; CHECK-NEXT: [[TMP8:%.*]] = xor <vscale x 8 x i1> [[BROADCAST_SPLAT]], splat (i1 true)
@@ -556,8 +544,6 @@ define void @empty_block_with_phi_1(ptr %src, i64 %N) #0 {
556544
; CHECK-NEXT: [[ENTRY:.*:]]
557545
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
558546
; CHECK: [[VECTOR_PH]]:
559-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
560-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 8
561547
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
562548
; CHECK: [[VECTOR_BODY]]:
563549
; CHECK-NEXT: [[TMP9:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_EVL_NEXT:%.*]], %[[VECTOR_BODY]] ]
@@ -633,8 +619,6 @@ define void @empty_block_with_phi_2(ptr %src, i64 %N) #0 {
633619
; CHECK-NEXT: [[ENTRY:.*:]]
634620
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
635621
; CHECK: [[VECTOR_PH]]:
636-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
637-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 8
638622
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
639623
; CHECK: [[VECTOR_BODY]]:
640624
; CHECK-NEXT: [[TMP9:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_EVL_NEXT:%.*]], %[[VECTOR_BODY]] ]
@@ -738,8 +722,6 @@ define void @dead_load_in_block(ptr %dst, ptr %src, i8 %N, i64 %x) #0 {
738722
; CHECK-NEXT: [[CONFLICT_RDX:%.*]] = or i1 [[FOUND_CONFLICT]], [[FOUND_CONFLICT6]]
739723
; CHECK-NEXT: br i1 [[CONFLICT_RDX]], label %[[SCALAR_PH]], label %[[VECTOR_PH:.*]]
740724
; CHECK: [[VECTOR_PH]]:
741-
; CHECK-NEXT: [[TMP16:%.*]] = call i64 @llvm.vscale.i64()
742-
; CHECK-NEXT: [[TMP15:%.*]] = mul nuw i64 [[TMP16]], 4
743725
; CHECK-NEXT: [[TMP24:%.*]] = call <vscale x 4 x i64> @llvm.stepvector.nxv4i64()
744726
; CHECK-NEXT: [[TMP25:%.*]] = mul <vscale x 4 x i64> [[TMP24]], splat (i64 3)
745727
; CHECK-NEXT: [[INDUCTION:%.*]] = add <vscale x 4 x i64> zeroinitializer, [[TMP25]]

llvm/test/Transforms/LoopVectorize/RISCV/dead-ops-cost.ll

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ define void @dead_load(ptr %p, i16 %start) {
2020
; CHECK-NEXT: [[TMP5:%.*]] = add i64 [[TMP4]], 1
2121
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
2222
; CHECK: [[VECTOR_PH]]:
23-
; CHECK-NEXT: [[TMP13:%.*]] = call i64 @llvm.vscale.i64()
24-
; CHECK-NEXT: [[TMP14:%.*]] = mul nuw i64 [[TMP13]], 8
2523
; CHECK-NEXT: [[TMP15:%.*]] = call <vscale x 8 x i64> @llvm.stepvector.nxv8i64()
2624
; CHECK-NEXT: [[DOTSPLATINSERT:%.*]] = insertelement <vscale x 8 x i64> poison, i64 [[START_EXT]], i64 0
2725
; CHECK-NEXT: [[DOTSPLAT:%.*]] = shufflevector <vscale x 8 x i64> [[DOTSPLATINSERT]], <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
@@ -308,8 +306,6 @@ define void @test_phi_in_latch_redundant(ptr %dst, i32 %a) {
308306
; CHECK-NEXT: [[ENTRY:.*:]]
309307
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
310308
; CHECK: [[VECTOR_PH]]:
311-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
312-
; CHECK-NEXT: [[TMP10:%.*]] = mul nuw i64 [[TMP4]], 4
313309
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 4 x i32> poison, i32 [[A]], i64 0
314310
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 4 x i32> [[BROADCAST_SPLATINSERT]], <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
315311
; CHECK-NEXT: [[TMP19:%.*]] = xor <vscale x 4 x i32> [[BROADCAST_SPLAT]], splat (i32 -1)
@@ -396,8 +392,6 @@ define void @gather_interleave_group_with_dead_insert_pos(i64 %N, ptr noalias %s
396392
; CHECK-NEXT: [[TMP2:%.*]] = add nuw nsw i64 [[TMP1]], 1
397393
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
398394
; CHECK: [[VECTOR_PH]]:
399-
; CHECK-NEXT: [[TMP7:%.*]] = call i64 @llvm.vscale.i64()
400-
; CHECK-NEXT: [[TMP8:%.*]] = mul nuw i64 [[TMP7]], 4
401395
; CHECK-NEXT: [[TMP9:%.*]] = call <vscale x 4 x i64> @llvm.stepvector.nxv4i64()
402396
; CHECK-NEXT: [[TMP11:%.*]] = mul <vscale x 4 x i64> [[TMP9]], splat (i64 2)
403397
; CHECK-NEXT: [[INDUCTION:%.*]] = add <vscale x 4 x i64> zeroinitializer, [[TMP11]]

llvm/test/Transforms/LoopVectorize/RISCV/defaults.ll

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ define void @vector_add(ptr noalias nocapture %a, i64 %v) {
1515
; CHECK-NEXT: entry:
1616
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
1717
; CHECK: vector.ph:
18-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
19-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 2
2018
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 2 x i64> poison, i64 [[V:%.*]], i64 0
2119
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 2 x i64> [[BROADCAST_SPLATINSERT]], <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
2220
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
@@ -71,8 +69,6 @@ define i64 @vector_add_reduce(ptr noalias nocapture %a) {
7169
; CHECK-NEXT: entry:
7270
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
7371
; CHECK: vector.ph:
74-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
75-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 2
7672
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
7773
; CHECK: vector.body:
7874
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]

llvm/test/Transforms/LoopVectorize/RISCV/divrem.ll

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ define void @vector_udiv(ptr noalias nocapture %a, i64 %v, i64 %n) {
1212
; CHECK-NEXT: entry:
1313
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
1414
; CHECK: vector.ph:
15-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
16-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 2
1715
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 2 x i64> poison, i64 [[V:%.*]], i64 0
1816
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 2 x i64> [[BROADCAST_SPLATINSERT]], <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1917
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
@@ -101,8 +99,6 @@ define void @vector_sdiv(ptr noalias nocapture %a, i64 %v, i64 %n) {
10199
; CHECK-NEXT: entry:
102100
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
103101
; CHECK: vector.ph:
104-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
105-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 2
106102
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 2 x i64> poison, i64 [[V:%.*]], i64 0
107103
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 2 x i64> [[BROADCAST_SPLATINSERT]], <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
108104
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
@@ -190,8 +186,6 @@ define void @vector_urem(ptr noalias nocapture %a, i64 %v, i64 %n) {
190186
; CHECK-NEXT: entry:
191187
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
192188
; CHECK: vector.ph:
193-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
194-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 2
195189
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 2 x i64> poison, i64 [[V:%.*]], i64 0
196190
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 2 x i64> [[BROADCAST_SPLATINSERT]], <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
197191
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
@@ -279,8 +273,6 @@ define void @vector_srem(ptr noalias nocapture %a, i64 %v, i64 %n) {
279273
; CHECK-NEXT: entry:
280274
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
281275
; CHECK: vector.ph:
282-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
283-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 2
284276
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 2 x i64> poison, i64 [[V:%.*]], i64 0
285277
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 2 x i64> [[BROADCAST_SPLATINSERT]], <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
286278
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
@@ -368,8 +360,6 @@ define void @predicated_udiv(ptr noalias nocapture %a, i64 %v, i64 %n) {
368360
; CHECK-NEXT: entry:
369361
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
370362
; CHECK: vector.ph:
371-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
372-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 2
373363
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 2 x i64> poison, i64 [[V:%.*]], i64 0
374364
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 2 x i64> [[BROADCAST_SPLATINSERT]], <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
375365
; CHECK-NEXT: [[TMP6:%.*]] = icmp ne <vscale x 2 x i64> [[BROADCAST_SPLAT]], zeroinitializer
@@ -486,8 +476,6 @@ define void @predicated_sdiv(ptr noalias nocapture %a, i64 %v, i64 %n) {
486476
; CHECK-NEXT: entry:
487477
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
488478
; CHECK: vector.ph:
489-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
490-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 2
491479
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 2 x i64> poison, i64 [[V:%.*]], i64 0
492480
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 2 x i64> [[BROADCAST_SPLATINSERT]], <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
493481
; CHECK-NEXT: [[TMP6:%.*]] = icmp ne <vscale x 2 x i64> [[BROADCAST_SPLAT]], zeroinitializer
@@ -604,8 +592,6 @@ define void @predicated_udiv_by_constant(ptr noalias nocapture %a, i64 %n) {
604592
; CHECK-NEXT: entry:
605593
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
606594
; CHECK: vector.ph:
607-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
608-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 2
609595
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
610596
; CHECK: vector.body:
611597
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
@@ -716,8 +702,6 @@ define void @predicated_sdiv_by_constant(ptr noalias nocapture %a, i64 %n) {
716702
; CHECK-NEXT: entry:
717703
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
718704
; CHECK: vector.ph:
719-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
720-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 2
721705
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
722706
; CHECK: vector.body:
723707
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
@@ -828,8 +812,6 @@ define void @predicated_sdiv_by_minus_one(ptr noalias nocapture %a, i64 %n) {
828812
; CHECK-NEXT: entry:
829813
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
830814
; CHECK: vector.ph:
831-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.vscale.i64()
832-
; CHECK-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP4]], 16
833815
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
834816
; CHECK: vector.body:
835817
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]

llvm/test/Transforms/LoopVectorize/RISCV/evl-compatible-loops.ll

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ define void @test_wide_integer_induction(ptr noalias %a, i64 %N) {
1010
; CHECK-NEXT: entry:
1111
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[ENTRY:%.*]]
1212
; CHECK: vector.ph:
13-
; CHECK-NEXT: [[TMP7:%.*]] = call i64 @llvm.vscale.i64()
14-
; CHECK-NEXT: [[TMP8:%.*]] = mul nuw i64 [[TMP7]], 2
1513
; CHECK-NEXT: [[TMP9:%.*]] = call <vscale x 2 x i64> @llvm.stepvector.nxv2i64()
1614
; CHECK-NEXT: [[TMP10:%.*]] = mul <vscale x 2 x i64> [[TMP9]], splat (i64 1)
1715
; CHECK-NEXT: [[INDUCTION:%.*]] = add <vscale x 2 x i64> zeroinitializer, [[TMP10]]
@@ -69,8 +67,6 @@ define void @test_wide_ptr_induction(ptr noalias %a, ptr noalias %b, i64 %N) {
6967
; CHECK-NEXT: entry:
7068
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
7169
; CHECK: vector.ph:
72-
; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
73-
; CHECK-NEXT: [[TMP4:%.*]] = mul nuw i64 [[TMP3]], 2
7470
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
7571
; CHECK: vector.body:
7672
; CHECK-NEXT: [[EVL_BASED_IV:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_EVL_NEXT:%.*]], [[VECTOR_BODY]] ]

llvm/test/Transforms/LoopVectorize/RISCV/f16.ll

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ define void @fadd(ptr noalias %a, ptr noalias %b, i64 %n) {
2828
; ZVFHMIN-NEXT: [[ENTRY:.*:]]
2929
; ZVFHMIN-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
3030
; ZVFHMIN: [[VECTOR_PH]]:
31-
; ZVFHMIN-NEXT: [[TMP12:%.*]] = call i64 @llvm.vscale.i64()
32-
; ZVFHMIN-NEXT: [[TMP5:%.*]] = mul nuw i64 [[TMP12]], 8
3331
; ZVFHMIN-NEXT: br label %[[VECTOR_BODY:.*]]
3432
; ZVFHMIN: [[VECTOR_BODY]]:
3533
; ZVFHMIN-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_EVL_NEXT:%.*]], %[[VECTOR_BODY]] ]

0 commit comments

Comments
 (0)