Lines Matching refs:AddrMode

1037 /// ExtAddrMode - This is an extended version of TargetLowering::AddrMode
1039 struct ExtAddrMode : public TargetLowering::AddrMode {
1509 /// AddrMode - This is the addressing mode that we're building up. This is
1511 ExtAddrMode &AddrMode;
1531 : AddrModeInsts(AMI), TLI(T), AccessTy(AT), MemoryInst(MI), AddrMode(AM),
1574 /// Return true and update AddrMode if this addr mode is legal for the target,
1589 if (AddrMode.Scale != 0 && AddrMode.ScaledReg != ScaleReg)
1592 ExtAddrMode TestAddrMode = AddrMode;
1604 AddrMode = TestAddrMode;
1606 // Okay, we decided that we can add ScaleReg+Scale to AddrMode. Check now
1619 AddrMode = TestAddrMode;
1960 /// mode and return true, otherwise return false without modifying AddrMode.
2003 ExtAddrMode BackupAddrMode = AddrMode;
2017 AddrMode = BackupAddrMode;
2027 AddrMode = BackupAddrMode;
2080 AddrMode.BaseOffs += ConstantOffset;
2081 if (ConstantOffset == 0 || TLI.isLegalAddressingMode(AddrMode, AccessTy)){
2086 AddrMode.BaseOffs -= ConstantOffset;
2091 ExtAddrMode BackupAddrMode = AddrMode;
2095 AddrMode.BaseOffs += ConstantOffset;
2100 if (AddrMode.HasBaseReg) {
2101 AddrMode = BackupAddrMode;
2105 AddrMode.HasBaseReg = true;
2106 AddrMode.BaseReg = AddrInst->getOperand(0);
2114 AddrMode = BackupAddrMode;
2116 if (AddrMode.HasBaseReg)
2118 AddrMode.HasBaseReg = true;
2119 AddrMode.BaseReg = AddrInst->getOperand(0);
2120 AddrMode.BaseOffs += ConstantOffset;
2124 AddrMode = BackupAddrMode;
2162 ExtAddrMode BackupAddrMode = AddrMode;
2168 AddrMode = BackupAddrMode;
2181 /// addressing mode. If Addr can't be added to AddrMode this returns false and
2182 /// leaves AddrMode unmodified. This assumes that Addr is either a pointer type
2192 AddrMode.BaseOffs += CI->getSExtValue();
2193 if (TLI.isLegalAddressingMode(AddrMode, AccessTy))
2195 AddrMode.BaseOffs -= CI->getSExtValue();
2198 if (!AddrMode.BaseGV) {
2199 AddrMode.BaseGV = GV;
2200 if (TLI.isLegalAddressingMode(AddrMode, AccessTy))
2202 AddrMode.BaseGV = nullptr;
2205 ExtAddrMode BackupAddrMode = AddrMode;
2219 IsProfitableToFoldIntoAddressingMode(I, BackupAddrMode, AddrMode)) {
2226 AddrMode = BackupAddrMode;
2240 if (!AddrMode.HasBaseReg) {
2241 AddrMode.HasBaseReg = true;
2242 AddrMode.BaseReg = Addr;
2244 if (TLI.isLegalAddressingMode(AddrMode, AccessTy))
2246 AddrMode.HasBaseReg = false;
2247 AddrMode.BaseReg = nullptr;
2251 if (AddrMode.Scale == 0) {
2252 AddrMode.Scale = 1;
2253 AddrMode.ScaledReg = Addr;
2254 if (TLI.isLegalAddressingMode(AddrMode, AccessTy))
2256 AddrMode.Scale = 0;
2257 AddrMode.ScaledReg = nullptr;
2500 ExtAddrMode AddrMode;
2533 AddrMode = NewAddrMode;
2536 } else if (NewAddrMode == AddrMode) {
2580 DEBUG(dbgs() << "CGP: Found local addrmode: " << AddrMode << "\n");
2595 DEBUG(dbgs() << "CGP: Reusing nonlocal addrmode: " << AddrMode << " for "
2603 DEBUG(dbgs() << "CGP: SINKING nonlocal addrmode: " << AddrMode << " for "
2609 if (AddrMode.BaseReg && AddrMode.BaseReg->getType()->isPointerTy()) {
2610 ResultPtr = AddrMode.BaseReg;
2611 AddrMode.BaseReg = nullptr;
2614 if (AddrMode.Scale && AddrMode.ScaledReg->getType()->isPointerTy()) {
2617 if (ResultPtr || AddrMode.Scale != 1)
2620 ResultPtr = AddrMode.ScaledReg;
2621 AddrMode.Scale = 0;
2624 if (AddrMode.BaseGV) {
2628 ResultPtr = AddrMode.BaseGV;
2634 if (!ResultPtr && AddrMode.BaseReg) {
2636 Builder.CreateIntToPtr(AddrMode.BaseReg, Addr->getType(), "sunkaddr");
2637 AddrMode.BaseReg = nullptr;
2638 } else if (!ResultPtr && AddrMode.Scale == 1) {
2640 Builder.CreateIntToPtr(AddrMode.ScaledReg, Addr->getType(), "sunkaddr");
2641 AddrMode.Scale = 0;
2645 !AddrMode.BaseReg && !AddrMode.Scale && !AddrMode.BaseOffs) {
2658 if (AddrMode.BaseReg) {
2659 Value *V = AddrMode.BaseReg;
2667 if (AddrMode.Scale) {
2668 Value *V = AddrMode.ScaledReg;
2678 // the AddrMode was created we need to bail out gracefully if widths
2681 if (I && (ResultIndex != AddrMode.BaseReg))
2686 if (AddrMode.Scale != 1)
2687 V = Builder.CreateMul(V, ConstantInt::get(IntPtrTy, AddrMode.Scale),
2696 if (AddrMode.BaseOffs) {
2697 Value *V = ConstantInt::get(IntPtrTy, AddrMode.BaseOffs);
2721 DEBUG(dbgs() << "CGP: SINKING nonlocal addrmode: " << AddrMode << " for "
2731 if (AddrMode.BaseReg) {
2732 Value *V = AddrMode.BaseReg;
2741 if (AddrMode.Scale) {
2742 Value *V = AddrMode.ScaledReg;
2754 // the AddrMode was created we need to bail out gracefully if widths
2757 if (I && (Result != AddrMode.BaseReg))
2761 if (AddrMode.Scale != 1)
2762 V = Builder.CreateMul(V, ConstantInt::get(IntPtrTy, AddrMode.Scale),
2771 if (AddrMode.BaseGV) {
2772 Value *V = Builder.CreatePtrToInt(AddrMode.BaseGV, IntPtrTy, "sunkaddr");
2780 if (AddrMode.BaseOffs) {
2781 Value *V = ConstantInt::get(IntPtrTy, AddrMode.BaseOffs);