Lines Matching defs:AddrMode
3054 /// This is an extended version of TargetLowering::AddrMode
3056 struct ExtAddrMode : public TargetLowering::AddrMode {
3114 // An AddrMode is trivial if it involves no calculation i.e. it is just a base
3117 // An AddrMode is (BaseGV + BaseReg + BaseOffs + ScaleReg * Scale) so it is
3752 ExtAddrMode &AddrMode;
3787 AccessTy(AT), AddrSpace(AS), MemoryInst(MI), AddrMode(AM),
4096 /// Get the combined AddrMode
4099 /// Add a new AddrMode if it's compatible with the AddrModes we already
4161 // A single AddrMode can trivially be combined.
4485 /// Return true and update AddrMode if this addr mode is legal for the target,
4500 if (AddrMode.Scale != 0 && AddrMode.ScaledReg != ScaleReg)
4503 ExtAddrMode TestAddrMode = AddrMode;
4515 AddrMode = TestAddrMode;
4517 // Okay, we decided that we can add ScaleReg+Scale to AddrMode. Check now
4534 AddrMode = TestAddrMode;
4538 TestAddrMode = AddrMode;
4576 if (AddrMode.BaseOffs) {
4585 APInt Offset = Step * AddrMode.Scale;
4596 AddrMode = TestAddrMode;
4600 TestAddrMode = AddrMode;
5089 /// true, otherwise return false without modifying AddrMode.
5142 ExtAddrMode BackupAddrMode = AddrMode;
5157 AddrMode.InBounds = false;
5163 AddrMode = BackupAddrMode;
5174 AddrMode = BackupAddrMode;
5185 AddrMode.InBounds = false;
5238 AddrMode.BaseOffs += ConstantOffset;
5241 AddrMode.InBounds = false;
5244 AddrMode.BaseOffs -= ConstantOffset;
5272 ExtAddrMode BackupAddrMode = AddrMode;
5276 AddrMode.BaseOffs += ConstantOffset;
5278 AddrMode.InBounds = false;
5283 if (AddrMode.HasBaseReg) {
5284 AddrMode = BackupAddrMode;
5288 AddrMode.HasBaseReg = true;
5289 AddrMode.BaseReg = AddrInst->getOperand(0);
5297 AddrMode = BackupAddrMode;
5299 if (AddrMode.HasBaseReg)
5301 AddrMode.HasBaseReg = true;
5302 AddrMode.BaseReg = AddrInst->getOperand(0);
5303 AddrMode.BaseOffs += ConstantOffset;
5307 AddrMode = BackupAddrMode;
5351 ExtAddrMode BackupAddrMode = AddrMode;
5362 AddrMode = BackupAddrMode;
5384 /// If Addr can't be added to AddrMode this returns false and leaves AddrMode
5396 AddrMode.BaseOffs += CI->getSExtValue();
5397 if (TLI.isLegalAddressingMode(DL, AddrMode, AccessTy, AddrSpace))
5399 AddrMode.BaseOffs -= CI->getSExtValue();
5403 if (!AddrMode.BaseGV) {
5404 AddrMode.BaseGV = GV;
5405 if (TLI.isLegalAddressingMode(DL, AddrMode, AccessTy, AddrSpace))
5407 AddrMode.BaseGV = nullptr;
5410 ExtAddrMode BackupAddrMode = AddrMode;
5424 isProfitableToFoldIntoAddressingMode(I, BackupAddrMode, AddrMode)) {
5430 AddrMode = BackupAddrMode;
5444 if (!AddrMode.HasBaseReg) {
5445 AddrMode.HasBaseReg = true;
5446 AddrMode.BaseReg = Addr;
5448 if (TLI.isLegalAddressingMode(DL, AddrMode, AccessTy, AddrSpace))
5450 AddrMode.HasBaseReg = false;
5451 AddrMode.BaseReg = nullptr;
5455 if (AddrMode.Scale == 0) {
5456 AddrMode.Scale = 1;
5457 AddrMode.ScaledReg = Addr;
5458 if (TLI.isLegalAddressingMode(DL, AddrMode, AccessTy, AddrSpace))
5460 AddrMode.Scale = 0;
5461 AddrMode.ScaledReg = nullptr;
5829 // Get the combined AddrMode (or the only AddrMode, if we only had one).
5830 ExtAddrMode AddrMode = AddrModes.getAddrMode();
5839 LLVM_DEBUG(dbgs() << "CGP: Found local addrmode: " << AddrMode
5860 LLVM_DEBUG(dbgs() << "CGP: Reusing nonlocal addrmode: " << AddrMode
5881 LLVM_DEBUG(dbgs() << "CGP: SINKING nonlocal addrmode: " << AddrMode
5886 if (AddrMode.BaseReg && AddrMode.BaseReg->getType()->isPointerTy()) {
5887 ResultPtr = AddrMode.BaseReg;
5888 AddrMode.BaseReg = nullptr;
5891 if (AddrMode.Scale && AddrMode.ScaledReg->getType()->isPointerTy()) {
5894 if (ResultPtr || AddrMode.Scale != 1)
5897 ResultPtr = AddrMode.ScaledReg;
5898 AddrMode.Scale = 0;
5904 // the AddrMode was created we need to bail out gracefully if widths
5908 if (AddrMode.Scale) {
5909 Type *ScaledRegTy = AddrMode.ScaledReg->getType();
5915 GlobalValue *BaseGV = AddrMode.BaseGV;
5931 if (!ResultPtr && AddrMode.BaseReg) {
5932 ResultPtr = Builder.CreateIntToPtr(AddrMode.BaseReg, Addr->getType(),
5934 AddrMode.BaseReg = nullptr;
5935 } else if (!ResultPtr && AddrMode.Scale == 1) {
5936 ResultPtr = Builder.CreateIntToPtr(AddrMode.ScaledReg, Addr->getType(),
5938 AddrMode.Scale = 0;
5942 if (!ResultPtr && !AddrMode.BaseReg && !AddrMode.Scale &&
5943 !AddrMode.BaseOffs) {
5956 if (AddrMode.BaseReg) {
5957 Value *V = AddrMode.BaseReg;
5965 if (AddrMode.Scale) {
5966 Value *V = AddrMode.ScaledReg;
5976 if (AddrMode.Scale != 1)
5977 V = Builder.CreateMul(V, ConstantInt::get(IntPtrTy, AddrMode.Scale),
5986 if (AddrMode.BaseOffs) {
5987 Value *V = ConstantInt::get(IntPtrTy, AddrMode.BaseOffs);
5994 AddrMode.InBounds);
6006 AddrMode.InBounds);
6028 Type *BaseTy = AddrMode.BaseReg ? AddrMode.BaseReg->getType() : nullptr;
6029 Type *ScaleTy = AddrMode.Scale ? AddrMode.ScaledReg->getType() : nullptr;
6035 (AddrMode.BaseGV &&
6036 DL->isNonIntegralPointerType(AddrMode.BaseGV->getType())))
6039 LLVM_DEBUG(dbgs() << "CGP: SINKING nonlocal addrmode: " << AddrMode
6049 if (AddrMode.BaseReg) {
6050 Value *V = AddrMode.BaseReg;
6059 if (AddrMode.Scale) {
6060 Value *V = AddrMode.ScaledReg;
6072 // the AddrMode was created we need to bail out gracefully if widths
6075 if (I && (Result != AddrMode.BaseReg))
6079 if (AddrMode.Scale != 1)
6080 V = Builder.CreateMul(V, ConstantInt::get(IntPtrTy, AddrMode.Scale),
6089 GlobalValue *BaseGV = AddrMode.BaseGV;
6105 if (AddrMode.BaseOffs) {
6106 Value *V = ConstantInt::get(IntPtrTy, AddrMode.BaseOffs);
6620 TargetLowering::AddrMode AddrMode;
6621 AddrMode.HasBaseReg = true;
6622 AddrMode.BaseOffs = Offset - BaseOffset;
6625 if (!TLI->isLegalAddressingMode(*DL, AddrMode,