Displaying 7 results from an estimated 7 matches for "calculateweightandhint".
2013 Jan 09
2
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
Ok, I've found that marking tiny live intervals as not spillable inside
VirtRegAuxInfo::CalculateWeightAndHint is not playing nicely with very
constrained regclasses, in my case a regclass composed of only one
register.
As a workaround, instead of marking them as not spillable, I've marked them
with a very high spill cost and the regalloc is able to compile the
function with good code quality. To avoid...
2013 Jan 09
0
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
On Jan 9, 2013, at 10:46 AM, Borja Ferrer <borja.ferav at gmail.com> wrote:
> Ok, I've found that marking tiny live intervals as not spillable inside VirtRegAuxInfo::CalculateWeightAndHint is not playing nicely with very constrained regclasses, in my case a regclass composed of only one register.
> As a workaround, instead of marking them as not spillable, I've marked them with a very high spill cost and the regalloc is able to compile the function with good code quality. To...
2012 Mar 21
2
[LLVMdev] PBQP & CalcSpillWeights
...a vreg node is
either :
- a physical register (problem.isPRegOption(vreg, alloc)),
- or a spill (problem.isSpillOption(vreg, alloc))
The problem is that pass CalcSpillWeights can 'hint' that it is a poor
idea to spill this specific register with :
CalcSpillWeights.cpp / VirtRegAuxInfo::CalculateWeightAndHint :
// Mark li as unspillable if all live ranges are tiny.
if (li.isZeroLength(LIS.getSlotIndexes())) {
li.markNotSpillable();
...
This hint makes the register non spillable at all for the spiller (that's the
assert above), not just a bad-idea-to-spill-but-feasible. The pbqp allocat...
2013 Jan 07
0
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
On Jan 7, 2013, at 4:58 AM, Borja Ferrer <borja.ferav at gmail.com> wrote:
> Hello Jakob,
>
> Did you get a chance to take a look into this, and if not, can you do it when you get some spare time?
It's not likely I'll have time to look at this in the near future. I'd recommend you do it yourself.
/jakob
> 2012/12/19 Borja Ferrer <borja.ferav at gmail.com>
2012 Mar 23
0
[LLVMdev] PBQP & CalcSpillWeights
...a physical register (problem.isPRegOption(vreg, alloc)),
> - or a spill (problem.isSpillOption(vreg, alloc))
>
> The problem is that pass CalcSpillWeights can 'hint' that it is a poor
> idea to spill this specific register with :
>
> CalcSpillWeights.cpp / VirtRegAuxInfo::CalculateWeightAndHint :
> // Mark li as unspillable if all live ranges are tiny.
> if (li.isZeroLength(LIS.getSlotIndexes())) {
> li.markNotSpillable();
> ...
>
> This hint makes the register non spillable at all for the spiller (that's the
> assert above), not just a bad-idea-to-spill-b...
2013 Jan 07
2
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
Hello Jakob,
Did you get a chance to take a look into this, and if not, can you do it
when you get some spare time?
Thanks!
2012/12/19 Borja Ferrer <borja.ferav at gmail.com>
> We did something like this back when the register allocator couldn't split
>> live ranges.
>>
>
> Yes, I remember the isWinToJoinCrossClass() function, removed here:
>
>
2012 Sep 18
2
[LLVMdev] liveness assertion problem in llc
...lvm/trunk/llvm/include/llvm/CodeGen/MachineRegisterInfo.h:514
#7 0x08803f51 in llvm::MachineRegisterInfo::defusechain_iterator<true, true, false>::skipInstruction (this=0xbffff068) at /work/llvm/trunk/llvm/include/llvm/CodeGen/MachineRegisterInfo.h:543
#8 0x0896d5bf in llvm::VirtRegAuxInfo::CalculateWeightAndHint (this=0xbffff0d8, li=...) at /work/llvm/trunk/llvm/lib/CodeGen/CalcSpillWeights.cpp:131
#9 0x0896d22e in llvm::CalculateSpillWeights::runOnMachineFunction (this=0x937f0a8, MF=...) at /work/llvm/trunk/llvm/lib/CodeGen/CalcSpillWeights.cpp:53
#10 0x08847e95 in llvm::MachineFunctionPass::runOnFunctio...