Lines Matching full:rr

126 std::set<RegisterId> PhysicalRegisterInfo::getUnits(RegisterRef RR) const {  in getUnits()
129 if (RR.Reg == 0) in getUnits()
132 if (RR.isReg()) { in getUnits()
133 if (RR.Mask.none()) in getUnits()
135 for (MCRegUnitMaskIterator UM(RR.idx(), &TRI); UM.isValid(); ++UM) { in getUnits()
137 if ((M & RR.Mask).any()) in getUnits()
143 assert(RR.isMask()); in getUnits()
145 const uint32_t *MB = getRegMaskBits(RR.idx()); in getUnits()
165 RegisterRef PhysicalRegisterInfo::mapTo(RegisterRef RR, unsigned R) const { in mapTo() argument
166 if (RR.Reg == R) in mapTo()
167 return RR; in mapTo()
168 if (unsigned Idx = TRI.getSubRegIndex(R, RR.Reg)) in mapTo()
169 return RegisterRef(R, TRI.composeSubRegIndexLaneMask(Idx, RR.Mask)); in mapTo()
170 if (unsigned Idx = TRI.getSubRegIndex(RR.Reg, R)) { in mapTo()
174 LaneBitmask M = TRI.reverseComposeSubRegIndexLaneMask(Idx, RR.Mask); in mapTo()
279 bool RegisterAggr::hasAliasOf(RegisterRef RR) const { in hasAliasOf()
280 if (RR.isMask()) in hasAliasOf()
281 return Units.anyCommon(PRI.getMaskUnits(RR.Reg)); in hasAliasOf()
283 for (MCRegUnitMaskIterator U(RR.Reg, &PRI.getTRI()); U.isValid(); ++U) { in hasAliasOf()
285 if ((P.second & RR.Mask).any()) in hasAliasOf()
292 bool RegisterAggr::hasCoverOf(RegisterRef RR) const { in hasCoverOf()
293 if (RR.isMask()) { in hasCoverOf()
294 BitVector T(PRI.getMaskUnits(RR.Reg)); in hasCoverOf()
298 for (MCRegUnitMaskIterator U(RR.Reg, &PRI.getTRI()); U.isValid(); ++U) { in hasCoverOf()
300 if ((P.second & RR.Mask).any()) in hasCoverOf()
307 RegisterAggr &RegisterAggr::insert(RegisterRef RR) { in insert() argument
308 if (RR.isMask()) { in insert()
309 Units |= PRI.getMaskUnits(RR.Reg); in insert()
313 for (MCRegUnitMaskIterator U(RR.Reg, &PRI.getTRI()); U.isValid(); ++U) { in insert()
315 if ((P.second & RR.Mask).any()) in insert()
326 RegisterAggr &RegisterAggr::intersect(RegisterRef RR) { in intersect() argument
327 return intersect(RegisterAggr(PRI).insert(RR)); in intersect()
335 RegisterAggr &RegisterAggr::clear(RegisterRef RR) { in clear() argument
336 return clear(RegisterAggr(PRI).insert(RR)); in clear()
344 RegisterRef RegisterAggr::intersectWith(RegisterRef RR) const { in intersectWith()
346 T.insert(RR).intersect(*this); in intersectWith()
354 RegisterRef RegisterAggr::clearIn(RegisterRef RR) const { in clearIn()
355 return RegisterAggr(PRI).insert(RR).clear(*this).makeRegRef(); in clearIn()