[LLVMdev] proposal to add MVT::vAny type

Bob Wilson bob.wilson at apple.com
Sat Aug 8 23:47:46 PDT 2009


The ARM Neon load, store and shuffle operations that I've been  
implementing recently with LLVM intrinsics do not care about the  
distinction between vectors with i32 and f32 elements -- only the size  
matters.  But, because we have only MVT::fAny and MVT::iAny types,  
I've been having to define separate intrinsics for the operations with  
floating-point vector elements.  It didn't bother me when there were  
only a few intrinsics like this, but now there are more, and I  
realized this weekend that I still need to add more for the load/store  
lane operations.

I had been thinking about trying to bitcast my way out of this, but it  
struck me that it would make a lot more sense to have a new MVT::vAny  
type that TableGen would match to any vector type.  That would more  
accurately reflect the type constraints on these intrinsics.

It seems like since these "*Any" types are confined to TableGen, it  
should be pretty easy to add another one.  I looked at the places  
using iAny and fAny and they seem pretty easy to extend to handle a  
new vAny type.  Does this seem like a good idea?  Any objections?

I'd like to get the Neon intrinsics finalized before the 2.6 release,  
since it may be harder to change them later.



More information about the llvm-dev mailing list