[LLVMdev] Supporting pre-allocated registers in LLVM
Evan Cheng
evan.cheng at apple.com
Sat Oct 6 15:02:03 PDT 2007
On Oct 5, 2007, at 4:23 AM, nkavv at physics.auth.gr wrote:
>
>>> 1. I can see the standard algorithms (bigblock, linearscan -- good
>>> choice for
>>> the JIT and for general use as well, and the other algorithms). Is
>>> it possible
>>> to pre-allocate registers in your linearscan (or in another
>>> allocation engine)
>>> for specific source-level or (better) intermediate code (bitcode)
>>> level
>>> variables?
>>
>> Yes that's done at instruction selection time. If you specify an
>> instruction definition must go to a physical register, the selector
>> and scheduler will take care of it. Same for instructions that
>> require
>> its operands that must be in fixed registers.
>
> You mean a temporary defined in an instruction. OK, that is what i
> basically
> need here. Is it guaranteed to "live" in the physical register for
> the entire
> program (or at least for a single function, which would trivially
> work for
> single-function programs)?
No it's just guaranteed to be defined in a fixed register. The
allocator is free to copy it to another register, spill it to stack.
It all depends on proximity of uses and overall register pressure.
Evan
>
>
>>> 2. Which are the new register allocation algorithms currently under
>>> design? Do
>>> they support preallocation of registers (it is different to "fixing"
>>> a register
>>> in GCC parlance)?
>>
>> I know of a number of allocators in development. They are not yet
>> made
>> available to the public yet. Perhaps their authors can chime in.
>
> Fernando has a lot of work going on, and his UCLA page looks very
> interesting.
> Fernando, is your SSA-based regalloc usable as of now; is it in an
> SVN repo?
> Further, do you allow register "fixing" (in the sense of pre-
> allocated a
> register for its entire lifetime, or for the entire program)?
>
>
> Kind regards
> Nikolaos Kavvadias
>
>
> _______________________________________________
> 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