[llvm-commits] [llvm] r75308 - in /llvm/trunk: include/llvm/CodeGen/ValueTypes.h include/llvm/CodeGen/ValueTypes.td lib/VMCore/ValueTypes.cpp utils/TableGen/CodeGenTarget.cpp

Bob Wilson bob.wilson at apple.com
Fri Jul 10 22:29:07 PDT 2009


On Jul 10, 2009, at 8:11 PM, Duncan Sands wrote:

> Hi Bob,
>
>> +      v24i8          =  18,   // 24 x i8
>> +      v32i8          =  19,   // 32 x i8
>> +      v48i8          =  20,   // 48 x i8
>
> type legalization could be taught to exploit this by
> (for example) splitting a v96i8 into two v48i8, or
> by widening v20i8 to v24i8.  Currently it doesn't do
> this - should it be taught to do it?  Also, if you
> *don't* want this to happen then that might cause
> problems later if some platform has a native type such
> as v3i8 where they do want the type exploited for
> splitting and widening.  Then there would need to be
> some kind of mechanism for telling the type legalizer
> which types are really usable and which ones are fake.

I can see no reason why type legalization should not produce these  
types by splitting or widening, but at least for now, I don't think  
implementing that is a priority.

These are real types for Neon, at least in the sense that there are  
registers to hold them and at least some operations that use them.   
I'm not yet sure what it will take to generate efficient code for the  
remaining operations that can only handle one register at a time.   
It's definitely a work in progress....



More information about the llvm-commits mailing list