[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