Lines Matching refs:BitTracker

231     static bool isEqual(const BitTracker::RegisterCell &RC1, uint16_t B1,
232 const BitTracker::RegisterCell &RC2, uint16_t B2, uint16_t W);
233 static bool isZero(const BitTracker::RegisterCell &RC, uint16_t B,
235 static bool getConst(const BitTracker::RegisterCell &RC, uint16_t B,
239 static bool getSubregMask(const BitTracker::RegisterRef &RR,
246 BitTracker::RegisterRef &SL, BitTracker::RegisterRef &SH,
255 const BitTracker::RegisterRef &RR, MachineRegisterInfo &MRI);
256 static bool isTransparentCopy(const BitTracker::RegisterRef &RD,
257 const BitTracker::RegisterRef &RS, MachineRegisterInfo &MRI);
342 bool HexagonBitSimplify::isEqual(const BitTracker::RegisterCell &RC1, in isEqual()
343 uint16_t B1, const BitTracker::RegisterCell &RC2, uint16_t B2, in isEqual()
347 if (RC1[B1+i].Type == BitTracker::BitValue::Ref && RC1[B1+i].RefI.Reg == 0) in isEqual()
350 if (RC2[B2+i].Type == BitTracker::BitValue::Ref && RC2[B2+i].RefI.Reg == 0) in isEqual()
358 bool HexagonBitSimplify::isZero(const BitTracker::RegisterCell &RC, in isZero()
367 bool HexagonBitSimplify::getConst(const BitTracker::RegisterCell &RC, in getConst()
372 const BitTracker::BitValue &BV = RC[i-1]; in getConst()
435 bool HexagonBitSimplify::getSubregMask(const BitTracker::RegisterRef &RR, in getSubregMask()
463 BitTracker::RegisterRef &SL, BitTracker::RegisterRef &SH, in parseRegSequence()
926 const BitTracker::RegisterRef &RR, MachineRegisterInfo &MRI) { in getFinalVRegClass()
956 bool HexagonBitSimplify::isTransparentCopy(const BitTracker::RegisterRef &RD, in isTransparentCopy()
957 const BitTracker::RegisterRef &RS, MachineRegisterInfo &MRI) { in isTransparentCopy()
1081 RedundantInstrElimination(BitTracker &bt, const HexagonInstrInfo &hii, in RedundantInstrElimination()
1095 bool usedBitsEqual(BitTracker::RegisterRef RD, BitTracker::RegisterRef RS);
1100 BitTracker &BT;
1244 BitTracker::RegisterRef UR = *I; in computeUsedBits()
1289 BitTracker::RegisterRef RR = MI.getOperand(OpN); in computeUsedBits()
1306 bool RedundantInstrElimination::usedBitsEqual(BitTracker::RegisterRef RD, in usedBitsEqual()
1307 BitTracker::RegisterRef RS) { in usedBitsEqual()
1308 const BitTracker::RegisterCell &DC = BT.lookup(RD.Reg); in usedBitsEqual()
1309 const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg); in usedBitsEqual()
1347 BitTracker::RegisterRef RD = MI->getOperand(0); in processBlock()
1350 const BitTracker::RegisterCell &DC = BT.lookup(RD.Reg); in processBlock()
1357 BitTracker::RegisterRef RS = Op; in processBlock()
1367 const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg); in processBlock()
1403 ConstGeneration(BitTracker &bt, const HexagonInstrInfo &hii, in ConstGeneration()
1417 BitTracker &BT;
1511 const BitTracker::RegisterCell &DRC = BT.lookup(DR); in processBlock()
1534 CopyGeneration(BitTracker &bt, const HexagonInstrInfo &hii, in CopyGeneration()
1541 bool findMatch(const BitTracker::RegisterRef &Inp,
1542 BitTracker::RegisterRef &Out, const RegisterSet &AVs);
1547 BitTracker &BT;
1573 bool CopyGeneration::findMatch(const BitTracker::RegisterRef &Inp, in findMatch()
1574 BitTracker::RegisterRef &Out, const RegisterSet &AVs) { in findMatch()
1577 const BitTracker::RegisterCell &InpRC = BT.lookup(Inp.Reg); in findMatch()
1586 const BitTracker::RegisterCell &RC = BT.lookup(R); in findMatch()
1641 BitTracker::RegisterRef MR; in processBlock()
1648 BT.put(BitTracker::RegisterRef(NewR), BT.get(MR)); in processBlock()
1659 BitTracker::RegisterRef TL = { R, SubLo }; in processBlock()
1660 BitTracker::RegisterRef TH = { R, SubHi }; in processBlock()
1661 BitTracker::RegisterRef ML, MH; in processBlock()
1670 BT.put(BitTracker::RegisterRef(NewR), BT.get(R)); in processBlock()
1702 BitTracker::RegisterRef RD = MI.getOperand(0); in propagateRegCopy()
1709 BitTracker::RegisterRef RS = MI.getOperand(1); in propagateRegCopy()
1719 BitTracker::RegisterRef SL, SH; in propagateRegCopy()
1734 BitTracker::RegisterRef RH = MI.getOperand(1), RL = MI.getOperand(2); in propagateRegCopy()
1744 BitTracker::RegisterRef RS = MI.getOperand(SrcX); in propagateRegCopy()
1775 BitSimplification(BitTracker &bt, const MachineDominatorTree &mdt, in BitSimplification()
1784 struct RegHalf : public BitTracker::RegisterRef {
1788 bool matchHalf(unsigned SelfR, const BitTracker::RegisterCell &RC,
1790 bool validateReg(BitTracker::RegisterRef R, unsigned Opc, unsigned OpNum);
1792 bool matchPackhl(unsigned SelfR, const BitTracker::RegisterCell &RC,
1793 BitTracker::RegisterRef &Rs, BitTracker::RegisterRef &Rt);
1798 bool genPackhl(MachineInstr *MI, BitTracker::RegisterRef RD,
1799 const BitTracker::RegisterCell &RC);
1800 bool genExtractHalf(MachineInstr *MI, BitTracker::RegisterRef RD,
1801 const BitTracker::RegisterCell &RC);
1802 bool genCombineHalf(MachineInstr *MI, BitTracker::RegisterRef RD,
1803 const BitTracker::RegisterCell &RC);
1804 bool genExtractLow(MachineInstr *MI, BitTracker::RegisterRef RD,
1805 const BitTracker::RegisterCell &RC);
1806 bool genBitSplit(MachineInstr *MI, BitTracker::RegisterRef RD,
1807 const BitTracker::RegisterCell &RC, const RegisterSet &AVs);
1808 bool simplifyTstbit(MachineInstr *MI, BitTracker::RegisterRef RD,
1809 const BitTracker::RegisterCell &RC);
1810 bool simplifyExtractLow(MachineInstr *MI, BitTracker::RegisterRef RD,
1811 const BitTracker::RegisterCell &RC, const RegisterSet &AVs);
1812 bool simplifyRCmp0(MachineInstr *MI, BitTracker::RegisterRef RD);
1823 BitTracker &BT;
1832 const BitTracker::RegisterCell &RC, unsigned B, RegHalf &RH) { in matchHalf()
1860 const BitTracker::RegisterCell &SC = BT.lookup(Reg); in matchHalf()
1865 const BitTracker::BitValue &RV = RC[i+B]; in matchHalf()
1866 if (RV.Type == BitTracker::BitValue::Ref) { in matchHalf()
1909 bool BitSimplification::validateReg(BitTracker::RegisterRef R, unsigned Opc, in validateReg()
1919 const BitTracker::RegisterCell &RC, BitTracker::RegisterRef &Rs, in matchPackhl()
1920 BitTracker::RegisterRef &Rt) { in matchPackhl()
1955 BitTracker::RegisterRef RS = ValOp; in genStoreUpperHalf()
1958 const BitTracker::RegisterCell &RC = BT.lookup(RS.Reg); in genStoreUpperHalf()
2000 BitTracker::RegisterRef RS = MI->getOperand(2); in genStoreImmediate()
2003 const BitTracker::RegisterCell &RC = BT.lookup(RS.Reg); in genStoreImmediate()
2049 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genPackhl()
2053 BitTracker::RegisterRef Rs, Rt; in genPackhl()
2069 BT.put(BitTracker::RegisterRef(NewR), RC); in genPackhl()
2076 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genExtractHalf()
2108 BT.put(BitTracker::RegisterRef(NewR), RC); in genExtractHalf()
2115 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genCombineHalf()
2140 BT.put(BitTracker::RegisterRef(NewR), RC); in genCombineHalf()
2147 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in genExtractLow()
2178 BitTracker::RegisterRef RS = Op; in genExtractLow()
2181 const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg); in genExtractLow()
2200 BT.put(BitTracker::RegisterRef(NewR), RC); in genExtractLow()
2207 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC, in genBitSplit()
2227 auto ctlz = [] (const BitTracker::RegisterCell &C) -> unsigned { in genBitSplit()
2241 const BitTracker::BitValue &B0 = RC[0]; in genBitSplit()
2242 if (B0.Type != BitTracker::BitValue::Ref) in genBitSplit()
2251 const BitTracker::BitValue &V = RC[i]; in genBitSplit()
2252 if (V.Type != BitTracker::BitValue::Ref) in genBitSplit()
2268 const BitTracker::RegisterCell &SC = BT.lookup(S); in genBitSplit()
2272 const BitTracker::BitValue &S0 = SC[0]; in genBitSplit()
2273 if (S0.Type != BitTracker::BitValue::Ref || S0.RefI.Reg != SrcR) in genBitSplit()
2287 const BitTracker::BitValue &V = SC[I]; in genBitSplit()
2288 if (V.Type != BitTracker::BitValue::Ref) in genBitSplit()
2360 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) { in simplifyTstbit()
2366 BitTracker::RegisterRef RS = MI->getOperand(1); in simplifyTstbit()
2375 const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg); in simplifyTstbit()
2376 const BitTracker::BitValue &V = SC[F+BN]; in simplifyTstbit()
2377 if (V.Type == BitTracker::BitValue::Ref && V.RefI.Reg != RS.Reg) { in simplifyTstbit()
2383 BitTracker::RegisterRef RR(V.RefI.Reg, 0); in simplifyTstbit()
2420 BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC, in simplifyExtractLow()
2453 const BitTracker::BitValue &TopV = RC[W-1]; in simplifyExtractLow()
2460 const BitTracker::BitValue &V = RC[I]; in simplifyExtractLow()
2461 if (V.Type == BitTracker::BitValue::Ref && V.RefI.Reg == RD.Reg) in simplifyExtractLow()
2479 assert(TopV.Type == BitTracker::BitValue::Ref); in simplifyExtractLow()
2507 const BitTracker::RegisterCell &SC = BT.lookup(R); in simplifyExtractLow()
2603 BT.put(BitTracker::RegisterRef(NewR), RC); in simplifyExtractLow()
2612 BitTracker::RegisterRef RD) { in simplifyRCmp0()
2632 BitTracker::RegisterRef SR = MI->getOperand(1); in simplifyRCmp0()
2635 const BitTracker::RegisterCell &SC = BT.lookup(SR.Reg); in simplifyRCmp0()
2641 const BitTracker::BitValue &V = SC[I]; in simplifyRCmp0()
2653 BitTracker::RegisterCell NewRC(W); in simplifyRCmp0()
2655 NewRC[I] = BitTracker::BitValue(C & 1); in simplifyRCmp0()
2658 BT.put(BitTracker::RegisterRef(NewR), NewRC); in simplifyRCmp0()
2721 BitTracker::RegisterCell NewRC(W); in simplifyRCmp0()
2722 NewRC[0] = BitTracker::BitValue::self(); in simplifyRCmp0()
2723 NewRC.fill(1, W, BitTracker::BitValue::Zero); in simplifyRCmp0()
2724 BT.put(BitTracker::RegisterRef(NewR), NewRC); in simplifyRCmp0()
2761 BitTracker::RegisterRef RD = Op0; in processBlock()
2765 const BitTracker::RegisterCell &RC = BT.lookup(RD.Reg); in processBlock()
2809 BitTracker BT(HE, MF); in runOnMachineFunction()
2938 BitTracker *BTP = nullptr;
2948 BitTracker::RegisterRef Inp, Out;
2955 BitTracker::RegisterRef LR, PR; // Loop Register, Preheader Register
3005 const BitTracker::RegisterCell &RC = BTP->lookup(Reg); in isConst()
3007 const BitTracker::BitValue &V = RC[i]; in isConst()
3059 const BitTracker::RegisterCell &OutC = BTP->lookup(OutR); in isShuffleOf()
3061 const BitTracker::BitValue &V = OutC[i]; in isShuffleOf()
3062 if (V.Type != BitTracker::BitValue::Ref) in isShuffleOf()
3074 const BitTracker::RegisterCell &OutC1 = BTP->lookup(OutR1); in isSameShuffle()
3075 const BitTracker::RegisterCell &OutC2 = BTP->lookup(OutR2); in isSameShuffle()
3081 const BitTracker::BitValue &V1 = OutC1[i], &V2 = OutC2[i]; in isSameShuffle()
3082 if (V1.Type != V2.Type || V1.Type == BitTracker::BitValue::One) in isSameShuffle()
3084 if (V1.Type != BitTracker::BitValue::Ref) in isSameShuffle()
3351 BitTracker BT(HE, MF); in runOnMachineFunction()