Lines Matching defs:AddrMode

2767 /// This is an extended version of TargetLowering::AddrMode
2769 struct ExtAddrMode : public TargetLowering::AddrMode {
2827 // An AddrMode is trivial if it involves no calculation i.e. it is just a base
2830 // An AddrMode is (BaseGV + BaseReg + BaseOffs + ScaleReg * Scale) so it is
3465 ExtAddrMode &AddrMode;
3500 AccessTy(AT), AddrSpace(AS), MemoryInst(MI), AddrMode(AM),
3809 /// Get the combined AddrMode
3812 /// Add a new AddrMode if it's compatible with the AddrModes we already
3874 // A single AddrMode can trivially be combined.
4198 /// Return true and update AddrMode if this addr mode is legal for the target,
4213 if (AddrMode.Scale != 0 && AddrMode.ScaledReg != ScaleReg)
4216 ExtAddrMode TestAddrMode = AddrMode;
4228 AddrMode = TestAddrMode;
4230 // Okay, we decided that we can add ScaleReg+Scale to AddrMode. Check now
4247 AddrMode = TestAddrMode;
4251 TestAddrMode = AddrMode;
4289 if (AddrMode.BaseOffs) {
4298 APInt Offset = Step * AddrMode.Scale;
4309 AddrMode = TestAddrMode;
4313 TestAddrMode = AddrMode;
4802 /// true, otherwise return false without modifying AddrMode.
4855 ExtAddrMode BackupAddrMode = AddrMode;
4870 AddrMode.InBounds = false;
4876 AddrMode = BackupAddrMode;
4887 AddrMode = BackupAddrMode;
4898 AddrMode.InBounds = false;
4951 AddrMode.BaseOffs += ConstantOffset;
4954 AddrMode.InBounds = false;
4957 AddrMode.BaseOffs -= ConstantOffset;
4985 ExtAddrMode BackupAddrMode = AddrMode;
4989 AddrMode.BaseOffs += ConstantOffset;
4991 AddrMode.InBounds = false;
4996 if (AddrMode.HasBaseReg) {
4997 AddrMode = BackupAddrMode;
5001 AddrMode.HasBaseReg = true;
5002 AddrMode.BaseReg = AddrInst->getOperand(0);
5010 AddrMode = BackupAddrMode;
5012 if (AddrMode.HasBaseReg)
5014 AddrMode.HasBaseReg = true;
5015 AddrMode.BaseReg = AddrInst->getOperand(0);
5016 AddrMode.BaseOffs += ConstantOffset;
5020 AddrMode = BackupAddrMode;
5064 ExtAddrMode BackupAddrMode = AddrMode;
5075 AddrMode = BackupAddrMode;
5097 /// If Addr can't be added to AddrMode this returns false and leaves AddrMode
5109 AddrMode.BaseOffs += CI->getSExtValue();
5110 if (TLI.isLegalAddressingMode(DL, AddrMode, AccessTy, AddrSpace))
5112 AddrMode.BaseOffs -= CI->getSExtValue();
5116 if (!AddrMode.BaseGV) {
5117 AddrMode.BaseGV = GV;
5118 if (TLI.isLegalAddressingMode(DL, AddrMode, AccessTy, AddrSpace))
5120 AddrMode.BaseGV = nullptr;
5123 ExtAddrMode BackupAddrMode = AddrMode;
5137 isProfitableToFoldIntoAddressingMode(I, BackupAddrMode, AddrMode)) {
5143 AddrMode = BackupAddrMode;
5157 if (!AddrMode.HasBaseReg) {
5158 AddrMode.HasBaseReg = true;
5159 AddrMode.BaseReg = Addr;
5161 if (TLI.isLegalAddressingMode(DL, AddrMode, AccessTy, AddrSpace))
5163 AddrMode.HasBaseReg = false;
5164 AddrMode.BaseReg = nullptr;
5168 if (AddrMode.Scale == 0) {
5169 AddrMode.Scale = 1;
5170 AddrMode.ScaledReg = Addr;
5171 if (TLI.isLegalAddressingMode(DL, AddrMode, AccessTy, AddrSpace))
5173 AddrMode.Scale = 0;
5174 AddrMode.ScaledReg = nullptr;
5544 // Get the combined AddrMode (or the only AddrMode, if we only had one).
5545 ExtAddrMode AddrMode = AddrModes.getAddrMode();
5554 LLVM_DEBUG(dbgs() << "CGP: Found local addrmode: " << AddrMode
5575 LLVM_DEBUG(dbgs() << "CGP: Reusing nonlocal addrmode: " << AddrMode
5596 LLVM_DEBUG(dbgs() << "CGP: SINKING nonlocal addrmode: " << AddrMode
5601 if (AddrMode.BaseReg && AddrMode.BaseReg->getType()->isPointerTy()) {
5602 ResultPtr = AddrMode.BaseReg;
5603 AddrMode.BaseReg = nullptr;
5606 if (AddrMode.Scale && AddrMode.ScaledReg->getType()->isPointerTy()) {
5609 if (ResultPtr || AddrMode.Scale != 1)
5612 ResultPtr = AddrMode.ScaledReg;
5613 AddrMode.Scale = 0;
5619 // the AddrMode was created we need to bail out gracefully if widths
5623 if (AddrMode.Scale) {
5624 Type *ScaledRegTy = AddrMode.ScaledReg->getType();
5630 GlobalValue *BaseGV = AddrMode.BaseGV;
5646 if (!ResultPtr && AddrMode.BaseReg) {
5647 ResultPtr = Builder.CreateIntToPtr(AddrMode.BaseReg, Addr->getType(),
5649 AddrMode.BaseReg = nullptr;
5650 } else if (!ResultPtr && AddrMode.Scale == 1) {
5651 ResultPtr = Builder.CreateIntToPtr(AddrMode.ScaledReg, Addr->getType(),
5653 AddrMode.Scale = 0;
5657 if (!ResultPtr && !AddrMode.BaseReg && !AddrMode.Scale &&
5658 !AddrMode.BaseOffs) {
5671 if (AddrMode.BaseReg) {
5672 Value *V = AddrMode.BaseReg;
5680 if (AddrMode.Scale) {
5681 Value *V = AddrMode.ScaledReg;
5691 if (AddrMode.Scale != 1)
5692 V = Builder.CreateMul(V, ConstantInt::get(IntPtrTy, AddrMode.Scale),
5701 if (AddrMode.BaseOffs) {
5702 Value *V = ConstantInt::get(IntPtrTy, AddrMode.BaseOffs);
5709 AddrMode.InBounds);
5721 AddrMode.InBounds);
5743 Type *BaseTy = AddrMode.BaseReg ? AddrMode.BaseReg->getType() : nullptr;
5744 Type *ScaleTy = AddrMode.Scale ? AddrMode.ScaledReg->getType() : nullptr;
5750 (AddrMode.BaseGV &&
5751 DL->isNonIntegralPointerType(AddrMode.BaseGV->getType())))
5754 LLVM_DEBUG(dbgs() << "CGP: SINKING nonlocal addrmode: " << AddrMode
5764 if (AddrMode.BaseReg) {
5765 Value *V = AddrMode.BaseReg;
5774 if (AddrMode.Scale) {
5775 Value *V = AddrMode.ScaledReg;
5787 // the AddrMode was created we need to bail out gracefully if widths
5790 if (I && (Result != AddrMode.BaseReg))
5794 if (AddrMode.Scale != 1)
5795 V = Builder.CreateMul(V, ConstantInt::get(IntPtrTy, AddrMode.Scale),
5804 GlobalValue *BaseGV = AddrMode.BaseGV;
5820 if (AddrMode.BaseOffs) {
5821 Value *V = ConstantInt::get(IntPtrTy, AddrMode.BaseOffs);
6335 TargetLowering::AddrMode AddrMode;
6336 AddrMode.HasBaseReg = true;
6337 AddrMode.BaseOffs = Offset - BaseOffset;
6340 if (!TLI->isLegalAddressingMode(*DL, AddrMode,