Go to file
Zvi Rackover 3122698040 X86 ISel: Basic support for variable-index vector permutations
Summary:
Try to lower a BUILD_VECTOR composed of extract-extract chains that can be
reasoned to be a permutation of a vector by indices in a non-constant vector.

We saw this pattern created by ISPC, which resolts to creating it due to the
requirement that shufflevector's mask operand be a *constant* vector.
I didn't check this but we could possibly use this pattern for lowering the X86 permute
C-instrinsics instead of llvm.x86 instrinsics.

This change can be followed by more improvements:
1. Handle vectors with undef elements.
2. Utilize pshufb and zero-mask-blending to support more effiecient
   construction of vectors with constant-0 elements.
3. Use smaller-element vectors of same width, and "interpolate" the indices,
   when no native operation available.

Reviewers: RKSimon, craig.topper

Reviewed By: RKSimon

Subscribers: chandlerc, DavidKreitzer

Differential Revision: https://reviews.llvm.org/D39126

llvm-svn: 317463
2017-11-06 08:25:46 +00:00
clang lowering broadcastm 2017-11-06 07:04:12 +00:00
clang-tools-extra Use ToolExecutor framework in the sample tool-template. 2017-11-03 16:03:56 +00:00
compiler-rt Fix CMake definitions of tsan runtime to make it installed by "install-compiler-rt" 2017-11-04 00:07:20 +00:00
debuginfo-tests Revert r313600 due to bot failures on Green Dragon. 2017-09-19 14:51:37 +00:00
libclc tgamma: Use unary_decl instead of custom inc file 2017-11-02 19:49:00 +00:00
libcxx Change a bunch of comments from C++1z to C++17. NFC 2017-11-02 15:03:25 +00:00
libcxxabi Fix ASAN build with older compiler-rt versions. 2017-09-14 22:37:34 +00:00
libunwind Add ifdefs around ELF specific parts of UnwindRegisters*.S for arm 2017-11-04 21:01:31 +00:00
lld Update tests for ARMNT/ARM64 reloc names 2017-11-06 07:22:17 +00:00
lldb Improve the posix core file triple detection 2017-11-04 18:25:51 +00:00
llgo irgen: Create functions instead of global variables for builtin hash and equal algorithms. 2017-06-04 22:11:28 +00:00
llvm X86 ISel: Basic support for variable-index vector permutations 2017-11-06 08:25:46 +00:00
openmp Updating implementation of OMPT as specified in OpenMP 5.0 Preview 2 (TR6) 2017-11-05 14:11:19 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly [ZoneAlgo/ForwardOpTree] Normalize PHIs to their known incoming values. 2017-10-31 16:11:46 +00:00
README.md Add an svn project to contain the files that appear at the root of the 2017-10-19 21:09:49 +00:00

README.md

Low Level Virtual Machine (LLVM)

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.