[LLVMdev] [PATCH] increase the max number of physical registers

ether zhhb etherzhhb at gmail.com
Thu Sep 2 04:57:30 PDT 2010


hi Jääskeläinen,

i am very interesting in the way you write the RegisterInfo.td for the
machine with such a lot registers, or it is generated by some others
program?

best regards
ether

2010/7/6 Pekka Jääskeläinen <pekka.jaaskelainen at tut.fi>:
> Hello,
>
> This patch was reverted and the revert was forgotten to be undone
> after the performance regression it introduced was fixed.
>
> Can someone please revert it back (i.e. increase the max physreg size
> to 16K or even better to 32K) to enable us to experiment with large
> register number machines again? :)
>
> It was this trivial patch:
>
> Index: include/llvm/Target/TargetRegisterInfo.h
> ===================================================================
> --- include/llvm/Target/TargetRegisterInfo.h    (revision 89468)
> +++ include/llvm/Target/TargetRegisterInfo.h    (working copy)
> @@ -299,8 +299,8 @@
>      /// FirstVirtualRegister - This is the first register number that is
>      /// considered to be a 'virtual' register, which is part of the SSA
>      /// namespace.  This must be the same for all targets, which means that each
> -    /// target is limited to 1024 registers.
> -    FirstVirtualRegister = 1024
> +    /// target is limited to this fixed number of registers.
> +    FirstVirtualRegister = 16384
>    };
>
>    /// isPhysicalRegister - Return true if the specified register number is in
>
>
>
> On 12/09/2009 03:34 AM, Evan Cheng wrote:
>> On Dec 8, 2009, at 3:31 PM, Jakob Stoklund Olesen wrote:
>>
>>> On Dec 8, 2009, at 11:33 AM, Evan Cheng wrote:
>>>
>>>> This caused a massive slow down to post-ra scheduler (llc -O3 on x86, -O2 on ARM). I'm going to revert it for now until it has been addressed.
>>> Probably caused by this member:
>>>
>>>    /// KillIndices - The index of the most recent kill (proceding bottom-up),
>>>    /// or ~0u if the register is not live.
>>>    unsigned KillIndices[TargetRegisterInfo::FirstVirtualRegister];
>>>
>>> And this:
>>>
>>>  std::fill(KillIndices, array_endof(KillIndices), ~0u);
>>>
>>> It should probably be dynamically allocated with TRI->getNumRegs() members instead.
>>
>> Yep. David Goodwin is going to fix it.
>>
>> Evan
>>
>>> /jakob
>>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>
>
> --
> Pekka
> _______________________________________________
> 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