Displaying 20 results from an estimated 8000 matches similar to: "[LLVMdev] Number of spills/stores"
2008 Mar 01
1
[LLVMdev] Instruction Scheduling
Hi, guys,
I am comparing the performance of the default scheduler (seems to be
the one that minimizes register pressure) with no scheduler
(-pre-RA-sched=none), and I got these numbers. The ratio is
low_reg_pressure/none, that is, the lower the number, the better the
performance with low register pressure:
CFP2000/177.mesa/177.mesa 1.00
CFP2000/179.art/179.art
2006 Aug 23
1
[LLVMdev] Recalculating live intervals
Fernando Magno Quintao Pereira wrote:
>> I'm not sure about one thing: you assign stack slot to each new register you
>> replace the spilled one with. And then you need to allocate physical
>> registers to them. Is it possible to assign physical register to the virtual
>> one which has a stack slot already?
>>
>
> Yes. The stack slot is the place where the
2006 Jun 01
1
[LLVMdev] Live ranges of physical registers
Dear LLVM guys,
I am coding a liveness analysis algorithm, and I found this comment
on LiveVariables.cpp:
Line 00195 - http://llvm.org/doxygen/LiveVariables_8cpp-source.html :
// PhysRegInfo - Keep track of which instruction was the last use of a
// physical register. This is a purely local property, because all
physical
// register references as presumed dead across basic blocks.
2007 Jun 14
2
[LLVMdev] Moving data between regs
The short answer is this is not currently done. LLVM register
allocator does not currently use a move to a different register class
in lieu of spills. This is definitely something we should do in the
future. Can you file a bugzilla enhancement request?
Thanks,
Evan
On Jun 13, 2007, at 11:09 AM, Chris Lattner wrote:
> On Tue, 12 Jun 2007, Fernando Magno Quintao Pereira wrote:
>>
2006 Aug 21
0
[LLVMdev] Recalculating live intervals
> I'm not sure about one thing: you assign stack slot to each new register you
> replace the spilled one with. And then you need to allocate physical
> registers to them. Is it possible to assign physical register to the virtual
> one which has a stack slot already?
>
Yes. The stack slot is the place where the value will be stored in memory,
but, when that value is effectively
2007 Apr 14
6
[LLVMdev] Regalloc Refactoring
On Thu, 12 Apr 2007, Fernando Magno Quintao Pereira wrote:
>> I'm definitely interested in improving coalescing and it sounds like
>> this would fall under that work. Do you have references to papers
>> that talk about the various algorithms?
>
> Some suggestions:
>
> @InProceedings{Budimlic02,
> AUTHOR = {Zoran Budimlic and Keith D. Cooper and Timothy
2007 Jun 13
2
[LLVMdev] Moving data between regs
Dear LLVMers,
I wish someone could help me to clarify a register allocation
question. I will use X86 in this example, but it really does not matter
too much.
Imagine that I have a virtual v stored in register AL, and I am about
to cross a function call, that effectively overwrites AL. Well, I have,
say, register ESI free, but as it happens, ESI is bigger than AL. It
should be
2006 Aug 21
2
[LLVMdev] Recalculating live intervals
On 8/7/06, Chris Lattner <sabre at nondot.org> wrote:
>
> 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
>
2006 Aug 21
3
[LLVMdev] Recalculating live intervals
I'm not sure about one thing: you assign stack slot to each new register you
replace the spilled one with. And then you need to allocate physical
registers to them. Is it possible to assign physical register to the virtual
one which has a stack slot already?
On 8/21/06, Fernando Magno Quintao Pereira <fernando at cs.ucla.edu> wrote:
>
>
> > So what addIntervalsToSpills
2007 Dec 16
3
[LLVMdev] Question about coalescing
Dear guys,
I want to coalesce some copies, and I would like to know if there is
any method that I can call, like JoinCopy from the old (LLVM 1.9)
LiveIntervals class. I found it in SimpleRegisterCoalescing (LLVM 2.1),
but I do not want to call this analysis, as I have my own.
basically, I can determine that two virtuals do not overlap, and I
know that it is safe to join them. In
2007 Nov 23
2
[LLVMdev] global register allocation.
On 11/23/07, Fernando Magno Quintao Pereira <fernando at cs.ucla.edu> wrote:
>
>
> Hi, Sanjiv,
>
> those passes operate on the whole machine function. Each machine
> function contains many basic blocks. If a program has many functions, the
> register allocator will be called as many times, i.e it does not do
> interprocedural allocation.
>
> best,
>
>
2020 Feb 22
3
The AnghaBench collection of compilable programs
Hi Florian,
we though about using UIUC, like in LLVM. Do you guys know if that
could be a problem, given that we are mining the functions from
github?
> Have you thought about integrating the benchmarks as external tests into LLVM’s test-suite? That would make it very easy to play around with.
We did not think about it actually. But we would be happy to do it, if
the community accepts
2007 Jun 14
0
[LLVMdev] Moving data between regs
Does this depend on vreg subreg support? It sounds as if it could be
vaguely related, but I'm not sure it's necessary.
--
Chris
On Jun 14, 2007, at 12:27 PM, Evan Cheng wrote:
> The short answer is this is not currently done. LLVM register
> allocator does not currently use a move to a different register class
> in lieu of spills. This is definitely something we should do in
2007 Jun 13
0
[LLVMdev] Moving data between regs
On Tue, 12 Jun 2007, Fernando Magno Quintao Pereira wrote:
> Imagine that I have a virtual v stored in register AL, and I am about
> to cross a function call, that effectively overwrites AL. Well, I have,
> say, register ESI free, but as it happens, ESI is bigger than AL. It
> should be technically possible to move the contents of AL into ESI, to
> avoid spilling 'v',
2007 Apr 16
0
[LLVMdev] Regalloc Refactoring
Chris Lattner wrote:
> On Thu, 12 Apr 2007, Fernando Magno Quintao Pereira wrote:
>>> I'm definitely interested in improving coalescing and it sounds like
>>> this would fall under that work. Do you have references to papers
>>> that talk about the various algorithms?
>> Some suggestions:
>>
>> @InProceedings{Budimlic02,
>> AUTHOR =
2006 Sep 25
2
[LLVMdev] Folding instructions on X86
Dear LLVMers,
I need help with one error in my register allocator. I am getting
errors when folding instructions for the x86 (it does not happen when
I use the PowerPC as target). The problem is that, when I execute
something like: mi = mbb->insert(mbb->erase(mi), fmi), where mbb is a
MachineBasicBlock, valgrind gives this error message:
Address 0x42C62B0 is 24 bytes inside a block
2007 Feb 22
2
[LLVMdev] Reference to recently created move
Hey, guys, I am creating some move instructions with
MRegisterInfo::copyRegToReg. How do I get a pointer to the instruction
that I just created? Is there a way to do something like:
// mbb is MachineBasicBlock, reg_info is MRegisterInfo
MachineBasicBlock::iterator iter = mbb.getFirstTerminator();
reg_info->copyRegToReg(mbb, iter, dst, src, rc);
iter--; (???)
MachineInstr *
2007 Apr 12
0
[LLVMdev] Regalloc Refactoring
>> And I have a quite fast algo that I believe is simpler than [Budimlic02]
>> and I can share it with you :)
>
> Do you have a paper on this? I'd be interested in seeing it.
>
Yes, I have a tech report on this page:
http://compilers/fernando/projects/soc/
and I have submitted a paper to SAS, and now I am waiting for the review.
The coalescing algorithm is described in
2007 Jul 03
2
[LLVMdev] Swaps of FP registers
Dear guys,
what is the best way to implement a swap of floating point registers
in X86? For the integer registers, I am using xchg. Is there a similar
instruction for floating point?
My function to insert swaps is like:
void X86RegisterInfo::swapRegs(
MachineBasicBlock & mbb,
MachineBasicBlock::iterator mi,
unsigned r1,
unsigned r2,
const TargetRegisterClass
2007 Jul 13
3
[LLVMdev] NO-OP
Guys,
I am in need of a no-op instruction: an instruction that does not do
anything, and has no operands. Does LLVM predefine such an instruction? I
want to transform the program so that there is no empty basic block.
Fernando