Skip to content

Commit 3dc7746

Browse files
Rebase
1 parent 0a3cefb commit 3dc7746

File tree

8 files changed

+58
-102
lines changed

8 files changed

+58
-102
lines changed

llvm/lib/Transforms/Vectorize/LoopVectorize.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8288,7 +8288,8 @@ VPRecipeBuilder::createWidenStep(VPWidenIntOrFpInductionRecipe &WIV,
82888288
const InductionDescriptor &IndDesc = WIV.getInductionDescriptor();
82898289
VPValue *ScalarStep =
82908290
vputils::getOrCreateVPValueForSCEVExpr(Plan, IndDesc.getStep(), SE);
8291-
Type *VFxUFTy = Plan.getVFxUF().getElementType();
8291+
VPTypeAnalysis TypeInfo(nullptr, SE.getContext());
8292+
Type *VFxUFTy = TypeInfo.inferScalarType(Plan.getTripCount());
82928293
Type *StepTy = IndDesc.getStep()->getType();
82938294
VPValue *WidenVFxUF = &Plan.getWidenVFxUF();
82948295
VPBasicBlock *LatchVPBB = Plan.getVectorLoopRegion()->getExitingBasicBlock();

llvm/lib/Transforms/Vectorize/VPlan.cpp

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,6 @@ VPValue::VPValue(const unsigned char SC, Value *UV, VPDef *Def, Type *Ty)
8888
Def->addDefinedValue(this);
8989
}
9090

