diff options
author | Juan Manuel MARTINEZ CAAMAÑO <juamarti@amd.com> | 2023-07-19 09:37:42 +0200 |
---|---|---|
committer | Juan Manuel MARTINEZ CAAMAÑO <juamarti@amd.com> | 2023-07-19 09:54:53 +0200 |
commit | 4e43ba25998075c5facd98675e75268e72259d71 (patch) | |
tree | 44639bcf6d02c0a668f6ebefc7aa43ff8983920c | |
parent | fcbafc066cc56e7dbb61929962d942288432242d (diff) | |
download | llvm-4e43ba25998075c5facd98675e75268e72259d71.zip llvm-4e43ba25998075c5facd98675e75268e72259d71.tar.gz llvm-4e43ba25998075c5facd98675e75268e72259d71.tar.bz2 |
[NFC][AMDGPULowerModuleLDSPass] Use shorter APIs in markUsedByKernel
* Use shorter versions of the LLVM API
Reviewed By: JonChesterfield
Differential Revision: https://reviews.llvm.org/D155589
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp b/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp index c766f97..e3a6459 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp @@ -270,8 +270,7 @@ class AMDGPULowerModuleLDS : public ModulePass { LocalVar->removeDeadConstantUsers(); } - static void markUsedByKernel(IRBuilder<> &Builder, Function *Func, - GlobalVariable *SGV) { + static void markUsedByKernel(Function *Func, GlobalVariable *SGV) { // The llvm.amdgcn.module.lds instance is implicitly used by all kernels // that might call a function which accesses a field within it. This is // presently approximated to 'all kernels' if there are any such functions @@ -292,22 +291,16 @@ class AMDGPULowerModuleLDS : public ModulePass { // equivalent target specific intrinsic which lasts until immediately after // codegen would suffice for that, but one would still need to ensure that // the variables are allocated in the anticpated order. - - LLVMContext &Ctx = Func->getContext(); - - Builder.SetInsertPoint(Func->getEntryBlock().getFirstNonPHI()); - - FunctionType *FTy = FunctionType::get(Type::getVoidTy(Ctx), {}); + IRBuilder<> Builder(Func->getEntryBlock().getFirstNonPHI()); Function *Decl = Intrinsic::getDeclaration(Func->getParent(), Intrinsic::donothing, {}); - Value *UseInstance[1] = {Builder.CreateInBoundsGEP( - SGV->getValueType(), SGV, ConstantInt::get(Type::getInt32Ty(Ctx), 0))}; + Value *UseInstance[1] = { + Builder.CreateConstInBoundsGEP1_32(SGV->getValueType(), SGV, 0)}; - Builder.CreateCall(FTy, Decl, {}, - {OperandBundleDefT<Value *>("ExplicitUse", UseInstance)}, - ""); + Builder.CreateCall( + Decl, {}, {OperandBundleDefT<Value *>("ExplicitUse", UseInstance)}); } static bool eliminateConstantExprUsesOfLDSFromAllInstructions(Module &M) { @@ -884,8 +877,6 @@ public: // allocate the module scope variable, otherwise leave them unchanged // Record on each kernel whether the module scope global is used by it - IRBuilder<> Builder(Ctx); - for (Function &Func : M.functions()) { if (Func.isDeclaration() || !isKernelLDS(&Func)) continue; @@ -901,7 +892,7 @@ public: return F == &Func; }); - markUsedByKernel(Builder, &Func, ModuleScopeReplacement.SGV); + markUsedByKernel(&Func, ModuleScopeReplacement.SGV); } } @@ -917,7 +908,6 @@ public: // Create a struct for each kernel for the non-module-scope variables. - IRBuilder<> Builder(M.getContext()); DenseMap<Function *, LDSVariableReplacement> KernelToReplacement; for (Function &Func : M.functions()) { if (Func.isDeclaration() || !isKernelLDS(&Func)) @@ -976,7 +966,7 @@ public: auto Accesses = LDSUsesInfo.indirect_access.find(&Func); if ((Accesses != LDSUsesInfo.indirect_access.end()) && !Accesses->second.empty()) - markUsedByKernel(Builder, &Func, Replacement.SGV); + markUsedByKernel(&Func, Replacement.SGV); // remove preserves existing codegen removeLocalVarsFromUsedLists(M, KernelUsedVariables); @@ -1065,7 +1055,7 @@ public: KernelToCreatedDynamicLDS[func] = N; - markUsedByKernel(Builder, func, N); + markUsedByKernel(func, N); auto emptyCharArray = ArrayType::get(Type::getInt8Ty(Ctx), 0); auto GEP = ConstantExpr::getGetElementPtr( |