Lines Matching +full:non +full:- +full:overlapping

1 //===- RegisterClassInfo.cpp - Dynamic Register Class Info ----------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 // information about target register classes. Callee-saved vs. caller-saved and
14 //===----------------------------------------------------------------------===//
37 StressRA("stress-regalloc", cl::Hidden, cl::init(0), cl::value_desc("N"),
46 auto &STI = MF->getSubtarget(); in runOnMachineFunction()
51 RegClass.reset(new RCInfo[TRI->getNumRegClasses()]); in runOnMachineFunction()
56 const MachineRegisterInfo &MRI = MF->getRegInfo(); in runOnMachineFunction()
82 // overlapping CSR. in runOnMachineFunction()
83 CalleeSavedAliases.assign(TRI->getNumRegUnits(), 0); in runOnMachineFunction()
85 for (MCRegUnit U : TRI->regunits(*I)) in runOnMachineFunction()
95 BitVector CSRHintsForAllocOrder(TRI->getNumRegs()); in runOnMachineFunction()
104 RegCosts = TRI->getRegisterCosts(*MF); in runOnMachineFunction()
107 const BitVector &RR = MF->getRegInfo().getReservedRegs(); in runOnMachineFunction()
115 unsigned NumPSets = TRI->getNumRegPressureSets(); in runOnMachineFunction()
122 /// compute - Compute the preferred allocation order for RC with reserved
127 RCInfo &RCI = RegClass[RC->getID()]; in compute()
128 auto &STI = MF->getSubtarget(); in compute()
131 unsigned NumRegs = RC->getNumRegs(); in compute()
144 ArrayRef<MCPhysReg> RawOrder = RC->getRawAllocationOrder(*MF); in compute()
179 // Check if RC is a proper sub-class. in compute()
181 TRI->getLargestLegalSuperClass(RC, *MF)) in compute()
189 dbgs() << "AllocationOrder(" << TRI->getRegClassName(RC) << ") = ["; in compute()
192 dbgs() << (RCI.ProperSubClass ? " ] (sub-class)\n" : " ]\n"); in compute()
195 // RCI is now up-to-date. in compute()
199 /// This is not accurate because two overlapping register sets may have some
205 for (const TargetRegisterClass *C : TRI->regclasses()) { in computePSetLimit()
206 const int *PSetID = TRI->getRegClassPressureSets(C); in computePSetLimit()
207 for (; *PSetID != -1; ++PSetID) { in computePSetLimit()
211 if (*PSetID == -1) in computePSetLimit()
216 unsigned NUnits = TRI->getRegClassWeight(C).WeightLimit; in computePSetLimit()
225 unsigned RegPressureSetLimit = TRI->getRegPressureSetLimit(*MF, Idx); in computePSetLimit()
229 // return non-zero value. in computePSetLimit()
232 unsigned NReserved = RC->getNumRegs() - NAllocatableRegs; in computePSetLimit()
233 return RegPressureSetLimit - TRI->getRegClassWeight(RC).RegWeight * NReserved; in computePSetLimit()