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

Pekka Jääskeläinen pekka.jaaskelainen at tut.fi
Thu Sep 2 04:36:10 PDT 2010


Hello,

I haven't yet received any input what this patch breaks (some
LLVM-external project?) and the branch creation date is tomorrow.

Can someone please tell what we can do to make this patch merged
in for 2.8?

Thanks!

On 07/06/2010 01:26 PM, Pekka Jääskeläinen wrote:
> 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



More information about the llvm-dev mailing list