HomeSort by relevance Sort by last modified time
    Searched refs:VirtReg (Results 1 - 20 of 20) sorted by null

  /external/llvm/lib/CodeGen/
LiveRegMatrix.cpp 72 void LiveRegMatrix::assign(LiveInterval &VirtReg, unsigned PhysReg) {
73 DEBUG(dbgs() << "assigning " << PrintReg(VirtReg.reg, TRI)
75 assert(!VRM->hasPhys(VirtReg.reg) && "Duplicate VirtReg assignment");
76 VRM->assignVirt2Phys(VirtReg.reg, PhysReg);
80 Matrix[*Units].unify(VirtReg);
86 void LiveRegMatrix::unassign(LiveInterval &VirtReg) {
87 unsigned PhysReg = VRM->getPhys(VirtReg.reg);
88 DEBUG(dbgs() << "unassigning " << PrintReg(VirtReg.reg, TRI)
90 VRM->clearVirt(VirtReg.reg)
    [all...]
LiveRegMatrix.h 98 /// VirtReg is live across a call, and PhysReg isn't call-preserved.
102 /// Check for interference before assigning VirtReg to PhysReg.
103 /// If this function returns IK_Free, it is legal to assign(VirtReg, PhysReg).
106 InterferenceKind checkInterference(LiveInterval &VirtReg, unsigned PhysReg);
108 /// Assign VirtReg to PhysReg.
109 /// This will mark VirtReg's live range as occupied in the LiveRegMatrix and
111 void assign(LiveInterval &VirtReg, unsigned PhysReg);
113 /// Unassign VirtReg from its PhysReg.
114 /// Assuming that VirtReg was previously assigned to a PhysReg, this undoes
116 void unassign(LiveInterval &VirtReg);
    [all...]
RegAllocBase.cpp 84 while (LiveInterval *VirtReg = dequeue()) {
85 assert(!VRM->hasPhys(VirtReg->reg) && "Register already assigned");
88 if (MRI->reg_nodbg_empty(VirtReg->reg)) {
89 DEBUG(dbgs() << "Dropping unused " << *VirtReg << '\n');
90 LIS->removeInterval(VirtReg->reg);
101 << MRI->getRegClass(VirtReg->reg)->getName()
102 << ':' << PrintReg(VirtReg->reg) << ' ' << *VirtReg << '\n');
105 unsigned AvailablePhysReg = selectOrSplit(*VirtReg, SplitVRegs);
112 for (MachineRegisterInfo::reg_iterator I = MRI->reg_begin(VirtReg->reg)
    [all...]
LiveIntervalUnion.h 88 void unify(LiveInterval &VirtReg);
91 void extract(LiveInterval &VirtReg);
108 LiveInterval *VirtReg;
109 LiveInterval::iterator VirtRegI; // current position in VirtReg
118 Query(): LiveUnion(), VirtReg(), Tag(0), UserTag(0) {}
121 LiveUnion(LIU), VirtReg(VReg), CheckedFirstInterference(false),
127 VirtReg = NULL;
138 if (UserTag == UTag && VirtReg == VReg &&
145 VirtReg = VReg;
150 LiveInterval &virtReg() const
    [all...]
LiveIntervalUnion.cpp 30 void LiveIntervalUnion::unify(LiveInterval &VirtReg) {
31 if (VirtReg.empty())
36 LiveInterval::iterator RegPos = VirtReg.begin();
37 LiveInterval::iterator RegEnd = VirtReg.end();
41 SegPos.insert(RegPos->start, RegPos->end, &VirtReg);
51 SegPos.insert(RegEnd->start, RegEnd->end, &VirtReg);
53 SegPos.insert(RegPos->start, RegPos->end, &VirtReg);
57 void LiveIntervalUnion::extract(LiveInterval &VirtReg) {
58 if (VirtReg.empty())
63 LiveInterval::iterator RegPos = VirtReg.begin()
    [all...]
RegAllocBasic.cpp 105 virtual unsigned selectOrSplit(LiveInterval &VirtReg,
114 bool spillInterferences(LiveInterval &VirtReg, unsigned PhysReg,
167 // that interfere with VirtReg. The newly spilled or split live intervals are
169 bool RABasic::spillInterferences(LiveInterval &VirtReg, unsigned PhysReg,
177 LiveIntervalUnion::Query &Q = Matrix->query(VirtReg, *Units);
183 if (!Intf->isSpillable() || Intf->weight > VirtReg.weight)
189 " interferences with " << VirtReg << "\n");
223 unsigned RABasic::selectOrSplit(LiveInterval &VirtReg,
229 AllocationOrder Order(VirtReg.reg, *VRM, RegClassInfo);
232 switch (Matrix->checkInterference(VirtReg, PhysReg))
    [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...]
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),
AllocationOrder.h 34 /// AllocationOrder - Create a new AllocationOrder for VirtReg.
35 /// @param VirtReg Virtual register to allocate for.
38 AllocationOrder(unsigned VirtReg,
AllocationOrder.cpp 25 AllocationOrder::AllocationOrder(unsigned VirtReg,
29 const TargetRegisterClass *RC = VRM.getRegInfo().getRegClass(VirtReg);
31 VRM.getRegInfo().getRegAllocationHint(VirtReg);
RegAllocFast.cpp 72 unsigned VirtReg; // Virtual register number.
78 : LastUse(0), VirtReg(v), PhysReg(0), LastOpNum(0), Dirty(false) {}
81 return TargetRegisterInfo::virtReg2Index(VirtReg);
113 // PhysRegState - One of the RegState enums, or a virtreg.
150 int getStackSpaceFor(unsigned VirtReg, const TargetRegisterClass *RC);
155 void killVirtReg(unsigned VirtReg);
157 void spillVirtReg(MachineBasicBlock::iterator MI, unsigned VirtReg);
163 LiveRegMap::iterator findLiveVirtReg(unsigned VirtReg) {
164 return LiveVirtRegs.find(TargetRegisterInfo::virtReg2Index(VirtReg));
166 LiveRegMap::const_iterator findLiveVirtReg(unsigned VirtReg) const
    [all...]
RegAllocGreedy.cpp 137 LiveRangeStage getStage(const LiveInterval &VirtReg) const {
138 return ExtraRegInfo[VirtReg.reg].Stage;
141 void setStage(const LiveInterval &VirtReg, LiveRangeStage Stage) {
143 ExtraRegInfo[VirtReg.reg].Stage = Stage;
354 bool RAGreedy::LRE_CanEraseVirtReg(unsigned VirtReg) {
355 if (VRM->hasPhys(VirtReg)) {
356 Matrix->unassign(LIS->getInterval(VirtReg));
359 // Unassigned virtreg is probably in the priority queue.
364 void RAGreedy::LRE_WillShrinkVirtReg(unsigned VirtReg) {
365 if (!VRM->hasPhys(VirtReg))
    [all...]
RegAllocBase.h 82 /// enqueue - Add VirtReg to the priority queue of unassigned registers.
92 virtual unsigned selectOrSplit(LiveInterval &VirtReg,
VirtRegMap.cpp 79 unsigned VirtRegMap::getRegAllocPref(unsigned virtReg) {
80 std::pair<unsigned, unsigned> Hint = MRI->getRegAllocationHint(virtReg);
90 int VirtRegMap::assignVirt2StackSlot(unsigned virtReg) {
91 assert(TargetRegisterInfo::isVirtualRegister(virtReg));
92 assert(Virt2StackSlotMap[virtReg] == NO_STACK_SLOT &&
94 const TargetRegisterClass* RC = MF->getRegInfo().getRegClass(virtReg);
95 return Virt2StackSlotMap[virtReg] = createSpillSlot(RC);
98 void VirtRegMap::assignVirt2StackSlot(unsigned virtReg, int SS) {
99 assert(TargetRegisterInfo::isVirtualRegister(virtReg));
100 assert(Virt2StackSlotMap[virtReg] == NO_STACK_SLOT &
    [all...]
LiveDebugVariables.cpp 303 /// lookupVirtReg - Find the EC leader for VirtReg or null.
304 UserValue *lookupVirtReg(unsigned VirtReg);
335 void mapVirtReg(unsigned VirtReg, UserValue *EC);
429 void LDVImpl::mapVirtReg(unsigned VirtReg, UserValue *EC) {
430 assert(TargetRegisterInfo::isVirtualRegister(VirtReg) && "Only map VirtRegs");
431 UserValue *&Leader = virtRegToEqClass[VirtReg];
435 UserValue *LDVImpl::lookupVirtReg(unsigned VirtReg) {
436 if (UserValue *UV = virtRegToEqClass.lookup(VirtReg))
903 unsigned VirtReg = Loc.getReg();
904 if (VRM.isAssignedReg(VirtReg) &
    [all...]
InlineSpiller.cpp 833 bool InlineSpiller::reMaterializeFor(LiveInterval &VirtReg,
836 VNInfo *ParentVNI = VirtReg.getVNInfoAt(UseIdx.getBaseIndex());
842 if (MO.isReg() && MO.isUse() && MO.getReg() == VirtReg.reg)
858 markValueUsed(&VirtReg, ParentVNI);
863 // If the instruction also writes VirtReg.reg, it had better not require the
867 MIBundleOperands(MI).analyzeVirtReg(VirtReg.reg, &Ops);
869 markValueUsed(&VirtReg, ParentVNI);
    [all...]
PHIElimination.cpp 174 /// isImplicitlyDefined - Return true if all defs of VirtReg are implicit-defs.
176 static bool isImplicitlyDefined(unsigned VirtReg,
178 for (MachineRegisterInfo::def_iterator DI = MRI->def_begin(VirtReg),
PrologEpilogInserter.cpp 821 unsigned VirtReg = 0;
841 if (Reg != VirtReg) {
847 VirtReg = Reg;
MachineTraceMetrics.cpp 529 DataDep(const MachineRegisterInfo *MRI, unsigned VirtReg, unsigned UseOp)
531 assert(TargetRegisterInfo::isVirtualRegister(VirtReg));
532 MachineRegisterInfo::def_iterator DefI = MRI->def_begin(VirtReg);
    [all...]
  /external/llvm/include/llvm/CodeGen/
ScheduleDAGInstrs.h 101 unsigned VirtReg;
104 VReg2SUnit(unsigned reg, SUnit *su): VirtReg(reg), SU(su) {}
107 return TargetRegisterInfo::virtReg2Index(VirtReg);

Completed in 484 milliseconds