[LV] Set imbounds flag using CreateGEP in VPWidenMemInst (NFC).
This avoids having to cast the result of the builder to GetElementPtrInst.
This commit is contained in:
parent
3a8f161a34
commit
af99aa0ff7
|
@ -9603,7 +9603,7 @@ void VPWidenMemoryInstructionRecipe::execute(VPTransformState &State) {
|
|||
|
||||
const auto CreateVecPtr = [&](unsigned Part, Value *Ptr) -> Value * {
|
||||
// Calculate the pointer for the specific unroll-part.
|
||||
GetElementPtrInst *PartPtr = nullptr;
|
||||
Value *PartPtr = nullptr;
|
||||
|
||||
// Use i32 for the gep index type when the value is constant,
|
||||
// or query DataLayout for a more suitable index type otherwise.
|
||||
|
@ -9627,20 +9627,15 @@ void VPWidenMemoryInstructionRecipe::execute(VPTransformState &State) {
|
|||
// LastLane = 1 - RunTimeVF
|
||||
Value *LastLane =
|
||||
Builder.CreateSub(ConstantInt::get(IndexTy, 1), RunTimeVF);
|
||||
PartPtr = Builder.CreateGEP(ScalarDataTy, Ptr, NumElt, "", InBounds);
|
||||
PartPtr =
|
||||
cast<GetElementPtrInst>(Builder.CreateGEP(ScalarDataTy, Ptr, NumElt));
|
||||
PartPtr->setIsInBounds(InBounds);
|
||||
PartPtr = cast<GetElementPtrInst>(
|
||||
Builder.CreateGEP(ScalarDataTy, PartPtr, LastLane));
|
||||
PartPtr->setIsInBounds(InBounds);
|
||||
Builder.CreateGEP(ScalarDataTy, PartPtr, LastLane, "", InBounds);
|
||||
if (isMaskRequired) // Reverse of a null all-one mask is a null mask.
|
||||
BlockInMaskParts[Part] =
|
||||
Builder.CreateVectorReverse(BlockInMaskParts[Part], "reverse");
|
||||
} else {
|
||||
Value *Increment = createStepForVF(Builder, IndexTy, State.VF, Part);
|
||||
PartPtr = cast<GetElementPtrInst>(
|
||||
Builder.CreateGEP(ScalarDataTy, Ptr, Increment));
|
||||
PartPtr->setIsInBounds(InBounds);
|
||||
PartPtr = Builder.CreateGEP(ScalarDataTy, Ptr, Increment, "", InBounds);
|
||||
}
|
||||
|
||||
unsigned AddressSpace = Ptr->getType()->getPointerAddressSpace();
|
||||
|
|
Loading…
Reference in New Issue
Block a user