@@ -2426,7 +2426,7 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
2426
2426
// Prepare for the vector type of the interleaved load/store.
2427
2427
Type *ScalarTy = getLoadStoreType (Instr);
2428
2428
unsigned InterleaveFactor = Group->getFactor ();
2429
- auto *VecTy = VectorType::get (ScalarTy, VF * InterleaveFactor);
2429
+ auto *VecTy = VectorType::get (ScalarTy, State. VF * InterleaveFactor);
2430
2430
2431
2431
// Prepare for the new pointers.
2432
2432
SmallVector<Value *, 2 > AddrParts;
@@ -2444,7 +2444,7 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
2444
2444
// uniform instructions, we're only required to generate a value for the
2445
2445
// first vector lane in each unroll iteration.
2446
2446
if (Group->isReverse ()) {
2447
- Value *RuntimeVF = getRuntimeVF (Builder, Builder.getInt32Ty (), VF);
2447
+ Value *RuntimeVF = getRuntimeVF (Builder, Builder.getInt32Ty (), State. VF );
2448
2448
Idx = Builder.CreateSub (RuntimeVF, Builder.getInt32 (1 ));
2449
2449
Idx = Builder.CreateMul (Idx, Builder.getInt32 (Group->getFactor ()));
2450
2450
Idx = Builder.CreateAdd (Idx, Builder.getInt32 (Index));
@@ -2481,14 +2481,14 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
2481
2481
2482
2482
auto CreateGroupMask = [this , &BlockInMask, &State, &InterleaveFactor](
2483
2483
unsigned Part, Value *MaskForGaps) -> Value * {
2484
- if (VF.isScalable ()) {
2484
+ if (State. VF .isScalable ()) {
2485
2485
assert (!MaskForGaps && " Interleaved groups with gaps are not supported." );
2486
2486
assert (InterleaveFactor == 2 &&
2487
2487
" Unsupported deinterleave factor for scalable vectors" );
2488
2488
auto *BlockInMaskPart = State.get (BlockInMask, Part);
2489
2489
SmallVector<Value *, 2 > Ops = {BlockInMaskPart, BlockInMaskPart};
2490
- auto *MaskTy =
2491
- VectorType::get (Builder. getInt1Ty (), VF.getKnownMinValue () * 2 , true );
2490
+ auto *MaskTy = VectorType::get (Builder. getInt1Ty (),
2491
+ State. VF .getKnownMinValue () * 2 , true );
2492
2492
return Builder.CreateIntrinsic (MaskTy, Intrinsic::vector_interleave2, Ops,
2493
2493
/* FMFSource=*/ nullptr , " interleaved.mask" );
2494
2494
}
@@ -2499,7 +2499,7 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
2499
2499
Value *BlockInMaskPart = State.get (BlockInMask, Part);
2500
2500
Value *ShuffledMask = Builder.CreateShuffleVector (
2501
2501
BlockInMaskPart,
2502
- createReplicatedMask (InterleaveFactor, VF.getKnownMinValue ()),
2502
+ createReplicatedMask (InterleaveFactor, State. VF .getKnownMinValue ()),
2503
2503
" interleaved.mask" );
2504
2504
return MaskForGaps ? Builder.CreateBinOp (Instruction::And, ShuffledMask,
2505
2505
MaskForGaps)
@@ -2511,7 +2511,7 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
2511
2511
Value *MaskForGaps = nullptr ;
2512
2512
if (NeedsMaskForGaps) {
2513
2513
MaskForGaps =
2514
- createBitMaskForGaps (Builder, VF.getKnownMinValue (), *Group);
2514
+ createBitMaskForGaps (Builder, State. VF .getKnownMinValue (), *Group);
2515
2515
assert (MaskForGaps && " Mask for Gaps is required but it is null" );
2516
2516
}
2517
2517
@@ -2554,7 +2554,7 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
2554
2554
Value *StridedVec = Builder.CreateExtractValue (DI, I);
2555
2555
// If this member has different type, cast the result type.
2556
2556
if (Member->getType () != ScalarTy) {
2557
- VectorType *OtherVTy = VectorType::get (Member->getType (), VF);
2557
+ VectorType *OtherVTy = VectorType::get (Member->getType (), State. VF );
2558
2558
StridedVec = createBitOrPointerCast (StridedVec, OtherVTy, DL);
2559
2559
}
2560
2560
@@ -2580,15 +2580,15 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
2580
2580
continue ;
2581
2581
2582
2582
auto StrideMask =
2583
- createStrideMask (I, InterleaveFactor, VF.getKnownMinValue ());
2583
+ createStrideMask (I, InterleaveFactor, State. VF .getKnownMinValue ());
2584
2584
for (unsigned Part = 0 ; Part < State.UF ; Part++) {
2585
2585
Value *StridedVec = Builder.CreateShuffleVector (
2586
2586
NewLoads[Part], StrideMask, " strided.vec" );
2587
2587
2588
2588
// If this member has different type, cast the result type.
2589
2589
if (Member->getType () != ScalarTy) {
2590
- assert (!VF.isScalable () && " VF is assumed to be non scalable." );
2591
- VectorType *OtherVTy = VectorType::get (Member->getType (), VF);
2590
+ assert (!State. VF .isScalable () && " VF is assumed to be non scalable." );
2591
+ VectorType *OtherVTy = VectorType::get (Member->getType (), State. VF );
2592
2592
StridedVec = createBitOrPointerCast (StridedVec, OtherVTy, DL);
2593
2593
}
2594
2594
@@ -2603,14 +2603,14 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
2603
2603
}
2604
2604
2605
2605
// The sub vector type for current instruction.
2606
- auto *SubVT = VectorType::get (ScalarTy, VF);
2606
+ auto *SubVT = VectorType::get (ScalarTy, State. VF );
2607
2607
2608
2608
// Vectorize the interleaved store group.
2609
2609
Value *MaskForGaps =
2610
- createBitMaskForGaps (Builder, VF.getKnownMinValue (), *Group);
2610
+ createBitMaskForGaps (Builder, State. VF .getKnownMinValue (), *Group);
2611
2611
assert ((!MaskForGaps || useMaskedInterleavedAccesses (*TTI)) &&
2612
2612
" masked interleaved groups are not allowed." );
2613
- assert ((!MaskForGaps || !VF.isScalable ()) &&
2613
+ assert ((!MaskForGaps || !State. VF .isScalable ()) &&
2614
2614
" masking gaps for scalable vectors is not yet supported." );
2615
2615
for (unsigned Part = 0 ; Part < State.UF ; Part++) {
2616
2616
// Collect the stored vector from each member.
0 commit comments