From 6ec1fb70d5a28107fc572d966fe62e112f17cd38 Mon Sep 17 00:00:00 2001 From: Denis Bakhvalov Date: Fri, 16 Apr 2021 15:39:45 -0700 Subject: [PATCH 1/2] [ESIMD][NFC] Do not take type for CreateLoad from pointer --- llvm/lib/SYCLLowerIR/LowerESIMD.cpp | 3 +-- llvm/lib/SYCLLowerIR/LowerESIMDVLoadVStore.cpp | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) mode change 100755 => 100644 llvm/lib/SYCLLowerIR/LowerESIMDVLoadVStore.cpp diff --git a/llvm/lib/SYCLLowerIR/LowerESIMD.cpp b/llvm/lib/SYCLLowerIR/LowerESIMD.cpp index e018c70846ede..96cf3ddbfd1db 100644 --- a/llvm/lib/SYCLLowerIR/LowerESIMD.cpp +++ b/llvm/lib/SYCLLowerIR/LowerESIMD.cpp @@ -730,8 +730,7 @@ static bool translateVLoad(CallInst &CI, SmallPtrSet &GVTS) { if (GVTS.find(CI.getType()) != GVTS.end()) return false; IRBuilder<> Builder(&CI); - auto *ElemT = CI.getArgOperand(0)->getType()->getPointerElementType(); - auto LI = Builder.CreateLoad(ElemT, CI.getArgOperand(0), CI.getName()); + auto LI = Builder.CreateLoad(CI.getType(), CI.getArgOperand(0), CI.getName()); LI->setDebugLoc(CI.getDebugLoc()); CI.replaceAllUsesWith(LI); return true; diff --git a/llvm/lib/SYCLLowerIR/LowerESIMDVLoadVStore.cpp b/llvm/lib/SYCLLowerIR/LowerESIMDVLoadVStore.cpp old mode 100755 new mode 100644 index 54044490b0ee7..a3d795ec7a66f --- a/llvm/lib/SYCLLowerIR/LowerESIMDVLoadVStore.cpp +++ b/llvm/lib/SYCLLowerIR/LowerESIMDVLoadVStore.cpp @@ -89,8 +89,8 @@ PreservedAnalyses ESIMDLowerLoadStorePass::run(Function &F, if (GenXIntrinsic::isVStore(&Inst)) Builder.CreateStore(Inst.getOperand(0), Inst.getOperand(1)); else { - auto *ElemT = Inst.getOperand(0)->getType()->getPointerElementType(); - auto LI = Builder.CreateLoad(ElemT, Inst.getOperand(0), Inst.getName()); + auto LI = Builder.CreateLoad(Inst.getType(), Inst.getOperand(0), + Inst.getName()); LI->setDebugLoc(Inst.getDebugLoc()); Inst.replaceAllUsesWith(LI); } From 06ddf405cb1c98920791bf4ce05b423e3291a74b Mon Sep 17 00:00:00 2001 From: Denis Bakhvalov Date: Fri, 16 Apr 2021 15:54:51 -0700 Subject: [PATCH 2/2] Added fixes for LowerWGScope.cpp --- llvm/lib/SYCLLowerIR/LowerWGScope.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/llvm/lib/SYCLLowerIR/LowerWGScope.cpp b/llvm/lib/SYCLLowerIR/LowerWGScope.cpp index d43e2aa2d8bf1..9c44fd6044e8d 100644 --- a/llvm/lib/SYCLLowerIR/LowerWGScope.cpp +++ b/llvm/lib/SYCLLowerIR/LowerWGScope.cpp @@ -303,8 +303,7 @@ shareOutputViaLocalMem(Instruction &I, BasicBlock &BBa, BasicBlock &BBb, Bld.CreateStore(&I, WGLocal); // 3) Generate a load in the "worker" BB of the value stored by the leader Bld.SetInsertPoint(&BBb.front()); - auto *WGValT = WGLocal->getType()->getPointerElementType(); - auto *WGVal = Bld.CreateLoad(WGValT, WGLocal, "wg_val_" + Twine(I.getName())); + auto *WGVal = Bld.CreateLoad(T, WGLocal, "wg_val_" + Twine(I.getName())); // 4) Finally, replace usages of I outside the scope for (auto *U : Users) U->replaceUsesOfWith(&I, WGVal); @@ -417,8 +416,7 @@ static void copyBetweenPrivateAndShadow(Value *L, GlobalVariable *Shadow, if (!Loc2Shadow) std::swap(Src, Dst); - auto *SrcT = Src->getType()->getPointerElementType(); - Value *LocalVal = Builder.CreateLoad(SrcT, Src, "mat_ld"); + Value *LocalVal = Builder.CreateLoad(T, Src, "mat_ld"); Builder.CreateStore(LocalVal, Dst); } }