Lines Matching refs:LI
80 bool canWidenScalarExtLoad(LoadInst &LI) const;
81 bool visitLoadInst(LoadInst &LI);
113 bool AMDGPULateCodeGenPrepare::canWidenScalarExtLoad(LoadInst &LI) const { in canWidenScalarExtLoad()
114 unsigned AS = LI.getPointerAddressSpace(); in canWidenScalarExtLoad()
120 if (!LI.isSimple()) in canWidenScalarExtLoad()
122 auto *Ty = LI.getType(); in canWidenScalarExtLoad()
131 if (LI.getAlign() < DL->getABITypeAlign(Ty)) in canWidenScalarExtLoad()
134 return UA->isUniform(&LI); in canWidenScalarExtLoad()
137 bool AMDGPULateCodeGenPrepare::visitLoadInst(LoadInst &LI) { in visitLoadInst() argument
143 if (LI.getAlign() >= 4) in visitLoadInst()
146 if (!canWidenScalarExtLoad(LI)) in visitLoadInst()
151 GetPointerBaseWithConstantOffset(LI.getPointerOperand(), Offset, *DL); in visitLoadInst()
161 LI.setAlignment(Align(4)); in visitLoadInst()
165 IRBuilder<> IRB(&LI); in visitLoadInst()
166 IRB.SetCurrentDebugLocation(LI.getDebugLoc()); in visitLoadInst()
168 unsigned LdBits = DL->getTypeStoreSizeInBits(LI.getType()); in visitLoadInst()
169 auto IntNTy = Type::getIntNTy(LI.getContext(), LdBits); in visitLoadInst()
173 IRB.CreateAddrSpaceCast(Base, LI.getPointerOperand()->getType()), in visitLoadInst()
177 NewLd->copyMetadata(LI); in visitLoadInst()
182 IRB.CreateTrunc(IRB.CreateLShr(NewLd, ShAmt), IntNTy), LI.getType()); in visitLoadInst()
183 LI.replaceAllUsesWith(NewVal); in visitLoadInst()
184 RecursivelyDeleteTriviallyDeadInstructions(&LI); in visitLoadInst()