91-
Type *VPValue::getElementType() {
92-
return const_cast<Type *>(
93-
const_cast<const VPValue *>(this)->getElementType());
94-
}
95-
96-
const Type *VPValue::getElementType() const {
97-
return UnderlyingVal ? UnderlyingVal->getType() : UnderlyingTy;
98-
}
99-
10091
VPValue::~VPValue() {
10192
assert(Users.empty() && "trying to delete a VPValue with remaining users");
10293
if (Def)
@@ -794,7 +785,6 @@ VPlanPtr VPlan::createInitialVPlan(const SCEV *TripCount, ScalarEvolution &SE) {
794785
auto Plan = std::make_unique<VPlan>(Preheader, VecPreheader);
795786
Plan->TripCount =
796787
vputils::getOrCreateVPValueForSCEVExpr(*Plan, TripCount, SE);
797-
Type *TCType = TripCount->getType();
798788
// Create empty VPRegionBlock, to be filled during processing later.
799789
auto *TopRegion = new VPRegionBlock("vector loop", false /*isReplicator*/);
800790
VPBlockUtils::insertBlockAfter(TopRegion, VecPreheader);
@@ -822,17 +812,18 @@ void VPlan::prepareToExecute(Value *TripCountV, Value *VectorTripCountV,
822812
VFxUF.setUnderlyingValue(
823813
createStepForVF(Builder, TripCountV->getType(), State.VF, State.UF));
824814

825-
if (WidenVFxUF.getNumUsers() > 0)
826-
for (unsigned Part = 0, UF = State.UF; Part < UF; ++Part) {
827-
Value *Step =
828-
createStepForVF(Builder, TripCountV->getType(), State.VF, Part + 1);
829-
if (State.VF.isScalar())
830-
State.set(&WidenVFxUF, Step, Part);
831-
else
815+
if (WidenVFxUF.getNumUsers() > 0) {
816+
if (State.VF.isScalar())
817+
WidenVFxUF.setUnderlyingValue(VFxUF.getUnderlyingValue());
818+
else
819+
for (unsigned Part = 0, UF = State.UF; Part < UF; ++Part) {
820+
Value *Step =
821+
createStepForVF(Builder, TripCountV->getType(), State.VF, Part + 1);
832822
State.set(&WidenVFxUF,
833823
Builder.CreateVectorSplat(State.VF, Step, "widen.vfxuf"),
834824
Part);
835-
}
825+
}
826+
}
836827

837828
// When vectorizing the epilogue loop, the canonical induction start value
838829
// needs to be changed from zero to the value after the main vector loop.

llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ bool VPRecipeBase::mayHaveSideEffects() const {
127127
case Instruction::Select:
128128
case Instruction::Add:
129129
case Instruction::FAdd:
130+
case Instruction::Sub:
131+
case Instruction::FSub:
130132
case Instruction::Mul:
131133
case Instruction::FMul:
132134
case VPInstruction::Not:

llvm/lib/Transforms/Vectorize/VPlanValue.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,6 @@ class VPValue {
8585
Value *getUnderlyingValue() { return UnderlyingVal; }
8686
const Value *getUnderlyingValue() const { return UnderlyingVal; }
8787

88-
Type *getElementType();
89-
const Type *getElementType() const;
90-
9188
/// An enumeration for keeping track of the concrete subclass of VPValue that
9289
/// are actually instantiated.
9390
enum {

llvm/test/Transforms/LoopVectorize/AArch64/clamped-trip-count.ll

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,15 @@ define void @clamped_tc_8(ptr nocapture %dst, i32 %n, i64 %val) vscale_range(1,1
1818
; CHECK-NEXT: [[IND_END:%.*]] = getelementptr i8, ptr [[DST]], i64 [[N_VEC]]
1919
; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
2020
; CHECK-NEXT: [[TMP6:%.*]] = mul i64 [[TMP5]], 8
21+
; CHECK-NEXT: [[TMP10:%.*]] = call i64 @llvm.vscale.i64()
22+
; CHECK-NEXT: [[TMP11:%.*]] = mul i64 [[TMP10]], 8
23+
; CHECK-NEXT: [[WIDEN_VFXUF_SPLATINSERT:%.*]] = insertelement <vscale x 8 x i64> poison, i64 [[TMP11]], i64 0
24+
; CHECK-NEXT: [[DOTSPLAT:%.*]] = shufflevector <vscale x 8 x i64> [[WIDEN_VFXUF_SPLATINSERT]], <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
2125
; CHECK-NEXT: [[ACTIVE_LANE_MASK_ENTRY:%.*]] = call <vscale x 8 x i1> @llvm.get.active.lane.mask.nxv8i1.i64(i64 0, i64 8)
2226
; CHECK-NEXT: [[TMP7:%.*]] = call <vscale x 8 x i64> @llvm.experimental.stepvector.nxv8i64()
2327
; CHECK-NEXT: [[TMP8:%.*]] = add <vscale x 8 x i64> [[TMP7]], zeroinitializer
2428
; CHECK-NEXT: [[TMP9:%.*]] = mul <vscale x 8 x i64> [[TMP8]], shufflevector (<vscale x 8 x i64> insertelement (<vscale x 8 x i64> poison, i64 1, i64 0), <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer)
2529
; CHECK-NEXT: [[INDUCTION:%.*]] = add <vscale x 8 x i64> zeroinitializer, [[TMP9]]
26-
; CHECK-NEXT: [[TMP10:%.*]] = call i64 @llvm.vscale.i64()
27-
; CHECK-NEXT: [[TMP11:%.*]] = mul i64 [[TMP10]], 8
28-
; CHECK-NEXT: [[TMP12:%.*]] = mul i64 1, [[TMP11]]
29-
; CHECK-NEXT: [[DOTSPLATINSERT:%.*]] = insertelement <vscale x 8 x i64> poison, i64 [[TMP12]], i64 0
30-
; CHECK-NEXT: [[DOTSPLAT:%.*]] = shufflevector <vscale x 8 x i64> [[DOTSPLATINSERT]], <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3130
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 8 x i64> poison, i64 [[VAL]], i64 0
3231
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 8 x i64> [[BROADCAST_SPLATINSERT]], <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3332
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
@@ -43,8 +42,8 @@ define void @clamped_tc_8(ptr nocapture %dst, i32 %n, i64 %val) vscale_range(1,1
4342
; CHECK-NEXT: [[TMP17:%.*]] = getelementptr i8, ptr [[NEXT_GEP]], i32 0
4443
; CHECK-NEXT: call void @llvm.masked.store.nxv8i8.p0(<vscale x 8 x i8> [[TMP16]], ptr [[TMP17]], i32 1, <vscale x 8 x i1> [[ACTIVE_LANE_MASK]])
4544
; CHECK-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], [[TMP6]]
46-
; CHECK-NEXT: [[ACTIVE_LANE_MASK_NEXT]] = call <vscale x 8 x i1> @llvm.get.active.lane.mask.nxv8i1.i64(i64 [[INDEX_NEXT]], i64 8)
4745
; CHECK-NEXT: [[VEC_IND_NEXT]] = add <vscale x 8 x i64> [[VEC_IND]], [[DOTSPLAT]]
46+
; CHECK-NEXT: [[ACTIVE_LANE_MASK_NEXT]] = call <vscale x 8 x i1> @llvm.get.active.lane.mask.nxv8i1.i64(i64 [[INDEX_NEXT]], i64 8)
4847
; CHECK-NEXT: [[TMP18:%.*]] = xor <vscale x 8 x i1> [[ACTIVE_LANE_MASK_NEXT]], shufflevector (<vscale x 8 x i1> insertelement (<vscale x 8 x i1> poison, i1 true, i64 0), <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer)
4948
; CHECK-NEXT: br i1 true, label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
5049
; CHECK: middle.block:
@@ -110,16 +109,15 @@ define void @clamped_tc_max_8(ptr nocapture %dst, i32 %n, i64 %val) vscale_range
110109
; CHECK-NEXT: [[IND_END:%.*]] = getelementptr i8, ptr [[DST]], i64 [[N_VEC]]
111110
; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
112111
; CHECK-NEXT: [[TMP6:%.*]] = mul i64 [[TMP5]], 8
112+
; CHECK-NEXT: [[TMP10:%.*]] = call i64 @llvm.vscale.i64()
113+
; CHECK-NEXT: [[TMP11:%.*]] = mul i64 [[TMP10]], 8
114+
; CHECK-NEXT: [[WIDEN_VFXUF_SPLATINSERT:%.*]] = insertelement <vscale x 8 x i64> poison, i64 [[TMP11]], i64 0
115+
; CHECK-NEXT: [[DOTSPLAT:%.*]] = shufflevector <vscale x 8 x i64> [[WIDEN_VFXUF_SPLATINSERT]], <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
113116
; CHECK-NEXT: [[ACTIVE_LANE_MASK_ENTRY:%.*]] = call <vscale x 8 x i1> @llvm.get.active.lane.mask.nxv8i1.i64(i64 0, i64 [[WIDE_TRIP_COUNT]])
114117
; CHECK-NEXT: [[TMP7:%.*]] = call <vscale x 8 x i64> @llvm.experimental.stepvector.nxv8i64()
115118
; CHECK-NEXT: [[TMP8:%.*]] = add <vscale x 8 x i64> [[TMP7]], zeroinitializer
116119
; CHECK-NEXT: [[TMP9:%.*]] = mul <vscale x 8 x i64> [[TMP8]], shufflevector (<vscale x 8 x i64> insertelement (<vscale x 8 x i64> poison, i64 1, i64 0), <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer)
117120
; CHECK-NEXT: [[INDUCTION:%.*]] = add <vscale x 8 x i64> zeroinitializer, [[TMP9]]
118-
; CHECK-NEXT: [[TMP10:%.*]] = call i64 @llvm.vscale.i64()
119-
; CHECK-NEXT: [[TMP11:%.*]] = mul i64 [[TMP10]], 8
120-
; CHECK-NEXT: [[TMP12:%.*]] = mul i64 1, [[TMP11]]
121-
; CHECK-NEXT: [[DOTSPLATINSERT:%.*]] = insertelement <vscale x 8 x i64> poison, i64 [[TMP12]], i64 0
122-
; CHECK-NEXT: [[DOTSPLAT:%.*]] = shufflevector <vscale x 8 x i64> [[DOTSPLATINSERT]], <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
123121
; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 8 x i64> poison, i64 [[VAL]], i64 0
124122
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 8 x i64> [[BROADCAST_SPLATINSERT]], <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
125123
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
@@ -135,8 +133,8 @@ define void @clamped_tc_max_8(ptr nocapture %dst, i32 %n, i64 %val) vscale_range
135133
; CHECK-NEXT: [[TMP17:%.*]] = getelementptr i8, ptr [[NEXT_GEP]], i32 0
136134
; CHECK-NEXT: call void @llvm.masked.store.nxv8i8.p0(<vscale x 8 x i8> [[TMP16]], ptr [[TMP17]], i32 1, <vscale x 8 x i1> [[ACTIVE_LANE_MASK]])
137135
; CHECK-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], [[TMP6]]
138-
; CHECK-NEXT: [[ACTIVE_LANE_MASK_NEXT]] = call <vscale x 8 x i1> @llvm.get.active.lane.mask.nxv8i1.i64(i64 [[INDEX_NEXT]], i64 [[WIDE_TRIP_COUNT]])
139136
; CHECK-NEXT: [[VEC_IND_NEXT]] = add <vscale x 8 x i64> [[VEC_IND]], [[DOTSPLAT]]
137+
; CHECK-NEXT: [[ACTIVE_LANE_MASK_NEXT]] = call <vscale x 8 x i1> @llvm.get.active.lane.mask.nxv8i1.i64(i64 [[INDEX_NEXT]], i64 [[WIDE_TRIP_COUNT]])
140138
; CHECK-NEXT: [[TMP18:%.*]] = xor <vscale x 8 x i1> [[ACTIVE_LANE_MASK_NEXT]], shufflevector (<vscale x 8 x i1> insertelement (<vscale x 8 x i1> poison, i1 true, i64 0), <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer)
141139
; CHECK-NEXT: br i1 true, label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
142140
; CHECK: middle.block:

llvm/test/Transforms/LoopVectorize/AArch64/pr73894.ll

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ define i32 @pr70988() {
3333
; CHECK-NEXT: [[TMP6:%.*]] = load i32, ptr [[TMP5]], align 4
3434
; CHECK-NEXT: br label [[PRED_LOAD_CONTINUE]]
3535
; CHECK: pred.load.continue:
36-
; CHECK-NEXT: [[TMP7:%.*]] = phi ptr [ poison, [[VECTOR_BODY]] ], [ [[TMP5]], [[PRED_LOAD_IF]] ]
3736
; CHECK-NEXT: [[TMP8:%.*]] = phi i32 [ poison, [[VECTOR_BODY]] ], [ [[TMP6]], [[PRED_LOAD_IF]] ]
3837
; CHECK-NEXT: br i1 [[ACTIVE_LANE_MASK2]], label [[PRED_LOAD_IF4:%.*]], label [[PRED_LOAD_CONTINUE5]]
3938
; CHECK: pred.load.if4:
@@ -43,7 +42,6 @@ define i32 @pr70988() {
4342
; CHECK-NEXT: [[TMP12:%.*]] = load i32, ptr [[TMP11]], align 4
4443
; CHECK-NEXT: br label [[PRED_LOAD_CONTINUE5]]
4544
; CHECK: pred.load.continue5:
46-
; CHECK-NEXT: [[TMP13:%.*]] = phi ptr [ poison, [[PRED_LOAD_CONTINUE]] ], [ [[TMP11]], [[PRED_LOAD_IF4]] ]
4745
; CHECK-NEXT: [[TMP14:%.*]] = phi i32 [ poison, [[PRED_LOAD_CONTINUE]] ], [ [[TMP12]], [[PRED_LOAD_IF4]] ]
4846
; CHECK-NEXT: [[TMP15:%.*]] = tail call i32 @llvm.smax.i32(i32 [[TMP8]], i32 [[VEC_PHI]])
4947
; CHECK-NEXT: [[TMP16:%.*]] = tail call i32 @llvm.smax.i32(i32 [[TMP14]], i32 [[VEC_PHI3]])

llvm/test/Transforms/LoopVectorize/AArch64/tail-folding-styles.ll

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -119,21 +119,29 @@ define void @simple_memset_tailfold(i32 %val, ptr %ptr, i64 %n) "target-features
119119
; DATA_NO_LANEMASK-NEXT: [[TRIP_COUNT_MINUS_1:%.*]] = sub i64 [[UMAX]], 1
120120
; DATA_NO_LANEMASK-NEXT: [[TMP15:%.*]] = call i64 @llvm.vscale.i64()
121121
; DATA_NO_LANEMASK-NEXT: [[TMP16:%.*]] = mul i64 [[TMP15]], 4
122-
; DATA_NO_LANEMASK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 4 x i64> poison, i64 [[TRIP_COUNT_MINUS_1]], i64 0
122+
; DATA_NO_LANEMASK-NEXT: [[TMP11:%.*]] = call i64 @llvm.vscale.i64()
123+
; DATA_NO_LANEMASK-NEXT: [[TMP12:%.*]] = mul i64 [[TMP11]], 4
124+
; DATA_NO_LANEMASK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <vscale x 4 x i64> poison, i64 [[TMP12]], i64 0
123125
; DATA_NO_LANEMASK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <vscale x 4 x i64> [[BROADCAST_SPLATINSERT]], <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
126+
; DATA_NO_LANEMASK-NEXT: [[TMP13:%.*]] = call <vscale x 4 x i64> @llvm.experimental.stepvector.nxv4i64()
127+
; DATA_NO_LANEMASK-NEXT: [[TMP14:%.*]] = add <vscale x 4 x i64> [[TMP13]], zeroinitializer
128+
; DATA_NO_LANEMASK-NEXT: [[TMP22:%.*]] = mul <vscale x 4 x i64> [[TMP14]], shufflevector (<vscale x 4 x i64> insertelement (<vscale x 4 x i64> poison, i64 1, i64 0), <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer)
129+
; DATA_NO_LANEMASK-NEXT: [[INDUCTION:%.*]] = add <vscale x 4 x i64> zeroinitializer, [[TMP22]]
130+
; DATA_NO_LANEMASK-NEXT: [[BROADCAST_SPLATINSERT1:%.*]] = insertelement <vscale x 4 x i64> poison, i64 [[TRIP_COUNT_MINUS_1]], i64 0
131+
; DATA_NO_LANEMASK-NEXT: [[BROADCAST_SPLAT1:%.*]] = shufflevector <vscale x 4 x i64> [[BROADCAST_SPLATINSERT1]], <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
124132
; DATA_NO_LANEMASK-NEXT: [[BROADCAST_SPLATINSERT4:%.*]] = insertelement <vscale x 4 x i32> poison, i32 [[VAL:%.*]], i64 0
125133
; DATA_NO_LANEMASK-NEXT: [[BROADCAST_SPLAT5:%.*]] = shufflevector <vscale x 4 x i32> [[BROADCAST_SPLATINSERT4]], <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
126134
; DATA_NO_LANEMASK-NEXT: br label [[VECTOR_BODY:%.*]]
127135
; DATA_NO_LANEMASK: vector.body:
128136
; DATA_NO_LANEMASK-NEXT: [[INDEX1:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT4:%.*]], [[VECTOR_BODY]] ]
129137
; DATA_NO_LANEMASK-NEXT: [[VEC_IND:%.*]] = phi <vscale x 4 x i64> [ [[INDUCTION]], [[VECTOR_PH]] ], [ [[TMP20:%.*]], [[VECTOR_BODY]] ]
130-
; DATA_NO_LANEMASK-NEXT: [[TMP16:%.*]] = add i64 [[INDEX1]], 0
131-
; DATA_NO_LANEMASK-NEXT: [[TMP17:%.*]] = icmp ule <vscale x 4 x i64> [[VEC_IND]], [[BROADCAST_SPLAT]]
132-
; DATA_NO_LANEMASK-NEXT: [[TMP18:%.*]] = getelementptr i32, ptr [[PTR:%.*]], i64 [[TMP16]]
138+
; DATA_NO_LANEMASK-NEXT: [[TMP23:%.*]] = add i64 [[INDEX1]], 0
139+
; DATA_NO_LANEMASK-NEXT: [[TMP17:%.*]] = icmp ule <vscale x 4 x i64> [[VEC_IND]], [[BROADCAST_SPLAT1]]
140+
; DATA_NO_LANEMASK-NEXT: [[TMP18:%.*]] = getelementptr i32, ptr [[PTR:%.*]], i64 [[TMP23]]
133141
; DATA_NO_LANEMASK-NEXT: [[TMP19:%.*]] = getelementptr i32, ptr [[TMP18]], i32 0
134-
; DATA_NO_LANEMASK-NEXT: call void @llvm.masked.store.nxv4i32.p0(<vscale x 4 x i32> [[BROADCAST_SPLAT3]], ptr [[TMP19]], i32 4, <vscale x 4 x i1> [[TMP17]])
135-
; DATA_NO_LANEMASK-NEXT: [[INDEX_NEXT4]] = add i64 [[INDEX1]], [[TMP10]]
136-
; DATA_NO_LANEMASK-NEXT: [[TMP20]] = add <vscale x 4 x i64> [[VEC_IND]], [[WIDEN_VFXUF_SPLAT]]
142+
; DATA_NO_LANEMASK-NEXT: call void @llvm.masked.store.nxv4i32.p0(<vscale x 4 x i32> [[BROADCAST_SPLAT5]], ptr [[TMP19]], i32 4, <vscale x 4 x i1> [[TMP17]])
143+
; DATA_NO_LANEMASK-NEXT: [[INDEX_NEXT4]] = add i64 [[INDEX1]], [[TMP16]]
144+
; DATA_NO_LANEMASK-NEXT: [[TMP20]] = add <vscale x 4 x i64> [[VEC_IND]], [[BROADCAST_SPLAT]]
137145
; DATA_NO_LANEMASK-NEXT: [[TMP21:%.*]] = icmp eq i64 [[INDEX_NEXT4]], [[N_VEC]]
138146
; DATA_NO_LANEMASK-NEXT: br i1 [[TMP21]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
139147
; DATA_NO_LANEMASK: middle.block:

0 commit comments

Comments
 (0)