[LLVMdev] Moving data between regs
Evan Cheng
evan.cheng at apple.com
Thu Jun 14 12:27:26 PDT 2007
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:
>> 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', but I don't know if that is possible in LLVM.
>> Basically, ESI is not in the class of 'v', and it has no 8 bit
>> alias. Is
>> this a problem (the move can't be done), or am I missing something?
>
> Very interesting idea. Yes, this is doable. On X86 you would copy
> EAX
> to ESI, which implicitly saves AL because it's a superclass of AL.
> MRegisterInfo has information about super and subclass registers,
> Evan can
> tell you more.
>
> -Chris
>
> --
> http://nondot.org/sabre/
> http://llvm.org/
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list