Skip to content

Commit 408cc94

Browse files
committed
[LV][LSV][SLP] Drop some typed pointer bitcasts
Differential Revision: https://reviews.llvm.org/D156736
1 parent fd05c34 commit 408cc94

File tree

3 files changed

+14
-25
lines changed

3 files changed

+14
-25
lines changed

llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -900,9 +900,9 @@ bool Vectorizer::vectorizeChain(Chain &C) {
900900

901901
// Chain is in offset order, so C[0] is the instr with the lowest offset,
902902
// i.e. the root of the vector.
903-
Value *Bitcast = Builder.CreateBitCast(
904-
getLoadStorePointerOperand(C[0].Inst), VecTy->getPointerTo(AS));
905-
VecInst = Builder.CreateAlignedLoad(VecTy, Bitcast, Alignment);
903+
VecInst = Builder.CreateAlignedLoad(VecTy,
904+
getLoadStorePointerOperand(C[0].Inst),
905+
Alignment);
906906

907907
unsigned VecIdx = 0;
908908
for (const ChainElem &E : C) {
@@ -976,8 +976,7 @@ bool Vectorizer::vectorizeChain(Chain &C) {
976976
// i.e. the root of the vector.
977977
VecInst = Builder.CreateAlignedStore(
978978
Vec,
979-
Builder.CreateBitCast(getLoadStorePointerOperand(C[0].Inst),
980-
VecTy->getPointerTo(AS)),
979+
getLoadStorePointerOperand(C[0].Inst),
981980
Alignment);
982981
}
983982

llvm/lib/Transforms/Vectorize/LoopVectorize.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2630,11 +2630,7 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
26302630
if (auto *gep = dyn_cast<GetElementPtrInst>(AddrPart->stripPointerCasts()))
26312631
InBounds = gep->isInBounds();
26322632
AddrPart = Builder.CreateGEP(ScalarTy, AddrPart, Idx, "", InBounds);
2633-
2634-
// Cast to the vector pointer type.
2635-
unsigned AddressSpace = AddrPart->getType()->getPointerAddressSpace();
2636-
Type *PtrTy = VecTy->getPointerTo(AddressSpace);
2637-
AddrParts.push_back(Builder.CreateBitCast(AddrPart, PtrTy));
2633+
AddrParts.push_back(AddrPart);
26382634
}
26392635

26402636
State.setDebugLocFromInst(Instr);

llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10256,8 +10256,7 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
1025610256
case Instruction::ExtractValue: {
1025710257
auto *LI = cast<LoadInst>(E->getSingleOperand(0));
1025810258
Builder.SetInsertPoint(LI);
10259-
auto *PtrTy = PointerType::get(VecTy, LI->getPointerAddressSpace());
10260-
Value *Ptr = Builder.CreateBitCast(LI->getOperand(0), PtrTy);
10259+
Value *Ptr = LI->getPointerOperand();
1026110260
LoadInst *V = Builder.CreateAlignedLoad(VecTy, Ptr, LI->getAlign());
1026210261
Value *NewV = propagateMetadata(V, E->Scalars);
1026310262
NewV = FinalShuffle(NewV, E);
@@ -10599,28 +10598,23 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
1059910598
}
1060010599
case Instruction::Store: {
1060110600
auto *SI = cast<StoreInst>(VL0);
10602-
unsigned AS = SI->getPointerAddressSpace();
1060310601

1060410602
setInsertPointAfterBundle(E);
1060510603

1060610604
Value *VecValue = vectorizeOperand(E, 0);
1060710605
VecValue = FinalShuffle(VecValue, E);
1060810606

10609-
Value *ScalarPtr = SI->getPointerOperand();
10610-
Value *VecPtr = Builder.CreateBitCast(
10611-
ScalarPtr, VecValue->getType()->getPointerTo(AS));
10607+
Value *Ptr = SI->getPointerOperand();
1061210608
StoreInst *ST =
10613-
Builder.CreateAlignedStore(VecValue, VecPtr, SI->getAlign());
10609+
Builder.CreateAlignedStore(VecValue, Ptr, SI->getAlign());
1061410610

10615-
// The pointer operand uses an in-tree scalar, so add the new BitCast or
10616-
// StoreInst to ExternalUses to make sure that an extract will be
10617-
// generated in the future.
10618-
if (TreeEntry *Entry = getTreeEntry(ScalarPtr)) {
10611+
// The pointer operand uses an in-tree scalar, so add the new StoreInst to
10612+
// ExternalUses to make sure that an extract will be generated in the
10613+
// future.
10614+
if (TreeEntry *Entry = getTreeEntry(Ptr)) {
1061910615
// Find which lane we need to extract.
10620-
unsigned FoundLane = Entry->findLaneForValue(ScalarPtr);
10621-
ExternalUses.push_back(ExternalUser(
10622-
ScalarPtr, ScalarPtr != VecPtr ? cast<User>(VecPtr) : ST,
10623-
FoundLane));
10616+
unsigned FoundLane = Entry->findLaneForValue(Ptr);
10617+
ExternalUses.push_back(ExternalUser(Ptr, ST, FoundLane));
1062410618
}
1062510619

1062610620
Value *V = propagateMetadata(ST, E->Scalars);

0 commit comments

Comments
 (0)