aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/IR/AutoUpgrade.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2016-12-10 23:09:43 +0000
committerCraig Topper <craig.topper@gmail.com>2016-12-10 23:09:43 +0000
commitedab02b50b6b3b5e4f785adaacd108cd921d1f3f (patch)
treec285ba3f53a4f648eb0f66e095655f89332f5ccf /llvm/lib/IR/AutoUpgrade.cpp
parent4c48bbe94da7d0c6b949631b5ecdc2ff045960e1 (diff)
downloadllvm-edab02b50b6b3b5e4f785adaacd108cd921d1f3f.zip
llvm-edab02b50b6b3b5e4f785adaacd108cd921d1f3f.tar.gz
llvm-edab02b50b6b3b5e4f785adaacd108cd921d1f3f.tar.bz2
[X86] Remove masking from 512-bit PSHUFB intrinsics in preparation for being able to constant fold it in InstCombineCalls like we do for 128/256-bit.
llvm-svn: 289344
Diffstat (limited to 'llvm/lib/IR/AutoUpgrade.cpp')
-rw-r--r--llvm/lib/IR/AutoUpgrade.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp
index fe7ba8b..9218bed 100644
--- a/llvm/lib/IR/AutoUpgrade.cpp
+++ b/llvm/lib/IR/AutoUpgrade.cpp
@@ -258,8 +258,7 @@ static bool UpgradeIntrinsicFunction1(Function *F, Function *&NewFn) {
Name == "sse2.pminu.b" || // Added in 3.9
Name == "sse41.pminuw" || // Added in 3.9
Name == "sse41.pminud" || // Added in 3.9
- Name == "avx512.mask.pshuf.b.128" || // Added in 4.0
- Name == "avx512.mask.pshuf.b.256" || // Added in 4.0
+ Name.startswith("avx512.mask.pshuf.b.") || // Added in 4.0
Name.startswith("avx2.pmax") || // Added in 3.9
Name.startswith("avx2.pmin") || // Added in 3.9
Name.startswith("avx512.mask.pmax") || // Added in 4.0
@@ -1451,6 +1450,8 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
IID = Intrinsic::x86_ssse3_pshuf_b_128;
else if (VecTy->getPrimitiveSizeInBits() == 256)
IID = Intrinsic::x86_avx2_pshuf_b;
+ else if (VecTy->getPrimitiveSizeInBits() == 512)
+ IID = Intrinsic::x86_avx512_pshuf_b_512;
else
llvm_unreachable("Unexpected intrinsic");