[llvm-dev] Vector Shuffle chain lowering to X86 instructions simplification inconsistencies

Charith Mendis via llvm-dev llvm-dev at lists.llvm.org
Fri Oct 28 14:25:56 PDT 2016


Hi all,

Attached herewith is a fairly simple LLVM file (shuffle.ll) with lots of
vector shuffles.

When I use llc with -O3 -mcpu=core-avx2 the first shuffle sequence
containing types of 128 wide gets reduced a single shuffle, where as the
second shuffle sequence containing types of 256 wide doesn't get reduced to
a single shuffle instruction in the resulting X86 code (Shuffle.s attached).

The second sequence is identical to first and is a rewidening of the
sequence for a higher vector length.

Can this be explained and where in the machine lowering passes does this
simplification happen?

Thanks

-- 
Kind regards,
Charith Mendis

Graduate Student,
CSAIL,
Massachusetts Institute of Technology
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161028/fb2f054e/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: shuffle.ll
Type: application/octet-stream
Size: 12448 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161028/fb2f054e/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: shuffle.s
Type: application/octet-stream
Size: 8733 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161028/fb2f054e/attachment-0001.obj>


More information about the llvm-dev mailing list