Lines Matching refs:BitTracker

203     static bool isEqual(const BitTracker::RegisterCell &RC1, uint16_t B1,
204 const BitTracker::RegisterCell &RC2, uint16_t B2, uint16_t W);
205 static bool isZero(const BitTracker::RegisterCell &RC, uint16_t B,
207 static bool getConst(const BitTracker::RegisterCell &RC, uint16_t B,
211 static bool getSubregMask(const BitTracker::RegisterRef &RR,
218 BitTracker::RegisterRef &SL, BitTracker::RegisterRef &SH,
227 const BitTracker::RegisterRef &RR, MachineRegisterInfo &MRI);
228 static bool isTransparentCopy(const BitTracker::RegisterRef &RD,
229 const BitTracker::RegisterRef &RS, MachineRegisterInfo &MRI);
314 bool HexagonBitSimplify::isEqual(const BitTracker::RegisterCell &RC1, in isEqual()
315 uint16_t B1, const BitTracker::RegisterCell &RC2, uint16_t B2, in isEqual()
319 if (RC1[B1+i].Type == BitTracker::BitValue::Ref && RC1[B1+i].RefI.Reg == 0) in isEqual()
322 if (RC2[B2+i].Type == BitTracker::BitValue::Ref && RC2[B2+i].RefI.Reg == 0) in isEqual()
330 bool HexagonBitSimplify::isZero(const BitTracker::RegisterCell &RC, in isZero()
339 bool HexagonBitSimplify::getConst(const BitTracker::RegisterCell &RC, in getConst()
344 const BitTracker::BitValue &BV = RC[i-1]; in getConst()
408 bool HexagonBitSimplify::getSubregMask(const BitTracker::RegisterRef &RR, in getSubregMask()
436 BitTracker::RegisterRef &SL, BitTracker::RegisterRef &SH, in parseRegSequence()
899 const BitTracker::RegisterRef &RR, MachineRegisterInfo &MRI) { in getFinalVRegClass()
929 bool HexagonBitSimplify::isTransparentCopy(const BitTracker::RegisterRef &RD, in isTransparentCopy()
930 const BitTracker::RegisterRef &RS, MachineRegisterInfo &MRI) { in isTransparentCopy()
1055 RedundantInstrElimination(BitTracker &bt, const HexagonInstrInfo &hii, in RedundantInstrElimination()
1069 bool usedBitsEqual(BitTracker::RegisterRef RD, BitTracker::RegisterRef RS);
1074 BitTracker &BT;
1218 BitTracker::RegisterRef UR = *I; in computeUsedBits()
1263 BitTracker::RegisterRef RR = MI.getOperand(OpN); in computeUsedBits()
1280 bool RedundantInstrElimination::usedBitsEqual(BitTracker::RegisterRef RD, in usedBitsEqual()
1281 BitTracker::RegisterRef RS) { in usedBitsEqual()
1282 const BitTracker::RegisterCell &DC = BT.lookup(RD.Reg); in usedBitsEqual()
1283 const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg); in usedBitsEqual()
1322 BitTracker::RegisterRef RD = MI->getOperand(0); in processBlock()
1325 const BitTracker::RegisterCell &DC = BT.lookup(RD.Reg); in processBlock()
1332 BitTracker::RegisterRef RS = Op; in processBlock()
1342 const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg); in processBlock()
1378 ConstGeneration(BitTracker &bt, const HexagonInstrInfo &hii, in ConstGeneration()
1391 BitTracker &BT;
1477 const BitTracker::RegisterCell &DRC = BT.lookup(DR); in processBlock()
1500 CopyGeneration(BitTracker &bt, const HexagonInstrInfo &hii, in CopyGeneration()
1507 bool findMatch(const BitTracker::RegisterRef &Inp,
1508 BitTracker::RegisterRef &Out, const RegisterSet &AVs);
1513 BitTracker &BT;
1539 bool CopyGeneration::findMatch(const BitTracker::RegisterRef &Inp, in findMatch()
1540 BitTracker::RegisterRef &Out, const RegisterSet &AVs) { in findMatch()
1543 const BitTracker::RegisterCell &InpRC = BT.lookup(Inp.Reg); in findMatch()
1552 const BitTracker::RegisterCell &RC = BT.lookup(R); in findMatch()
1609 BitTracker::RegisterRef MR; in processBlock()
1616 BT.put(BitTracker::RegisterRef(NewR), BT.get(MR)); in processBlock()
1627 BitTracker::RegisterRef TL = { R, SubLo }; in processBlock()
1628 BitTracker::RegisterRef TH = { R, SubHi }; in processBlock()
1629 BitTracker::RegisterRef ML, MH; in processBlock()
1638 BT.put(BitTracker::RegisterRef(NewR), BT.get(R)); in processBlock()
1670 BitTracker::RegisterRef RD = MI.getOperand(0); in propagateRegCopy()
1677 BitTracker::RegisterRef RS = MI.getOperand(1); in propagateRegCopy()
1687 BitTracker::RegisterRef SL, SH; in propagateRegCopy()
1702 BitTracker::RegisterRef RH = MI.getOperand(1), RL = MI.getOperand(2); in propagateRegCopy()
1712 BitTracker::RegisterRef RS = MI.getOperand(SrcX); in propagateRegCopy()
1743 BitSimplification(BitTracker &bt, const MachineDominatorTree &mdt, in BitSimplification()
1752 struct RegHalf : public BitTracker::RegisterRef {
1756 bool matchHalf(unsigned SelfR, const BitTracker::RegisterCell &RC,
1758 bool validateReg(BitTracker::RegisterRef R, unsigned Opc, unsigned OpNum);
1760 bool matchPackhl(unsigned SelfR, const BitTracker::RegisterCell &RC,
1761 BitTracker::RegisterRef &Rs, BitTracker::RegisterRef &Rt);
1766 bool genPackhl(MachineInstr *MI, BitTracker::RegisterRef RD,
1767 const BitTracker::RegisterCell &RC);
1768 bool genExtractHalf(MachineInstr *MI, BitTracker::RegisterRef RD,
1769 const BitTracker::RegisterCell &RC);
1770 bool genCombineHalf(MachineInstr *MI, BitTracker::RegisterRef RD,
1771 const BitTracker::RegisterCell &RC);
1772 bool genExtractLow(MachineInstr *MI, BitTracker::RegisterRef RD,
1773 const BitTracker::RegisterCell &RC);
1774 bool genBitSplit(MachineInstr *MI, BitTracker::RegisterRef RD,
1775 const BitTracker::RegisterCell &RC, const RegisterSet &AVs);
1776 bool simplifyTstbit(MachineInstr *MI, BitTracker::RegisterRef RD,
1777 const BitTracker::RegisterCell &RC);
1778 bool simplifyExtractLow(MachineInstr *MI, BitTracker::RegisterRef RD,
1779 const BitTracker::RegisterCell &RC, const RegisterSet &AVs);
1780 bool simplifyRCmp0(MachineInstr *MI, BitTracker::RegisterRef RD);
1791 BitTracker &BT;
1800 const BitTracker::RegisterCell &RC, unsigned B, RegHalf &RH) { in matchHalf()
1828 const BitTracker::RegisterCell &SC = BT.lookup(Reg); in matchHalf()
1833 const BitTracker::BitValue &RV = RC[i+B]; in matchHalf()
1834 if (RV.Type == BitTracker::BitValue::Ref) { in matchHalf()
1877 bool BitSimplification::validateReg(BitTracker::RegisterRef R, unsigned Opc, in validateReg()
1887 const BitTracker::RegisterCell &RC, BitTracker::RegisterRef &Rs, in matchPackhl()
1888 BitTracker::RegisterRef &Rt) { in matchPackhl()
1923 BitTracker::RegisterRef RS = ValOp; in genStoreUpperHalf()
1926 const BitTracker::RegisterCell &RC = BT.lookup(RS.Reg); in genStoreUpperHalf()
1968 BitTracker::RegisterRef RS = MI->getOperand(2); in genStoreImmediate()
1971 const BitTracker::RegisterCell &RC = BT.lookup(RS.Reg); in genStoreImmediate()
2017 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genPackhl()
2021 BitTracker::RegisterRef Rs, Rt; in genPackhl()
2037 BT.put(BitTracker::RegisterRef(NewR), RC); in genPackhl()
2044 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genExtractHalf()
2076 BT.put(BitTracker::RegisterRef(NewR), RC); in genExtractHalf()
2083 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genCombineHalf()
2108 BT.put(BitTracker::RegisterRef(NewR), RC); in genCombineHalf()
2115 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genExtractLow()
2146 BitTracker::RegisterRef RS = Op; in genExtractLow()
2149 const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg); in genExtractLow()
2168 BT.put(BitTracker::RegisterRef(NewR), RC); in genExtractLow()
2175 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC, in genBitSplit()
2195 auto ctlz = [] (const BitTracker::RegisterCell &C) -> unsigned { in genBitSplit()
2209 const BitTracker::BitValue &B0 = RC[0]; in genBitSplit()
2210 if (B0.Type != BitTracker::BitValue::Ref) in genBitSplit()
2219 const BitTracker::BitValue &V = RC[i]; in genBitSplit()
2220 if (V.Type != BitTracker::BitValue::Ref) in genBitSplit()
2236 const BitTracker::RegisterCell &SC = BT.lookup(S); in genBitSplit()
2240 const BitTracker::BitValue &S0 = SC[0]; in genBitSplit()
2241 if (S0.Type != BitTracker::BitValue::Ref || S0.RefI.Reg != SrcR) in genBitSplit()
2255 const BitTracker::BitValue &V = SC[I]; in genBitSplit()
2256 if (V.Type != BitTracker::BitValue::Ref) in genBitSplit()
2328 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in simplifyTstbit()
2334 BitTracker::RegisterRef RS = MI->getOperand(1); in simplifyTstbit()
2343 const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg); in simplifyTstbit()
2344 const BitTracker::BitValue &V = SC[F+BN]; in simplifyTstbit()
2345 if (V.Type == BitTracker::BitValue::Ref && V.RefI.Reg != RS.Reg) { in simplifyTstbit()
2351 BitTracker::RegisterRef RR(V.RefI.Reg, 0); in simplifyTstbit()
2388 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC, in simplifyExtractLow()
2421 const BitTracker::BitValue &TopV = RC[W-1]; in simplifyExtractLow()
2428 const BitTracker::BitValue &V = RC[I]; in simplifyExtractLow()
2429 if (V.Type == BitTracker::BitValue::Ref && V.RefI.Reg == RD.Reg) in simplifyExtractLow()
2447 assert(TopV.Type == BitTracker::BitValue::Ref); in simplifyExtractLow()
2475 const BitTracker::RegisterCell &SC = BT.lookup(R); in simplifyExtractLow()
2571 BT.put(BitTracker::RegisterRef(NewR), RC); in simplifyExtractLow()
2580 BitTracker::RegisterRef RD) { in simplifyRCmp0()
2600 BitTracker::RegisterRef SR = MI->getOperand(1); in simplifyRCmp0()
2603 const BitTracker::RegisterCell &SC = BT.lookup(SR.Reg); in simplifyRCmp0()
2609 const BitTracker::BitValue &V = SC[I]; in simplifyRCmp0()
2621 BitTracker::RegisterCell NewRC(W); in simplifyRCmp0()
2623 NewRC[I] = BitTracker::BitValue(C & 1); in simplifyRCmp0()
2626 BT.put(BitTracker::RegisterRef(NewR), NewRC); in simplifyRCmp0()
2689 BitTracker::RegisterCell NewRC(W); in simplifyRCmp0()
2690 NewRC[0] = BitTracker::BitValue::self(); in simplifyRCmp0()
2691 NewRC.fill(1, W, BitTracker::BitValue::Zero); in simplifyRCmp0()
2692 BT.put(BitTracker::RegisterRef(NewR), NewRC); in simplifyRCmp0()
2729 BitTracker::RegisterRef RD = Op0; in processBlock()
2733 const BitTracker::RegisterCell &RC = BT.lookup(RD.Reg); in processBlock()
2777 BitTracker BT(HE, MF); in runOnMachineFunction()
2906 BitTracker *BTP = nullptr;
2916 BitTracker::RegisterRef Inp, Out;
2923 BitTracker::RegisterRef LR, PR; // Loop Register, Preheader Register
2973 const BitTracker::RegisterCell &RC = BTP->lookup(Reg); in isConst()
2975 const BitTracker::BitValue &V = RC[i]; in isConst()
3027 const BitTracker::RegisterCell &OutC = BTP->lookup(OutR); in isShuffleOf()
3029 const BitTracker::BitValue &V = OutC[i]; in isShuffleOf()
3030 if (V.Type != BitTracker::BitValue::Ref) in isShuffleOf()
3042 const BitTracker::RegisterCell &OutC1 = BTP->lookup(OutR1); in isSameShuffle()
3043 const BitTracker::RegisterCell &OutC2 = BTP->lookup(OutR2); in isSameShuffle()
3049 const BitTracker::BitValue &V1 = OutC1[i], &V2 = OutC2[i]; in isSameShuffle()
3050 if (V1.Type != V2.Type || V1.Type == BitTracker::BitValue::One) in isSameShuffle()
3052 if (V1.Type != BitTracker::BitValue::Ref) in isSameShuffle()
3322 BitTracker BT(HE, MF); in runOnMachineFunction()