search for: hasstackslot

Displaying 13 results from an estimated 13 matches for "hasstackslot".

2006 Aug 21
2
[LLVMdev] Recalculating live intervals
...tervals having correct weights? > > The linscan allocator inserts spill code with infinite weight, take a look > at how it works. So, as far as I understood live intervals with weight equal to HUGE_VAL are spilled and I don't need to allocate physical registers for them, right? Shoud hasStackSlot method of VirtRegMap return true for these intervals' reg members? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20060821/d306aec5/attachment.html>
2006 Aug 21
0
[LLVMdev] Recalculating live intervals
...is not spilled again, otherwise you may enter on an infinite loop, always spilling the same spilled register. Fernando > > So, as far as I understood live intervals with weight equal to HUGE_VAL are > spilled and I don't need to allocate physical registers for them, right? > Shoud hasStackSlot method of VirtRegMap return true for these intervals' reg > members? >
2006 Aug 21
2
[LLVMdev] Recalculating live intervals
So what addIntervalsToSpills returns are new intervals to allocate with infinite weights, right? And I need not to allocate the old interval. Should hasStackSlot return true on its register then? On 8/21/06, Fernando Magno Quintao Pereira <fernando at cs.ucla.edu> wrote: > > > Well, someone correct me if am wrong, but, you still have to allocate > physical registers to them, because their values must be reloaded before > been used. Bu...
2006 Aug 21
0
[LLVMdev] Recalculating live intervals
> So what addIntervalsToSpills returns are new intervals to allocate with > infinite weights, right? > And I need not to allocate the old interval. Should hasStackSlot return true > on its register then? > I am not very sure about addIntervalsToSpill, but, for all the registers created to replace a spilled registers, they must have a stack slot assigned to them. I am sending you my spilling method, so you can have an example: //===------------------------...
2006 Aug 14
2
[LLVMdev] Folding instructions
...< mi->getNumOperands(); u++) { const MachineOperand & mo = mi->getOperand(u); if(mo.isUse() && mo.isRegister() && mo.getReg()) { if(MRegisterInfo::isVirtualRegister(mo.getReg())) { unsigned v_reg = mo.getReg(); if(this->vrm->hasStackSlot(v_reg)) { int slot = this->vrm->getStackSlot(v_reg); // First, try to fold the memory reference into the // instruction. If we can do this, we don't need to // insert spill code. const TargetMachine & target_machine =...
2007 Aug 06
5
[LLVMdev] Spillers
...rtualRegister(LIReg) || LIReg == VReg) continue; // **** Check to see if the physreg we assigned conflicts with something // **** else. If so, that thing has to live in memory too. if (VRM->hasPhys(LIReg) && VRM->getPhys(LIReg) == PReg && !VRM->hasStackSlot(LIReg) && Added[I]->overlaps(L)) VRM->assignVirt2StackSlot(LIReg); } } The two points I want to talk about are noted by the **** comments. The first takes a newly-created live interval to represent the lifetime between a reload and use of the reload (or def and store)...
2006 Aug 06
2
[LLVMdev] Recalculating live intervals
Hi! I'm developing a register allocator that works iteratively. It spills some virtual registers on each iteration until all the rest have physical ones assigned. How can I spill some live intervals at the end of each iteration with new live intervals having correct weights? Thanks. -------------- next part -------------- An HTML attachment was scrubbed... URL:
2006 Aug 06
0
[LLVMdev] Recalculating live intervals
On Sun, 6 Aug 2006, Anton Vayvod wrote: > I'm developing a register allocator that works iteratively. It spills some > virtual registers on each iteration until all the rest have physical ones > assigned. Take a look at the linear scan allocator. It is also iterative: it uses the spiller interface to insert spill code, which creates (unspillable) intervals for the spill code it
2006 Aug 14
0
[LLVMdev] Folding instructions
...erands(); u++) { > const MachineOperand & mo = mi->getOperand(u); > if(mo.isUse() && mo.isRegister() && mo.getReg()) { > if(MRegisterInfo::isVirtualRegister(mo.getReg())) { > unsigned v_reg = mo.getReg(); > if(this->vrm->hasStackSlot(v_reg)) { > int slot = this->vrm->getStackSlot(v_reg); > // First, try to fold the memory reference into the > // instruction. If we can do this, we don't need to > // insert spill code. > const TargetMachine & targ...
2007 Aug 07
0
[LLVMdev] Spillers
...; VReg) continue; > > // **** Check to see if the physreg we assigned conflicts > with something > // **** else. If so, that thing has to live in memory too. > if (VRM->hasPhys(LIReg) && VRM->getPhys(LIReg) == PReg && > !VRM->hasStackSlot(LIReg) && Added[I]->overlaps(L)) > VRM->assignVirt2StackSlot(LIReg); > } > } > > The two points I want to talk about are noted by the **** > comments. The first > takes a newly-created live interval to represent the lifetime > between a reloa...
2006 Aug 14
0
[LLVMdev] Folding instructions
On Aug 13, 2006, at 11:16 PM, Fernando Magno Quintao Pereira wrote: > > Dear LLVMers, > > I am trying to fold memory operands in the way that is done in > RegAllocLocal.cpp, or in LiveIntervalAnalysis.cpp, but I am getting > errors > that > I don't know how to fix. Could someone tell me which steps should I > take > in order > to correctly fold memory
2006 Aug 21
3
[LLVMdev] Recalculating live intervals
...h has a stack slot already? On 8/21/06, Fernando Magno Quintao Pereira <fernando at cs.ucla.edu> wrote: > > > > So what addIntervalsToSpills returns are new intervals to allocate with > > infinite weights, right? > > And I need not to allocate the old interval. Should hasStackSlot return > true > > on its register then? > > > > I am not very sure about addIntervalsToSpill, but, for all the registers > created to replace a spilled registers, they must have a stack slot > assigned to them. I am sending you my spilling method, so you can have an >...
2006 Aug 14
2
[LLVMdev] Folding instructions
Dear LLVMers, I am trying to fold memory operands in the way that is done in RegAllocLocal.cpp, or in LiveIntervalAnalysis.cpp, but I am getting errors that I don't know how to fix. Could someone tell me which steps should I take in order to correctly fold memory operands? The code that I am using is: const TargetMachine & target_machine = this->machine_function->getTarget();