[PATCH] D35146: AMDGPU : Widen extending scalar loads to 32-bits
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 10 09:08:17 PDT 2017
arsenm added a comment.
Needs tests
================
Comment at: lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp:448
+bool AMDGPUCodeGenPrepare::visitLoadInst(LoadInst &I) {
+ bool Changed = false;
+
----------------
There's no point to having this since you never set it to anything else
================
Comment at: lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp:453
+
+ if (!VT && needsPromotionToI32(I.getType()) && DA->isUniform(&I) &&
+ I.getPointerAddressSpace() == AMDGPUASI.CONSTANT_ADDRESS) {
----------------
Ideally this would handle vectors like <2 x i8>
================
Comment at: lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp:454
+ if (!VT && needsPromotionToI32(I.getType()) && DA->isUniform(&I) &&
+ I.getPointerAddressSpace() == AMDGPUASI.CONSTANT_ADDRESS) {
+ IRBuilder<> Builder(&I);
----------------
The address space check should be first
================
Comment at: lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp:458
+
+ Type *I32Ty = getI32Ty(Builder, I.getType());
+ Type *PT = PointerType::get(I32Ty, I.getPointerAddressSpace());
----------------
The builder already has a getInt32Ty
================
Comment at: lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp:460
+ Type *PT = PointerType::get(I32Ty, I.getPointerAddressSpace());
+ Value *BitCast= Builder.CreateBitCast(I.getOperand(0), PT);
+ Value *WidenLoad = Builder.CreateLoad(BitCast, PT);
----------------
I.getPointerOperand
================
Comment at: lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp:468
+ }
+
+ return Changed;
----------------
This should also skip volatile loads
Repository:
rL LLVM
https://reviews.llvm.org/D35146
More information about the llvm-commits
mailing list