[PATCH] D48655: [X86][SSE] Support v16i8/v32i8 vector rotations

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 27 09:27:13 PDT 2018


RKSimon created this revision.
RKSimon added reviewers: andreadb, spatel, craig.topper, efriedma.

This uses the same technique as for shifts - split the rotation into 4/2/1-bit partial rotations and select those partials based on the amount bit, making use of PBLENDVB if available. This halves the use of PBLENDVB compared to expanding to shifts, which can be a slow op.

Unfortunately I haven't found a decent way to share much of this code with the shift equivalent.


Repository:
  rL LLVM

https://reviews.llvm.org/D48655

Files:
  lib/Target/X86/X86ISelLowering.cpp
  test/CodeGen/X86/vector-rotate-128.ll
  test/CodeGen/X86/vector-rotate-256.ll
  test/CodeGen/X86/vector-rotate-512.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D48655.153106.patch
Type: text/x-patch
Size: 171537 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180627/ad654111/attachment.bin>


More information about the llvm-commits mailing list