Displaying 20 results from an estimated 10000 matches similar to: "[LLVMdev] Debugger for Register Allocation"
2007 Aug 18
0
[LLVMdev] Debugger for Register Allocation
On Aug 17, 2007, at 4:17 PM, Fernando Magno Quintao Pereira wrote:
>
> Hi guys,
>
> I have been using a debugger for my register allocator. The
> debugger
> happened to be very useful at catching register assignment errors.
> I've
> put the debugger on-line, if anyone who is working with register
> allocation wants to use. The debugger itself has nothing to
2007 Aug 17
2
[LLVMdev] Debugger for Register Allocation
Hi guys,
I have been using a debugger for my register allocator. The debugger
happened to be very useful at catching register assignment errors. I've
put the debugger on-line, if anyone who is working with register
allocation wants to use. The debugger itself has nothing to do with LLVM,
but I've coded a spiller that prints the code in a format that the
debugger can read. The
2006 Jun 27
2
[LLVMdev] Mapping bytecode to X86
Thank you Chris. I will try to implement the TwoAddress pass to run on
machine code. Why it has not been originally implemented to run on
machine code? Is there anything that makes it troublesome after RA
has been performed? Could you tell me if the transformations below
are correct?
1) a := b op c --> a := b --> a := b
a := a op c a
2008 Feb 15
2
[LLVMdev] LiveInterval spilling (was LiveInterval Splitting & SubRegisters)
Hi Fernando,
--- Fernando Magno Quintao Pereira <fernando at cs.ucla.edu> wrote:
>
> Hi, Roman,
>
> maybe I can try to answer this. I think that all boils down to
> having register to reload spilled values.
Ok. That I can follow.
> Once a register is spilled, its live range is split into smaller
> pieces. These pieces most be contained into registers, and
2007 Nov 25
1
[LLVMdev] global register allocation.
Thanks again. One more question here:
Since the regalloc works once per function, do I stil have access to
the Call graph?
Just saving information between regalloc passes for different
functions may not be enough for my case. I will need to maintain the
regalloc info of various passes in the call graph order.
Anyways thanks for your inputs. I will get back if I need to learn more.
Sanjiv
On Nov
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 26
0
[LLVMdev] Mapping bytecode to X86
On Mon, 26 Jun 2006, Fernando Magno Quintao Pereira wrote:
> The problem is that, after the TwoAddressInstructionPass is used, the
> code is no longer in SSA form, and my register allocator rely on
> some SSA properties. I am using the Spiller in VirtRegMap.* to generate
> the code, but the incorrect mapping still happens when I invoke the
> setReg() method directly on machine
2006 Jun 27
0
[LLVMdev] Mapping bytecode to X86
On Mon, 26 Jun 2006, Fernando Magno Quintao Pereira wrote:
> Thank you Chris. I will try to implement the TwoAddress pass to run on
> machine code. Why it has not been originally implemented to run on
> machine code?
I'm not sure what you mean. It definitely does run on machine code.
> Is there anything that makes it troublesome after RA
> has been performed?
Do you
2007 Nov 23
0
[LLVMdev] global register allocation.
Hi, again,
I think you can do it in the same way that the other allocators have
been coded, i.e extend RA, register the pass and so forth. I am not sure
about the best way to pass information among a run of RegAlloc to the
other, maybe the other guys in the list could suggest something. Yet, you
can always dump it into a file, and read it again, everytime it is
necessary. Remember that
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,
>
>
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
2008 Mar 04
1
[LLVMdev] Getting the Stack Pointer
On Tuesday 04 March 2008 12:16, Chris Lattner wrote:
> > Would it be ok to add a getStackPointerRegister method to
> > TargetRegisterInfo?
>
> Why do you need to do this in a register allocator? Typically you want to
> refer to abstract frame indices. Wouldn't fernando's debugger use a
> similar representation?
I don't need it in the allocator. I need it in
2006 Jun 26
2
[LLVMdev] Mapping bytecode to X86
Dear guys,
I am in need of more of your help. I'm implementing a register
allocator, and I am having problems to make it produce correct code.
Consider this program here:
int main(int argc, char ** argv) {
int i, j, sum;
i = argv[0][0];
j = argv[0][1];
sum = (i + j) * j;
printf("Sum = %d\n", sum);
}
that maps to this llvm bytecode:
entry (0xa785590, LLVM
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 18
1
[LLVMdev] Regalloc Refactoring
Who's your advisor?
-scooter
(aka "Dr. B. Scott Michel, UCLA CS 2004" :-)
On Apr 12, 2007, at 4:39 PM, Fernando Magno Quintao Pereira wrote:
>
>>> 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.
2008 Feb 15
0
[LLVMdev] LLVMdev Digest, Vol 44, Issue 47
Here's issue 48. I'm guessing I'm going to get issue 49 as soon as I hit
send...
On Fri, Feb 15, 2008 at 3:28 PM, <llvmdev-request at cs.uiuc.edu> wrote:
> Send LLVMdev mailing list submissions to
> llvmdev at cs.uiuc.edu
>
> To subscribe or unsubscribe via the World Wide Web, visit
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> or, via
2007 Jul 04
0
[LLVMdev] Swaps of FP registers
On 7/3/07, Fernando Magno Quintao Pereira <fernando at cs.ucla.edu> wrote:
>
> 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?
FXCH swaps stN with st0, but you'd have to use memory for arbitrary swaps I
believe. I have no idea if it's the
2008 May 16
0
[LLVMdev] 64-bit to 32-bit conversion of pointers
On Thu, May 15, 2008 at 5:45 PM, Fernando Magno Quintao Pereira
<fernando at cs.ucla.edu> wrote:
>
> Guys, I need advice in how to handle a problem.
>
> The problem:
> In X86_64, pointers are 64-bit variables, and are stored into 64-bit
> registers. However, some pointers are small enough that they can be
> represented as 32-bit values.
> Is there some way, in
2007 Jul 19
0
[LLVMdev] New Register Allocation Algorithm
Hi Fernando,
On Jul 18, 2007, at 10:57 AM, Fernando Magno Quintao Pereira wrote:
>
> Dear LLVMers,
>
> we here in the UCLA compiler's lab have an implementation of a
> very
> cool register allocator in LLVM. It finds an optimal register
> assignment
> for the x86 machine, via live range splitting, that is, if it is
> possible
> to have a register
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