[LLVMdev] vector shuffle emulation/expand in backend?
Heikki Kultala
hkultala at iki.fi
Fri Mar 2 00:50:38 PST 2012
I'm having some troubles implementing vector support to our custom backend
It seems that llvm cannot emulate shuffle with extracts, inserts and builds?
I've enabled vector registers with
addRegisterClass(MVT::v2i32, TCE::V2I32RegsRegisterClass);
addRegisterClass(MVT::v2f32, TCE::V2F32RegsRegisterClass);
and created patterns for most vector instructions, including insert,
extract and build.
I've tried to say
setOperationAction(ISD::VECTOR_SHUFFLE, MVT::v2i32, Expand);
setOperationAction(ISD::VECTOR_SHUFFLE, MVT::v2f32, Expand);
but this does not seem to do anything, I still get
LLVM ERROR: Cannot select: 0x1fde870: v2i32 = vector_shuffle 0x1fdda70,
0x1fdea80<1,0> [ID=38]
0x1fdda70: v2i32 = add 0x1fddf70, 0x20540e0 [ORD=2811] [ID=37]
...
0x1fdea80: v2i32 = undef [ID=16]
Is there some solution to this? Is this a bug or a feature?
More information about the llvm-dev
mailing list