[all-commits] [llvm/llvm-project] d2057a: [X86][AVX] Lower v16i8/v8i16 binary shuffles using...
Simon Pilgrim via All-commits
all-commits at lists.llvm.org
Tue Aug 18 03:12:47 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: d2057a8015e97b5e212f3963923dbdcce9356a8f
https://github.com/llvm/llvm-project/commit/d2057a8015e97b5e212f3963923dbdcce9356a8f
Author: Simon Pilgrim <llvm-dev at redking.me.uk>
Date: 2020-08-18 (Tue, 18 Aug 2020)
Changed paths:
M llvm/lib/Target/X86/X86ISelLowering.cpp
M llvm/test/CodeGen/X86/shuffle-vs-trunc-256.ll
M llvm/test/CodeGen/X86/shuffle-vs-trunc-512.ll
M llvm/test/CodeGen/X86/vector-trunc.ll
M llvm/test/CodeGen/X86/x86-interleaved-access.ll
Log Message:
-----------
[X86][AVX] Lower v16i8/v8i16 binary shuffles using VTRUNC/TRUNCATE
This patch adds lowerShuffleWithVTRUNC to handle basic binary shuffles that can be lowered either as a pure ISD::TRUNCATE or a X86ISD::VTRUNC (with undef/zero values in the remaining upper elements).
We concat the binary sources together into a single 256-bit source vector. To avoid regressions we perform this after we've tried to lower with PACKS/PACKUS which typically does a cleaner job than a concat.
For non-AVX512VL cases we have to canonicalize VTRUNC cases to use a 512-bit source vectors (inserting undefs/zeros in the upper elements as necessary), truncate and then (possibly) extract the 128-bit result.
This should address the last regressions in D66004
Differential Revision: https://reviews.llvm.org/D86093
More information about the All-commits
mailing list