[LLVMdev] AVX Shuffles & PatLeaf Help Needed

David Greene dag at cray.com
Fri Dec 18 09:27:32 PST 2009


On Thursday 17 December 2009 23:48, Nate Begeman wrote:

> > PSHUFB is really a completely different instruction than PSHUFD, for
> > example.
>
> Aside from consuming one of its inputs, which is a regalloc problem, it
> isn't really different.  It's just a one-input immediate shuffle, where the
> immediate is not encoded in the instruction.  From the perspective of the
> shuffle instruction, all the x86 shuffles are just various byte shuffles. 
> Writing them all in one canonical form would substantially simplify the
> code, especially given layering AVX on top of the existing
> barely-understandable code would probably result in something almost
> unmaintainable.

But I don't think it can share a pattern with the immmediate-mask shuffles 
because the operands are of different class (register vs. immediate).
I guess for PSHUFB the instruction works for all masks so we don't even
need a predicate to check for validity.

I'll think some more about this, but casting a vector to bytes is really
going to make debugging harder.  It's easier to think about 4 or 8 
index values than 16 or 32.

                                     -Dave



More information about the llvm-dev mailing list