reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Target/Hexagon/BitTracker.cpp
   73 using BT = BitTracker;
lib/Target/Hexagon/BitTracker.h
  269 inline BitTracker::BitValue
  278 inline BitTracker::BitValue
  355 inline const BitTracker::RegisterCell&
  362 inline BitTracker::RegisterCell
  370 inline BitTracker::RegisterCell
  378 inline BitTracker::RegisterCell
lib/Target/Hexagon/HexagonBitSimplify.cpp
  202     static bool isEqual(const BitTracker::RegisterCell &RC1, uint16_t B1,
  203         const BitTracker::RegisterCell &RC2, uint16_t B2, uint16_t W);
  204     static bool isZero(const BitTracker::RegisterCell &RC, uint16_t B,
  206     static bool getConst(const BitTracker::RegisterCell &RC, uint16_t B,
  210     static bool getSubregMask(const BitTracker::RegisterRef &RR,
  217         BitTracker::RegisterRef &SL, BitTracker::RegisterRef &SH,
  217         BitTracker::RegisterRef &SL, BitTracker::RegisterRef &SH,
  226         const BitTracker::RegisterRef &RR, MachineRegisterInfo &MRI);
  227     static bool isTransparentCopy(const BitTracker::RegisterRef &RD,
  228         const BitTracker::RegisterRef &RS, MachineRegisterInfo &MRI);
  313 bool HexagonBitSimplify::isEqual(const BitTracker::RegisterCell &RC1,
  314       uint16_t B1, const BitTracker::RegisterCell &RC2, uint16_t B2,
  318     if (RC1[B1+i].Type == BitTracker::BitValue::Ref && RC1[B1+i].RefI.Reg == 0)
  321     if (RC2[B2+i].Type == BitTracker::BitValue::Ref && RC2[B2+i].RefI.Reg == 0)
  329 bool HexagonBitSimplify::isZero(const BitTracker::RegisterCell &RC,
  338 bool HexagonBitSimplify::getConst(const BitTracker::RegisterCell &RC,
  343     const BitTracker::BitValue &BV = RC[i-1];
  404 bool HexagonBitSimplify::getSubregMask(const BitTracker::RegisterRef &RR,
  432       BitTracker::RegisterRef &SL, BitTracker::RegisterRef &SH,
  432       BitTracker::RegisterRef &SL, BitTracker::RegisterRef &SH,
  895       const BitTracker::RegisterRef &RR, MachineRegisterInfo &MRI) {
  925 bool HexagonBitSimplify::isTransparentCopy(const BitTracker::RegisterRef &RD,
  926       const BitTracker::RegisterRef &RS, MachineRegisterInfo &MRI) {
 1051     RedundantInstrElimination(BitTracker &bt, const HexagonInstrInfo &hii,
 1065     bool usedBitsEqual(BitTracker::RegisterRef RD, BitTracker::RegisterRef RS);
 1065     bool usedBitsEqual(BitTracker::RegisterRef RD, BitTracker::RegisterRef RS);
 1070     BitTracker &BT;
 1214       BitTracker::RegisterRef UR = *I;
 1259     BitTracker::RegisterRef RR = MI.getOperand(OpN);
 1276 bool RedundantInstrElimination::usedBitsEqual(BitTracker::RegisterRef RD,
 1277       BitTracker::RegisterRef RS) {
 1278   const BitTracker::RegisterCell &DC = BT.lookup(RD.Reg);
 1279   const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg);
 1318     BitTracker::RegisterRef RD = MI->getOperand(0);
 1321     const BitTracker::RegisterCell &DC = BT.lookup(RD.Reg);
 1328       BitTracker::RegisterRef RS = Op;
 1338       const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg);
 1374     ConstGeneration(BitTracker &bt, const HexagonInstrInfo &hii,
 1387     BitTracker &BT;
 1473     const BitTracker::RegisterCell &DRC = BT.lookup(DR);
 1496     CopyGeneration(BitTracker &bt, const HexagonInstrInfo &hii,
 1503     bool findMatch(const BitTracker::RegisterRef &Inp,
 1504         BitTracker::RegisterRef &Out, const RegisterSet &AVs);
 1509     BitTracker &BT;
 1535 bool CopyGeneration::findMatch(const BitTracker::RegisterRef &Inp,
 1536       BitTracker::RegisterRef &Out, const RegisterSet &AVs) {
 1539   const BitTracker::RegisterCell &InpRC = BT.lookup(Inp.Reg);
 1548     const BitTracker::RegisterCell &RC = BT.lookup(R);
 1605       BitTracker::RegisterRef MR;
 1623         BitTracker::RegisterRef TL = { R, SubLo };
 1624         BitTracker::RegisterRef TH = { R, SubHi };
 1625         BitTracker::RegisterRef ML, MH;
 1666   BitTracker::RegisterRef RD = MI.getOperand(0);
 1673       BitTracker::RegisterRef RS = MI.getOperand(1);
 1683       BitTracker::RegisterRef SL, SH;
 1698       BitTracker::RegisterRef RH = MI.getOperand(1), RL = MI.getOperand(2);
 1708       BitTracker::RegisterRef RS = MI.getOperand(SrcX);
 1739     BitSimplification(BitTracker &bt, const MachineDominatorTree &mdt,
 1748     struct RegHalf : public BitTracker::RegisterRef {
 1752     bool matchHalf(unsigned SelfR, const BitTracker::RegisterCell &RC,
 1754     bool validateReg(BitTracker::RegisterRef R, unsigned Opc, unsigned OpNum);
 1756     bool matchPackhl(unsigned SelfR, const BitTracker::RegisterCell &RC,
 1757           BitTracker::RegisterRef &Rs, BitTracker::RegisterRef &Rt);
 1757           BitTracker::RegisterRef &Rs, BitTracker::RegisterRef &Rt);
 1762     bool genPackhl(MachineInstr *MI, BitTracker::RegisterRef RD,
 1763           const BitTracker::RegisterCell &RC);
 1764     bool genExtractHalf(MachineInstr *MI, BitTracker::RegisterRef RD,
 1765           const BitTracker::RegisterCell &RC);
 1766     bool genCombineHalf(MachineInstr *MI, BitTracker::RegisterRef RD,
 1767           const BitTracker::RegisterCell &RC);
 1768     bool genExtractLow(MachineInstr *MI, BitTracker::RegisterRef RD,
 1769           const BitTracker::RegisterCell &RC);
 1770     bool genBitSplit(MachineInstr *MI, BitTracker::RegisterRef RD,
 1771           const BitTracker::RegisterCell &RC, const RegisterSet &AVs);
 1772     bool simplifyTstbit(MachineInstr *MI, BitTracker::RegisterRef RD,
 1773           const BitTracker::RegisterCell &RC);
 1774     bool simplifyExtractLow(MachineInstr *MI, BitTracker::RegisterRef RD,
 1775           const BitTracker::RegisterCell &RC, const RegisterSet &AVs);
 1776     bool simplifyRCmp0(MachineInstr *MI, BitTracker::RegisterRef RD);
 1787     BitTracker &BT;
 1796       const BitTracker::RegisterCell &RC, unsigned B, RegHalf &RH) {
 1824   const BitTracker::RegisterCell &SC = BT.lookup(Reg);
 1829     const BitTracker::BitValue &RV = RC[i+B];
 1830     if (RV.Type == BitTracker::BitValue::Ref) {
 1873 bool BitSimplification::validateReg(BitTracker::RegisterRef R, unsigned Opc,
 1883       const BitTracker::RegisterCell &RC, BitTracker::RegisterRef &Rs,
 1883       const BitTracker::RegisterCell &RC, BitTracker::RegisterRef &Rs,
 1884       BitTracker::RegisterRef &Rt) {
 1919   BitTracker::RegisterRef RS = ValOp;
 1922   const BitTracker::RegisterCell &RC = BT.lookup(RS.Reg);
 1964   BitTracker::RegisterRef RS = MI->getOperand(2);
 1967   const BitTracker::RegisterCell &RC = BT.lookup(RS.Reg);
 2013       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) {
 2013       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) {
 2017   BitTracker::RegisterRef Rs, Rt;
 2040       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) {
 2040       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) {
 2079       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) {
 2079       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) {
 2111       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) {
 2111       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) {
 2142     BitTracker::RegisterRef RS = Op;
 2145     const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg);
 2171       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC,
 2171       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC,
 2205   const BitTracker::BitValue &B0 = RC[0];
 2206   if (B0.Type != BitTracker::BitValue::Ref)
 2215     const BitTracker::BitValue &V = RC[i];
 2216     if (V.Type != BitTracker::BitValue::Ref)
 2232     const BitTracker::RegisterCell &SC = BT.lookup(S);
 2236     const BitTracker::BitValue &S0 = SC[0];
 2237     if (S0.Type != BitTracker::BitValue::Ref || S0.RefI.Reg != SrcR)
 2251       const BitTracker::BitValue &V = SC[I];
 2252       if (V.Type != BitTracker::BitValue::Ref)
 2324       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) {
 2324       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC) {
 2330   BitTracker::RegisterRef RS = MI->getOperand(1);
 2339   const BitTracker::RegisterCell &SC = BT.lookup(RS.Reg);
 2340   const BitTracker::BitValue &V = SC[F+BN];
 2341   if (V.Type == BitTracker::BitValue::Ref && V.RefI.Reg != RS.Reg) {
 2347     BitTracker::RegisterRef RR(V.RefI.Reg, 0);
 2384       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC,
 2384       BitTracker::RegisterRef RD, const BitTracker::RegisterCell &RC,
 2417   const BitTracker::BitValue &TopV = RC[W-1];
 2424     const BitTracker::BitValue &V = RC[I];
 2425     if (V.Type == BitTracker::BitValue::Ref && V.RefI.Reg == RD.Reg)
 2471     const BitTracker::RegisterCell &SC = BT.lookup(R);
 2576       BitTracker::RegisterRef RD) {
 2596   BitTracker::RegisterRef SR = MI->getOperand(1);
 2599   const BitTracker::RegisterCell &SC = BT.lookup(SR.Reg);
 2605     const BitTracker::BitValue &V = SC[I];
 2617     BitTracker::RegisterCell NewRC(W);
 2685       BitTracker::RegisterCell NewRC(W);
 2686       NewRC[0] = BitTracker::BitValue::self();
 2687       NewRC.fill(1, W, BitTracker::BitValue::Zero);
 2725     BitTracker::RegisterRef RD = Op0;
 2729     const BitTracker::RegisterCell &RC = BT.lookup(RD.Reg);
 2773   BitTracker BT(HE, MF);
 2902     BitTracker *BTP = nullptr;
 2912       BitTracker::RegisterRef Inp, Out;
 2919       BitTracker::RegisterRef LR, PR; // Loop Register, Preheader Register
 2969   const BitTracker::RegisterCell &RC = BTP->lookup(Reg);
 2971     const BitTracker::BitValue &V = RC[i];
 3023   const BitTracker::RegisterCell &OutC = BTP->lookup(OutR);
 3025     const BitTracker::BitValue &V = OutC[i];
 3026     if (V.Type != BitTracker::BitValue::Ref)
 3038   const BitTracker::RegisterCell &OutC1 = BTP->lookup(OutR1);
 3039   const BitTracker::RegisterCell &OutC2 = BTP->lookup(OutR2);
 3045     const BitTracker::BitValue &V1 = OutC1[i], &V2 = OutC2[i];
 3046     if (V1.Type != V2.Type || V1.Type == BitTracker::BitValue::One)
 3048     if (V1.Type != BitTracker::BitValue::Ref)
 3318   BitTracker BT(HE, MF);
lib/Target/Hexagon/HexagonBitTracker.cpp
   38 using BT = BitTracker;
lib/Target/Hexagon/HexagonBitTracker.h
   25 struct HexagonEvaluator : public BitTracker::MachineEvaluator {
   26   using CellMapType = BitTracker::CellMapType;
   27   using RegisterRef = BitTracker::RegisterRef;
   28   using RegisterCell = BitTracker::RegisterCell;
   29   using BranchTargetList = BitTracker::BranchTargetList;
   39   BitTracker::BitMask mask(unsigned Reg, unsigned Sub) const override;
lib/Target/Hexagon/HexagonGenInsert.cpp
  233     bool operator() (const BitTracker::BitValue &V1,
  234           const BitTracker::BitValue &V2) const;
  241 bool BitValueOrdering::operator() (const BitTracker::BitValue &V1,
  242       const BitTracker::BitValue &V2) const {
  267     CellMapShadow(const BitTracker &T) : BT(T) {}
  269     const BitTracker::RegisterCell &lookup(unsigned VR) {
  274       const BitTracker::RegisterCell *CP = CVect[RInd];
  280     const BitTracker &BT;
  283     using CellVectType = std::vector<const BitTracker::RegisterCell *>;
  336   const BitTracker::RegisterCell &RC1 = CM.lookup(VR1), &RC2 = CM.lookup(VR2);
  339     const BitTracker::BitValue &V1 = RC1[i], &V2 = RC2[i];
  353   const BitTracker::RegisterCell &RC1 = CM.lookup(VR1);
  354   const BitTracker::RegisterCell &RC2 = CM.lookup(VR2);
  369   const BitTracker::BitValue &V1 = RC1[Bit1], V2 = RC2[Bit2];
  645   const BitTracker::RegisterCell &RC = CMS->lookup(VR);
  648     const BitTracker::BitValue &BV = RC[i];
  657   const BitTracker::RegisterCell &RC = CMS->lookup(VR);
  663     const BitTracker::BitValue &BV = RC[i];
  702   const BitTracker::RegisterCell &RC = CMS->lookup(VR);
  704     const BitTracker::BitValue &V = RC[i];
  705     if (V.Type == BitTracker::BitValue::Ref && V.RefI.Reg == VR)
  712   BitTracker::RegisterCell RC = CMS->lookup(VR);
  714     const BitTracker::BitValue &V = RC[i];
  715     if (V.Type == BitTracker::BitValue::Ref && V.RefI.Reg != VR)
  806   const BitTracker::RegisterCell &RC = CMS->lookup(VR);
  878     const BitTracker::RegisterCell &AC = CMS->lookup(SrcR);
 1528   BitTracker BTLoc(HE, MF);