/external/llvm/lib/CodeGen/ |
LiveRegMatrix.cpp | 75 void LiveRegMatrix::assign(LiveInterval &VirtReg, unsigned PhysReg) { 76 DEBUG(dbgs() << "assigning " << PrintReg(VirtReg.reg, TRI) 78 assert(!VRM->hasPhys(VirtReg.reg) && "Duplicate VirtReg assignment"); 79 VRM->assignVirt2Phys(VirtReg.reg, PhysReg); 83 Matrix[*Units].unify(VirtReg); 89 void LiveRegMatrix::unassign(LiveInterval &VirtReg) { 90 unsigned PhysReg = VRM->getPhys(VirtReg.reg); 91 DEBUG(dbgs() << "unassigning " << PrintReg(VirtReg.reg, TRI) 93 VRM->clearVirt(VirtReg.reg) [all...] |
LiveIntervalUnion.cpp | 29 void LiveIntervalUnion::unify(LiveInterval &VirtReg) { 30 if (VirtReg.empty()) 35 LiveInterval::iterator RegPos = VirtReg.begin(); 36 LiveInterval::iterator RegEnd = VirtReg.end(); 40 SegPos.insert(RegPos->start, RegPos->end, &VirtReg); 50 SegPos.insert(RegEnd->start, RegEnd->end, &VirtReg); 52 SegPos.insert(RegPos->start, RegPos->end, &VirtReg); 56 void LiveIntervalUnion::extract(LiveInterval &VirtReg) { 57 if (VirtReg.empty()) 62 LiveInterval::iterator RegPos = VirtReg.begin() [all...] |
RegAllocBase.cpp | 88 while (LiveInterval *VirtReg = dequeue()) { 89 assert(!VRM->hasPhys(VirtReg->reg) && "Register already assigned"); 92 if (MRI->reg_nodbg_empty(VirtReg->reg)) { 93 DEBUG(dbgs() << "Dropping unused " << *VirtReg << '\n'); 94 LIS->removeInterval(VirtReg->reg); 105 << MRI->getRegClass(VirtReg->reg)->getName() 106 << ':' << *VirtReg << " w=" << VirtReg->weight << '\n'); 109 unsigned AvailablePhysReg = selectOrSplit(*VirtReg, SplitVRegs); 116 I = MRI->reg_instr_begin(VirtReg->reg), E = MRI->reg_instr_end() [all...] |
AllocationOrder.cpp | 30 AllocationOrder::AllocationOrder(unsigned VirtReg, 36 Order = RegClassInfo.getOrder(MF.getRegInfo().getRegClass(VirtReg)); 37 TRI->getRegAllocationHints(VirtReg, Order, Hints, MF, &VRM);
|
RegAllocFast.cpp | 73 unsigned VirtReg; // Virtual register number. 79 : LastUse(nullptr), VirtReg(v), PhysReg(0), LastOpNum(0), Dirty(false){} 82 return TargetRegisterInfo::virtReg2Index(VirtReg); 114 // PhysRegState - One of the RegState enums, or a virtreg. 168 int getStackSpaceFor(unsigned VirtReg, const TargetRegisterClass *RC); 173 void killVirtReg(unsigned VirtReg); 175 void spillVirtReg(MachineBasicBlock::iterator MI, unsigned VirtReg); 181 LiveRegMap::iterator findLiveVirtReg(unsigned VirtReg) { 182 return LiveVirtRegs.find(TargetRegisterInfo::virtReg2Index(VirtReg)); 184 LiveRegMap::const_iterator findLiveVirtReg(unsigned VirtReg) const [all...] |
RegAllocBasic.cpp | 103 unsigned selectOrSplit(LiveInterval &VirtReg, 112 bool spillInterferences(LiveInterval &VirtReg, unsigned PhysReg, 165 // that interfere with VirtReg. The newly spilled or split live intervals are 167 bool RABasic::spillInterferences(LiveInterval &VirtReg, unsigned PhysReg, 175 LiveIntervalUnion::Query &Q = Matrix->query(VirtReg, *Units); 181 if (!Intf->isSpillable() || Intf->weight > VirtReg.weight) 187 " interferences with " << VirtReg << "\n"); 221 unsigned RABasic::selectOrSplit(LiveInterval &VirtReg, 227 AllocationOrder Order(VirtReg.reg, *VRM, RegClassInfo); 230 switch (Matrix->checkInterference(VirtReg, PhysReg)) [all...] |
RegisterCoalescer.h | 66 /// Create a CoalescerPair representing a virtreg-to-physreg copy. 68 CoalescerPair(unsigned VirtReg, unsigned PhysReg, 70 : TRI(tri), DstReg(PhysReg), SrcReg(VirtReg), DstIdx(0), SrcIdx(0),
|
RegAllocGreedy.cpp | 197 LiveRangeStage getStage(const LiveInterval &VirtReg) const { 198 return ExtraRegInfo[VirtReg.reg].Stage; 201 void setStage(const LiveInterval &VirtReg, LiveRangeStage Stage) { 203 ExtraRegInfo[VirtReg.reg].Stage = Stage; 338 unsigned canReassign(LiveInterval &VirtReg, unsigned PhysReg); 343 bool mayRecolorAllInterferences(unsigned PhysReg, LiveInterval &VirtReg, 354 unsigned calculateRegionSplitCost(LiveInterval &VirtReg, 359 unsigned doRegionSplit(LiveInterval &VirtReg, unsigned BestCand, 364 unsigned tryAssignCSRFirstTime(LiveInterval &VirtReg, AllocationOrder &Order, 454 bool RAGreedy::LRE_CanEraseVirtReg(unsigned VirtReg) { [all...] |
AllocationOrder.h | 34 /// Create a new AllocationOrder for VirtReg. 35 /// @param VirtReg Virtual register to allocate for. 38 AllocationOrder(unsigned VirtReg,
|
RegAllocBase.h | 83 /// enqueue - Add VirtReg to the priority queue of unassigned registers. 93 virtual unsigned selectOrSplit(LiveInterval &VirtReg,
|
VirtRegMap.cpp | 83 bool VirtRegMap::hasPreferredPhys(unsigned VirtReg) { 84 unsigned Hint = MRI->getSimpleHint(VirtReg); 89 return getPhys(VirtReg) == Hint; 92 bool VirtRegMap::hasKnownPreference(unsigned VirtReg) { 93 std::pair<unsigned, unsigned> Hint = MRI->getRegAllocationHint(VirtReg); 101 int VirtRegMap::assignVirt2StackSlot(unsigned virtReg) { 102 assert(TargetRegisterInfo::isVirtualRegister(virtReg)); 103 assert(Virt2StackSlotMap[virtReg] == NO_STACK_SLOT && 105 const TargetRegisterClass* RC = MF->getRegInfo().getRegClass(virtReg); 106 return Virt2StackSlotMap[virtReg] = createSpillSlot(RC) [all...] |
LiveDebugVariables.cpp | 312 /// lookupVirtReg - Find the EC leader for VirtReg or null. 313 UserValue *lookupVirtReg(unsigned VirtReg); 350 void mapVirtReg(unsigned VirtReg, UserValue *EC); 442 void LDVImpl::mapVirtReg(unsigned VirtReg, UserValue *EC) { 443 assert(TargetRegisterInfo::isVirtualRegister(VirtReg) && "Only map VirtRegs"); 444 UserValue *&Leader = virtRegToEqClass[VirtReg]; 448 UserValue *LDVImpl::lookupVirtReg(unsigned VirtReg) { 449 if (UserValue *UV = virtRegToEqClass.lookup(VirtReg)) 882 unsigned VirtReg = Loc.getReg(); 883 if (VRM.isAssignedReg(VirtReg) & [all...] |
TargetRegisterInfo.cpp | 264 TargetRegisterInfo::getRegAllocationHints(unsigned VirtReg, 270 std::pair<unsigned, unsigned> Hint = MRI.getRegAllocationHint(VirtReg); 282 // Check that Phys is a valid hint in VirtReg's register class. 288 // from VirtReg's register class if they aren't in the allocation order. The
|
InlineSpiller.cpp | 854 bool InlineSpiller::reMaterializeFor(LiveInterval &VirtReg, 857 VNInfo *ParentVNI = VirtReg.getVNInfoAt(UseIdx.getBaseIndex()); 863 if (MO.isReg() && MO.isUse() && MO.getReg() == VirtReg.reg) 879 markValueUsed(&VirtReg, ParentVNI); 884 // If the instruction also writes VirtReg.reg, it had better not require the 888 MIBundleOperands(MI).analyzeVirtReg(VirtReg.reg, &Ops) [all...] |
MachineBasicBlock.cpp | 368 unsigned VirtReg = I->getOperand(0).getReg(); 369 if (!MRI.constrainRegClass(VirtReg, RC)) 371 return VirtReg; 375 unsigned VirtReg = MRI.createVirtualRegister(RC); 376 BuildMI(*this, I, DebugLoc(), TII.get(TargetOpcode::COPY), VirtReg) 380 return VirtReg; [all...] |
PHIElimination.cpp | 198 /// isImplicitlyDefined - Return true if all defs of VirtReg are implicit-defs. 200 static bool isImplicitlyDefined(unsigned VirtReg, 202 for (MachineInstr &DI : MRI->def_instructions(VirtReg))
|
MachineTraceMetrics.cpp | 624 DataDep(const MachineRegisterInfo *MRI, unsigned VirtReg, unsigned UseOp) 626 assert(TargetRegisterInfo::isVirtualRegister(VirtReg)); 627 MachineRegisterInfo::def_iterator DefI = MRI->def_begin(VirtReg); [all...] |
/external/llvm/include/llvm/CodeGen/ |
LiveRegMatrix.h | 97 /// VirtReg is live across a call, and PhysReg isn't call-preserved. 101 /// Check for interference before assigning VirtReg to PhysReg. 102 /// If this function returns IK_Free, it is legal to assign(VirtReg, PhysReg). 105 InterferenceKind checkInterference(LiveInterval &VirtReg, unsigned PhysReg); 107 /// Assign VirtReg to PhysReg. 108 /// This will mark VirtReg's live range as occupied in the LiveRegMatrix and 110 void assign(LiveInterval &VirtReg, unsigned PhysReg); 112 /// Unassign VirtReg from its PhysReg. 113 /// Assuming that VirtReg was previously assigned to a PhysReg, this undoes 115 void unassign(LiveInterval &VirtReg); [all...] |
LiveIntervalUnion.h | 87 void unify(LiveInterval &VirtReg); 90 void extract(LiveInterval &VirtReg); 107 LiveInterval *VirtReg; 108 LiveInterval::iterator VirtRegI; // current position in VirtReg 117 Query(): LiveUnion(), VirtReg(), Tag(0), UserTag(0) {} 120 LiveUnion(LIU), VirtReg(VReg), CheckedFirstInterference(false), 126 VirtReg = nullptr; 137 if (UserTag == UTag && VirtReg == VReg && 144 VirtReg = VReg; 149 LiveInterval &virtReg() const [all...] |
VirtRegMap.h | 92 bool hasPhys(unsigned virtReg) const { 93 return getPhys(virtReg) != NO_PHYS_REG; 98 unsigned getPhys(unsigned virtReg) const { 99 assert(TargetRegisterInfo::isVirtualRegister(virtReg)); 100 return Virt2PhysMap[virtReg]; 105 void assignVirt2Phys(unsigned virtReg, unsigned physReg) { 106 assert(TargetRegisterInfo::isVirtualRegister(virtReg) && 108 assert(Virt2PhysMap[virtReg] == NO_PHYS_REG && 111 Virt2PhysMap[virtReg] = physReg; 116 void clearVirt(unsigned virtReg) { [all...] |
ScheduleDAGInstrs.h | 35 unsigned VirtReg; 38 VReg2SUnit(unsigned reg, SUnit *su): VirtReg(reg), SU(su) {} 41 return TargetRegisterInfo::virtReg2Index(VirtReg);
|
RegisterPressure.h | 421 bool hasUntiedDef(unsigned VirtReg) const { 422 return UntiedDefs.count(VirtReg);
|
/external/llvm/lib/Target/ARM/ |
ARMBaseRegisterInfo.h | 132 void getRegAllocationHints(unsigned VirtReg,
|
ARMBaseRegisterInfo.cpp | 217 ARMBaseRegisterInfo::getRegAllocationHints(unsigned VirtReg, 223 std::pair<unsigned, unsigned> Hint = MRI.getRegAllocationHint(VirtReg); 234 TargetRegisterInfo::getRegAllocationHints(VirtReg, Order, Hints, MF, VRM);
|
/external/llvm/include/llvm/Target/ |
TargetRegisterInfo.h | 638 /// VirtReg. These registers are effectively moved to the front of the 641 /// The Order argument is the allocation order for VirtReg's register class 649 /// order for VirtReg. There may be target-independent hints. 650 virtual void getRegAllocationHints(unsigned VirtReg, [all...] |