diff options
author | Craig Topper <craig.topper@intel.com> | 2019-01-14 08:46:45 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2019-01-14 08:46:45 +0000 |
commit | e7b4ea4726f5e9750f4ec747ea703d0a6d3a953f (patch) | |
tree | 28b6278067a869a2525a7dcb5c42ae0a8e3a715b /llvm/lib/IR/AutoUpgrade.cpp | |
parent | 6149363515b8b45f48f962c57291f311bd961fd4 (diff) | |
download | bcm5719-llvm-e7b4ea4726f5e9750f4ec747ea703d0a6d3a953f.tar.gz bcm5719-llvm-e7b4ea4726f5e9750f4ec747ea703d0a6d3a953f.zip |
[X86] Remove mask parameter from avx512 pmultishiftqb intrinsics. Use select in IR instead.
Fixes PR40259
llvm-svn: 351035
Diffstat (limited to 'llvm/lib/IR/AutoUpgrade.cpp')
-rw-r--r-- | llvm/lib/IR/AutoUpgrade.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp index ff003a7addd..a00cab883bc 100644 --- a/llvm/lib/IR/AutoUpgrade.cpp +++ b/llvm/lib/IR/AutoUpgrade.cpp @@ -299,6 +299,7 @@ static bool ShouldUpgradeX86Intrinsic(Function *F, StringRef Name) { Name.startswith("avx512.mask.min.p") || // Added in 7.0. 128/256 in 5.0 Name.startswith("avx512.mask.fpclass.p") || // Added in 7.0 Name.startswith("avx512.mask.vpshufbitqmb.") || // Added in 8.0 + Name.startswith("avx512.mask.pmultishift.qb.") || // Added in 8.0 Name == "sse.cvtsi2ss" || // Added in 7.0 Name == "sse.cvtsi642ss" || // Added in 7.0 Name == "sse2.cvtsi2sd" || // Added in 7.0 @@ -1448,6 +1449,15 @@ static bool upgradeAVX512MaskToSelect(StringRef Name, IRBuilder<> &Builder, IID = Intrinsic::x86_avx512_dbpsadbw_512; else llvm_unreachable("Unexpected intrinsic"); + } else if (Name.startswith("pmultishift.qb.")) { + if (VecWidth == 128) + IID = Intrinsic::x86_avx512_pmultishift_qb_128; + else if (VecWidth == 256) + IID = Intrinsic::x86_avx512_pmultishift_qb_256; + else if (VecWidth == 512) + IID = Intrinsic::x86_avx512_pmultishift_qb_512; + else + llvm_unreachable("Unexpected intrinsic"); } else return false; |