[llvm-commits] [llvm] r108735 - in /llvm/trunk: include/llvm/Target/TargetLowering.h lib/CodeGen/SelectionDAG/TargetLowering.cpp

Jakob Stoklund Olesen stoklund at 2pi.dk
Mon Jul 19 13:22:15 PDT 2010


On Jul 19, 2010, at 1:11 PM, Evan Cheng wrote:

> 
> On Jul 19, 2010, at 12:59 PM, Jakob Stoklund Olesen wrote:
> 
>> 
>> On Jul 19, 2010, at 11:47 AM, Evan Cheng wrote:
>> 
>>> Author: evancheng
>>> Date: Mon Jul 19 13:47:01 2010
>>> New Revision: 108735
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=108735&view=rev
>>> Log:
>>> Teach computeRegisterProperties() to compute "representative" register class for legal value types. A "representative" register class is the largest legal super-reg register class for a value type. e.g. On i386, GR32 is the rep register class for i8 / i16 / i32; on x86_64 it would be GR64.
>>> 
>>> This property will be used by the register pressure tracking instruction scheduler.
>> 
>> Hi Evan,
>> 
>> This looks a lot like you have x86 in mind.
> 
> No. What is x86? :-)
> 
>> 
>> What is getRepRegClassFor(f32) going to return on ARM? QQQQ?
> 
> QQ and QQQQ are not legal during isel. It's Q. It's probably overly conservative for tracking. I'm still trying to figure that out.
> 
> 
>> 
>> How are you planning to deal with registers with more than one usable subregister?
> 
> I am not sure what you mean? It's ignore sub-register classes (e.g. QPR_VFP2).

I meant the same as above - QPR only has 16 registers, but there are 32 DPR registers. If you are counting each DPR as a QPR, you are going to be scheduling as if you only had 16 DPR registers.

Can you use some kind of scaling so a DPR counts as 0.5 QPR?





More information about the llvm-commits mailing list