Skip to content

Commit 37f35ba

Browse files
ViacheslavRbigcbot
authored andcommitted
Reduce usage of pointer element types (16).
This change replaces calls to getNonOpaquePtrEltTy with element type information got through other means. This change is part of the effort to support opaque pointers in newer LLVM versions.
1 parent 07f9bcb commit 37f35ba

File tree

6 files changed

+33
-8
lines changed

6 files changed

+33
-8
lines changed

IGC/AdaptorCommon/TypesLegalizationPass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ TypesLegalizationPass::ResolveValue( Instruction *ip,Value *val,SmallVector<unsi
236236
auto alignment = IGCLLVM::getAlignmentValue(ld);
237237
unsigned pointerTypeSize = ld->getType()->getScalarSizeInBits() / 8;
238238
if ( alignment && (alignment_t)pointerTypeSize == alignment )
239-
return builder.CreateAlignedLoad( gep, IGCLLVM::getAlign(alignment) );
239+
return builder.CreateAlignedLoad(ld->getType(), gep, IGCLLVM::getAlign(alignment) );
240240
return builder.CreateLoad( gep );
241241
}
242242
else if(Constant *c = dyn_cast<Constant>(val)) {

IGC/Compiler/CISACodeGen/ConstantCoalescing.hpp

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,18 +139,42 @@ namespace IGC
139139
return val;
140140
}
141141

142+
LoadInst* CreateLoad(Type* Ty, Value* Ptr, const char* Name) {
143+
LoadInst* val = IGCIRBuilder<>::CreateLoad(Ty, Ptr, Name);
144+
m_TT->RegisterNewValueAndAssignID(val);
145+
return val;
146+
}
147+
// This wrapper function is deprecated because it uses typed pointer and
148+
// should no longer be used in LLVM 14+ compatible code.
142149
LoadInst* CreateLoad(Value* Ptr, const char* Name) {
143-
LoadInst* val = IGCIRBuilder<>::CreateLoad(Ptr, Name);
150+
llvm::Type* ptrType = IGCLLVM::getNonOpaquePtrEltTy(Ptr->getType());
151+
LoadInst* val = IGCIRBuilder<>::CreateLoad(ptrType, Ptr, Name);
144152
m_TT->RegisterNewValueAndAssignID(val);
145153
return val;
146154
}
155+
LoadInst* CreateLoad(Type* Ty, Value* Ptr, const Twine& Name = "") {
156+
LoadInst* val = IGCIRBuilder<>::CreateLoad(Ty, Ptr, Name);
157+
m_TT->RegisterNewValueAndAssignID(val);
158+
return val;
159+
}
160+
// This wrapper function is deprecated because it uses typed pointer and
161+
// should no longer be used in LLVM 14+ compatible code.
147162
LoadInst* CreateLoad(Value* Ptr, const Twine& Name = "") {
148-
LoadInst* val = IGCIRBuilder<>::CreateLoad(Ptr, Name);
163+
llvm::Type* ptrType = IGCLLVM::getNonOpaquePtrEltTy(Ptr->getType());
164+
LoadInst* val = IGCIRBuilder<>::CreateLoad(ptrType, Ptr, Name);
165+
m_TT->RegisterNewValueAndAssignID(val);
166+
return val;
167+
}
168+
LoadInst* CreateLoad(Type* Ty, Value* Ptr, bool isVolatile, const Twine& Name = "") {
169+
LoadInst* val = IGCIRBuilder<>::CreateLoad(Ty, Ptr, isVolatile, Name);
149170
m_TT->RegisterNewValueAndAssignID(val);
150171
return val;
151172
}
173+
// This wrapper function is deprecated because it uses typed pointer and
174+
// should no longer be used in LLVM 14+ compatible code.
152175
LoadInst* CreateLoad(Value* Ptr, bool isVolatile, const Twine& Name = "") {
153-
LoadInst* val = IGCIRBuilder<>::CreateLoad(Ptr, isVolatile, Name);
176+
llvm::Type* ptrType = IGCLLVM::getNonOpaquePtrEltTy(Ptr->getType());
177+
LoadInst* val = IGCIRBuilder<>::CreateLoad(ptrType, Ptr, isVolatile, Name);
154178
m_TT->RegisterNewValueAndAssignID(val);
155179
return val;
156180
}

IGC/Compiler/Optimizer/BuiltInFuncImport.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -885,8 +885,9 @@ bool BIImport::runOnModule(Module& M)
885885
}
886886

887887
IGCLLVM::IRBuilder<> builder(CI);
888+
IGC_ASSERT(CI->paramHasAttr(0, llvm::Attribute::ByVal));
888889
// Load function address from the table index
889-
Value* FP = builder.CreateGEP(FPTablePtr, builder.getInt32(tableIndex));
890+
Value* FP = builder.CreateGEP(CI->getParamByValType(0), FPTablePtr, builder.getInt32(tableIndex));
890891
FP = builder.CreateLoad(cast<llvm::GetElementPtrInst>(FP)->getResultElementType(), FP);
891892
IGC_ASSERT(FP->getType()->isPointerTy());
892893
// Call the loaded function address

IGC/Compiler/Optimizer/OpenCLPasses/PrivateMemory/PrivateMemoryResolution.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ void TransposePrivMem::handleStoreInst(StoreInst* pStore, Value* pScalarizedIdx)
802802
}
803803

804804
Value* addrInElt = convertToPtr(IRB, m_DL, addr, pStore->getPointerOperandType());
805-
Value* gep = IRB.CreateGEP(addrInElt, eltIx, VALUE_NAME(pStore->getName() + ".SOAPrivMemGEP"));
805+
Value* gep = IRB.CreateGEP(pStore->getValueOperand()->getType(), addrInElt, eltIx, VALUE_NAME(pStore->getName() + ".SOAPrivMemGEP"));
806806
IRB.CreateAlignedStore(pStore->getValueOperand(), gep, IGCLLVM::getAlign(*pStore));
807807

808808
pStore->eraseFromParent();

IGC/Compiler/Optimizer/OpenCLPasses/PrivateMemory/PrivateMemoryToSLM.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ namespace IGC
344344
VALUE_NAME(pAI->getName() + ".totalOffset"));
345345

346346
Value* cast = ConstantExpr::getAddrSpaceCast(slmVar, pAI->getType());
347-
Value* ptr = builder.CreateGEP(cast, totalOffset);
347+
Value* ptr = builder.CreateGEP(pAI->getAllocatedType(), cast, totalOffset);
348348

349349
pAI->replaceAllUsesWith(ptr);
350350
pAI->eraseFromParent();

IGC/VectorCompiler/lib/GenXCodeGen/GenXGASDynamicResolution.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ void GenXGASDynamicResolution::visitLoadInst(LoadInst &LdI) const {
263263
if (!CanLocalBeGeneric) {
264264
IGCLLVM::IRBuilder<> Builder{&LdI};
265265
auto GlobalPtrOp = createASCast(Builder, PtrOp, vc::AddrSpace::Global);
266-
auto NewInst = Builder.CreateAlignedLoad(GlobalPtrOp, IGCLLVM::getAlign(LdI),
266+
auto NewInst = Builder.CreateAlignedLoad(LdI.getType(), GlobalPtrOp, IGCLLVM::getAlign(LdI),
267267
LdI.isVolatile(), "globalOrPrivateLoad");
268268
LdI.replaceAllUsesWith(NewInst);
269269
LdI.eraseFromParent();

0 commit comments

Comments
 (0)