[PATCH] D17292: [X86][AVX] Support bitmask style integer shuffles for 256-bit integer vectors

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 16 07:48:51 PST 2016


RKSimon created this revision.
RKSimon added reviewers: delena, ab, spatel, andreadb.
RKSimon added a subscriber: llvm-commits.
RKSimon set the repository for this revision to rL LLVM.

AVX1 doesn't support the shuffling of 256-bit integer vectors. For 32/64-bit elements we get around this by shuffling as float/double but for 8/16-bit elements (assuming they can't widen) we currently just split, shuffle as 128-bit vectors and concatenate the results back. 

This patch adds the ability to lower using the bit-mask/bit-blend patterns before defaulting to the splitting behaviour. In some cases this ends up matching what AVX2 would do anyhow or what AVX1 does on the split vectors.

Repository:
  rL LLVM

http://reviews.llvm.org/D17292

Files:
  lib/Target/X86/X86ISelLowering.cpp
  test/CodeGen/X86/vec_int_to_fp.ll
  test/CodeGen/X86/vector-blend.ll
  test/CodeGen/X86/vector-shuffle-256-v16.ll
  test/CodeGen/X86/vector-shuffle-256-v32.ll
  test/CodeGen/X86/vector-zext.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17292.48070.patch
Type: text/x-patch
Size: 15136 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160216/250674d1/attachment.bin>


More information about the llvm-commits mailing list