summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/Utils
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2015-12-26 19:48:43 +0000
committerCraig Topper <craig.topper@gmail.com>2015-12-26 19:48:43 +0000
commit7e3ba15529f1a9d82b9d024c6e4bd515de4dca3a (patch)
tree5e797fd0011d032afc1e800fcec21d268c383130 /llvm/lib/Target/X86/Utils
parentfa5f35e6ad4f9ac27f7f98d2df6eacb67e68c538 (diff)
downloadbcm5719-llvm-7e3ba15529f1a9d82b9d024c6e4bd515de4dca3a.tar.gz
bcm5719-llvm-7e3ba15529f1a9d82b9d024c6e4bd515de4dca3a.zip
[X86] Add support for printing shuffle comments for AVX512 PSHUFB instructions.
llvm-svn: 256452
Diffstat (limited to 'llvm/lib/Target/X86/Utils')
-rw-r--r--llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp b/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp
index 7b8527ef79d..a3729769901 100644
--- a/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp
+++ b/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp
@@ -309,9 +309,7 @@ void DecodePSHUFBMask(const Constant *C, SmallVectorImpl<int> &ShuffleMask) {
// i32 -2147483648, i32 -2147483648>
unsigned MaskTySize = MaskTy->getPrimitiveSizeInBits();
-
- if (MaskTySize != 128 && MaskTySize != 256) // FIXME: Add support for AVX-512.
- return;
+ assert(MaskTySize == 128 || MaskTySize == 256 || MaskTySize == 512);
// This is a straightforward byte vector.
if (MaskTy->isVectorTy() && MaskTy->getVectorElementType()->isIntegerTy(8)) {
@@ -321,7 +319,7 @@ void DecodePSHUFBMask(const Constant *C, SmallVectorImpl<int> &ShuffleMask) {
for (int i = 0; i < NumElements; ++i) {
// For AVX vectors with 32 bytes the base of the shuffle is the 16-byte
// lane of the vector we're inside.
- int Base = i < 16 ? 0 : 16;
+ int Base = i & ~0xf;
Constant *COp = C->getAggregateElement(i);
if (!COp) {
ShuffleMask.clear();
OpenPOWER on IntegriCloud