Lines Matching refs:RD
256 static bool isTransparentCopy(const BitTracker::RegisterRef &RD,
956 bool HexagonBitSimplify::isTransparentCopy(const BitTracker::RegisterRef &RD, in isTransparentCopy() argument
958 if (!RD.Reg.isVirtual() || !RS.Reg.isVirtual()) in isTransparentCopy()
961 auto *DRC = getFinalVRegClass(RD, MRI); in isTransparentCopy()
1095 bool usedBitsEqual(BitTracker::RegisterRef RD, BitTracker::RegisterRef RS);
1306 bool RedundantInstrElimination::usedBitsEqual(BitTracker::RegisterRef RD, in usedBitsEqual() argument
1308 const BitTracker::RegisterCell &DC = BT.lookup(RD.Reg); in usedBitsEqual()
1312 if (!HBS::getSubregMask(RD, DB, DW, MRI)) in usedBitsEqual()
1321 if (!computeUsedBits(RD.Reg, Used)) in usedBitsEqual()
1347 BitTracker::RegisterRef RD = MI->getOperand(0); in processBlock() local
1348 if (!BT.has(RD.Reg)) in processBlock()
1350 const BitTracker::RegisterCell &DC = BT.lookup(RD.Reg); in processBlock()
1360 if (!HBS::isTransparentCopy(RD, RS, MRI)) in processBlock()
1368 if (!usedBitsEqual(RD, RS) && !HBS::isEqual(DC, 0, SC, BN, BW)) in processBlock()
1373 const TargetRegisterClass *FRC = HBS::getFinalVRegClass(RD, MRI); in processBlock()
1378 HBS::replaceSubWithSub(RD.Reg, RD.Sub, NewR, 0, MRI); in processBlock()
1702 BitTracker::RegisterRef RD = MI.getOperand(0); in propagateRegCopy() local
1710 if (!HBS::isTransparentCopy(RD, RS, MRI)) in propagateRegCopy()
1713 Changed = HBS::replaceRegWithSub(RD.Reg, RS.Reg, RS.Sub, MRI); in propagateRegCopy()
1715 Changed = HBS::replaceReg(RD.Reg, RS.Reg, MRI); in propagateRegCopy()
1721 const TargetRegisterClass &RC = *MRI.getRegClass(RD.Reg); in propagateRegCopy()
1724 Changed = HBS::replaceSubWithSub(RD.Reg, SubLo, SL.Reg, SL.Sub, MRI); in propagateRegCopy()
1725 Changed |= HBS::replaceSubWithSub(RD.Reg, SubHi, SH.Reg, SH.Sub, MRI); in propagateRegCopy()
1731 const TargetRegisterClass &RC = *MRI.getRegClass(RD.Reg); in propagateRegCopy()
1735 Changed = HBS::replaceSubWithSub(RD.Reg, SubLo, RL.Reg, RL.Sub, MRI); in propagateRegCopy()
1736 Changed |= HBS::replaceSubWithSub(RD.Reg, SubHi, RH.Reg, RH.Sub, MRI); in propagateRegCopy()
1745 Changed = HBS::replaceSubWithSub(RD.Reg, Sub, RS.Reg, RS.Sub, MRI); in propagateRegCopy()
1798 bool genPackhl(MachineInstr *MI, BitTracker::RegisterRef RD,
1800 bool genExtractHalf(MachineInstr *MI, BitTracker::RegisterRef RD,
1802 bool genCombineHalf(MachineInstr *MI, BitTracker::RegisterRef RD,
1804 bool genExtractLow(MachineInstr *MI, BitTracker::RegisterRef RD,
1806 bool genBitSplit(MachineInstr *MI, BitTracker::RegisterRef RD,
1808 bool simplifyTstbit(MachineInstr *MI, BitTracker::RegisterRef RD,
1810 bool simplifyExtractLow(MachineInstr *MI, BitTracker::RegisterRef RD,
1812 bool simplifyRCmp0(MachineInstr *MI, BitTracker::RegisterRef RD);
2050 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genPackhl() argument
2055 if (!matchPackhl(RD.Reg, RC, Rs, Rt)) in genPackhl()
2069 HBS::replaceSubWithSub(RD.Reg, RD.Sub, NewR, 0, MRI); in genPackhl()
2077 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genExtractHalf() argument
2080 if (!matchHalf(RD.Reg, RC, 0, L) || !HBS::isZero(RC, 16, 16)) in genExtractHalf()
2108 HBS::replaceSubWithSub(RD.Reg, RD.Sub, NewR, 0, MRI); in genExtractHalf()
2116 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genCombineHalf() argument
2119 if (!matchHalf(RD.Reg, RC, 0, L) || !matchHalf(RD.Reg, RC, 16, H)) in genCombineHalf()
2140 HBS::replaceSubWithSub(RD.Reg, RD.Sub, NewR, 0, MRI); in genCombineHalf()
2148 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genExtractLow() argument
2200 HBS::replaceSubWithSub(RD.Reg, RD.Sub, NewR, 0, MRI); in genExtractLow()
2208 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC, in genBitSplit() argument
2342 HBS::replaceRegWithSub(RD.Reg, NewR, Hexagon::isub_lo, MRI); in genBitSplit()
2346 HBS::replaceRegWithSub(RD.Reg, NewR, Hexagon::isub_hi, MRI); in genBitSplit()
2361 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in simplifyTstbit() argument
2400 HBS::replaceReg(RD.Reg, NewR, MRI); in simplifyTstbit()
2408 HBS::replaceReg(RD.Reg, NewR, MRI); in simplifyTstbit()
2421 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC, in simplifyExtractLow() argument
2439 const TargetRegisterClass *FRC = HBS::getFinalVRegClass(RD, MRI); in simplifyExtractLow()
2442 assert(RD.Sub == 0); in simplifyExtractLow()
2462 if (V.Type == BitTracker::BitValue::Ref && V.RefI.Reg == RD.Reg) in simplifyExtractLow()
2481 if (TopV.RefI.Reg == RD.Reg || TopV.RefI.Pos == W-1) in simplifyExtractLow()
2496 dbgs() << __func__ << " on reg: " << printReg(RD.Reg, &HRI, RD.Sub) in simplifyExtractLow()
2603 HBS::replaceReg(RD.Reg, NewR, MRI); in simplifyExtractLow()
2613 BitTracker::RegisterRef RD) { in simplifyRCmp0() argument
2621 const TargetRegisterClass *FRC = HBS::getFinalVRegClass(RD, MRI); in simplifyRCmp0()
2624 assert(RD.Sub == 0); in simplifyRCmp0()
2653 HBS::replaceReg(RD.Reg, NewR, MRI); in simplifyRCmp0()
2720 HBS::replaceReg(RD.Reg, NewR, MRI); in simplifyRCmp0()
2762 BitTracker::RegisterRef RD = Op0; in processBlock() local
2763 if (!BT.has(RD.Reg)) in processBlock()
2765 const TargetRegisterClass *FRC = HBS::getFinalVRegClass(RD, MRI); in processBlock()
2766 const BitTracker::RegisterCell &RC = BT.lookup(RD.Reg); in processBlock()
2769 bool T = genPackhl(MI, RD, RC); in processBlock()
2770 T = T || simplifyExtractLow(MI, RD, RC, AVB); in processBlock()
2776 bool T = genBitSplit(MI, RD, RC, AVB); in processBlock()
2777 T = T || simplifyExtractLow(MI, RD, RC, AVB); in processBlock()
2778 T = T || genExtractHalf(MI, RD, RC); in processBlock()
2779 T = T || genCombineHalf(MI, RD, RC); in processBlock()
2780 T = T || genExtractLow(MI, RD, RC); in processBlock()
2781 T = T || simplifyRCmp0(MI, RD); in processBlock()
2787 bool T = simplifyTstbit(MI, RD, RC); in processBlock()