diff options
author | Craig Topper <craig.topper@intel.com> | 2018-08-16 06:20:24 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-08-16 06:20:24 +0000 |
commit | 9c1d9fdeaa11e2f615c47235cc33bd199d3d08b2 (patch) | |
tree | a320f4e2b0a1dfa9ac4bf2fe54d16a38a11104e0 /llvm/lib/IR/AutoUpgrade.cpp | |
parent | 9d6983c9fde66fa12c0bc3898571ca2545e043cf (diff) | |
download | llvm-9c1d9fdeaa11e2f615c47235cc33bd199d3d08b2.zip llvm-9c1d9fdeaa11e2f615c47235cc33bd199d3d08b2.tar.gz llvm-9c1d9fdeaa11e2f615c47235cc33bd199d3d08b2.tar.bz2 |
[X86] Remove masking from the 512-bit padds and psubs intrinsics. Use select in IR instead.
llvm-svn: 339842
Diffstat (limited to 'llvm/lib/IR/AutoUpgrade.cpp')
-rw-r--r-- | llvm/lib/IR/AutoUpgrade.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp index ae88a28..1864ad2 100644 --- a/llvm/lib/IR/AutoUpgrade.cpp +++ b/llvm/lib/IR/AutoUpgrade.cpp @@ -282,14 +282,8 @@ static bool ShouldUpgradeX86Intrinsic(Function *F, StringRef Name) { Name.startswith("avx512.mask.pror.") || // Added in 7.0 Name.startswith("avx512.mask.prolv.") || // Added in 7.0 Name.startswith("avx512.mask.prol.") || // Added in 7.0 - Name == "avx512.mask.padds.b.128" || // Added in 8.0 - Name == "avx512.mask.padds.b.256" || // Added in 8.0 - Name == "avx512.mask.padds.w.128" || // Added in 8.0 - Name == "avx512.mask.padds.w.256" || // Added in 8.0 - Name == "avx512.mask.psubs.b.128" || // Added in 8.0 - Name == "avx512.mask.psubs.b.256" || // Added in 8.0 - Name == "avx512.mask.psubs.w.128" || // Added in 8.0 - Name == "avx512.mask.psubs.w.256" || // Added in 8.0 + Name.startswith("avx512.mask.padds.") || // Added in 8.0 + Name.startswith("avx512.mask.psubs.") || // 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 @@ -1417,10 +1411,14 @@ static bool upgradeAVX512MaskToSelect(StringRef Name, IRBuilder<> &Builder, IID = Intrinsic::x86_sse2_padds_b; else if (VecWidth == 256 && EltWidth == 8) IID = Intrinsic::x86_avx2_padds_b; + else if (VecWidth == 512 && EltWidth == 8) + IID = Intrinsic::x86_avx512_padds_b_512; else if (VecWidth == 128 && EltWidth == 16) IID = Intrinsic::x86_sse2_padds_w; else if (VecWidth == 256 && EltWidth == 16) IID = Intrinsic::x86_avx2_padds_w; + else if (VecWidth == 512 && EltWidth == 16) + IID = Intrinsic::x86_avx512_padds_w_512; else llvm_unreachable("Unexpected intrinsic"); } else if (Name.startswith("psubs.")) { @@ -1428,10 +1426,14 @@ static bool upgradeAVX512MaskToSelect(StringRef Name, IRBuilder<> &Builder, IID = Intrinsic::x86_sse2_psubs_b; else if (VecWidth == 256 && EltWidth == 8) IID = Intrinsic::x86_avx2_psubs_b; + else if (VecWidth == 512 && EltWidth == 8) + IID = Intrinsic::x86_avx512_psubs_b_512; else if (VecWidth == 128 && EltWidth == 16) IID = Intrinsic::x86_sse2_psubs_w; else if (VecWidth == 256 && EltWidth == 16) IID = Intrinsic::x86_avx2_psubs_w; + else if (VecWidth == 512 && EltWidth == 16) + IID = Intrinsic::x86_avx512_psubs_w_512; else llvm_unreachable("Unexpected intrinsic"); } else |