Lines Matching defs:Other

1694     /// Lanes with defined values in this register. Other lanes are undef and
1742 bool valuesIdentical(VNInfo *Val0, VNInfo *Val1, const JoinVals &Other) const;
1747 /// Recursively calls computeAssignment() on this and Other, guaranteeing that
1751 ConflictResolution analyzeValue(unsigned ValNo, JoinVals &Other);
1756 void computeAssignment(unsigned ValNo, JoinVals &Other);
1758 /// Assuming ValNo is going to clobber some valid lanes in Other.LR, compute
1761 /// Multiple values in Other.LR can be affected since partial redefinitions
1769 /// For each ValNo in Other that is affected, add an (EndIndex, TaintedLanes)
1780 /// Determine if ValNo is a copy of a value number in LR or Other.LR that will
1786 bool isPrunedValue(unsigned ValNo, JoinVals &Other);
1801 bool mapValues(JoinVals &Other);
1805 bool resolveConflicts(JoinVals &Other);
1807 /// Prune the live range of values in Other.LR where they would conflict with
1810 void pruneValues(JoinVals &Other, SmallVectorImpl<SlotIndex> &EndPoints,
1889 const JoinVals &Other) const {
1898 std::tie(Orig1, Reg1) = Other.followCopyChain(Value1);
1908 JoinVals::analyzeValue(unsigned ValNo, JoinVals &Other) {
1957 computeAssignment(V.RedefVNI->id, Other);
1973 // Find the value in Other that overlaps VNI->def, if any.
1974 LiveQueryResult OtherLRQ = Other.LR.Query(VNI->def);
1986 Other.computeAssignment(OtherVNI->id, *this);
1994 Val &OtherV = Other.Vals[OtherVNI->id];
2010 // No simultaneous def. Is Other live at the def?
2018 // We have overlapping values, or possibly a kill of Other.
2020 Other.computeAssignment(V.OtherVNI->id, *this);
2021 Val &OtherV = Other.Vals[V.OtherVNI->id];
2062 // This may not be a real conflict if DefMI simply kills Other and defines
2073 && valuesIdentical(VNI, V.OtherVNI, Other))
2108 // Otherwise Other.RI wouldn't be live here.
2109 if ((TRI->getSubRegIndexLaneMask(Other.SubIdx) & ~V.WriteLanes) == 0)
2129 void JoinVals::computeAssignment(unsigned ValNo, JoinVals &Other) {
2137 switch ((V.Resolution = analyzeValue(ValNo, Other))) {
2142 assert(Other.Vals[V.OtherVNI->id].isAnalyzed() && "Missing recursion");
2143 Assignments[ValNo] = Other.Assignments[V.OtherVNI->id];
2146 << PrintReg(Other.Reg) << ':' << V.OtherVNI->id << '@'
2154 Val &OtherV = Other.Vals[V.OtherVNI->id];
2170 bool JoinVals::mapValues(JoinVals &Other) {
2172 computeAssignment(i, Other);
2183 taintExtent(unsigned ValNo, LaneBitmask TaintedLanes, JoinVals &Other,
2189 // Scan Other.LR from VNI.def to MBBEnd.
2190 LiveInterval::iterator OtherI = Other.LR.find(VNI->def);
2191 assert(OtherI != Other.LR.end() && "No conflict?");
2197 DEBUG(dbgs() << "\t\ttaints global " << PrintReg(Other.Reg) << ':'
2201 DEBUG(dbgs() << "\t\ttaints local " << PrintReg(Other.Reg) << ':'
2210 if (++OtherI == Other.LR.end() || OtherI->start >= MBBEnd)
2214 const Val &OV = Other.Vals[OtherI->valno->id];
2238 bool JoinVals::resolveConflicts(JoinVals &Other) {
2252 const Val &OtherV = Other.Vals[V.OtherVNI->id];
2259 if (!taintExtent(i, TaintedLanes, Other, TaintExtent))
2281 if (usesLanes(MI, Other.Reg, Other.SubIdx, TaintedLanes)) {
2303 bool JoinVals::isPrunedValue(unsigned ValNo, JoinVals &Other) {
2314 V.Pruned = Other.isPrunedValue(V.OtherVNI->id, *this);
2318 void JoinVals::pruneValues(JoinVals &Other,
2327 // This value takes precedence over the value in Other.LR.
2328 LIS->pruneValue(Other.LR, Def, &EndPoints);
2333 Val &OtherV = Other.Vals[Vals[i].OtherVNI->id];
2354 DEBUG(dbgs() << "\t\tpruned " << PrintReg(Other.Reg) << " at " << Def
2355 << ": " << Other.LR << '\n');
2360 if (isPrunedValue(i, Other)) {
2361 // This value is ultimately a copy of a pruned value in LR or Other.LR.