[llvm-commits] X86 vector shift patch
Mon Ping Wang
monping at apple.com
Sun Dec 21 20:44:34 PST 2008
Hi Eli,
Thanks for your patch! The two patches does roughly the same thing
though yours tries to go through vector shuffles and bit converts
while doesn't (though it allows non constant undefs). It clearly make
sense to support those vector shuffle and bit convert. The patch could
be easily updated to support those cases plus a few you note below as
the shift amount has not been lowered to something else. Legalize is
the more logical home to do the transformation since it is converting
the IR to legal operations. I should do a few more experiments to see
how the shift amount might be transformed.
-- Mon Ping
On Dec 20, 2008, at 6:58 PM, Eli Friedman wrote:
> On Sat, Dec 20, 2008 at 6:22 PM, Mon Ping Wang <monping at apple.com>
> wrote:
>> Hi,
>>
>> This is a patch that allows us to generate X86 vector shifts
>> (psllq, psrlq
>> etc..) for some vector shifts (v2i64, v4i32, and v8i16) where the
>> shift
>> amount is the same for all elements. This particular patch does as
>> a target
>> specific combine pass because it is easier to identify the shift
>> amounts
>> before it gets lowered to something else (e.g., build vector of
>> constants
>> can be translated into a load from a constant pool). If someone
>> has a
>> better idea of where it should be done or have any other comments,
>> please
>> let me know.
>
> It isn't impossible to do it during legalize... I've had a patch in my
> tree for a while that's reasonably successful at doing that. I'm
> attaching my patch, in case it's useful; it does still miss some cases
> because isSplatVector isn't clever enough, though. That patch also
> has some suggestions for potentially interesting cases we can handle
> in somewhat unconventional ways.
>
> Does you patch handle a shift by a splat shuffle, e.g. shl(x,
> shufflevector(y, y, <0,0,0,0>))? Or does the lowering take care of
> this case somehow?
>
> -Eli
> <x.txt>_______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list