diff options
author | Craig Topper <craig.topper@intel.com> | 2018-05-20 23:34:04 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-05-20 23:34:04 +0000 |
commit | e4c045b7df35e3280b0747d2e166ba22be4e4b1c (patch) | |
tree | 7b2d38b2067147b7cf9509144f7905be85abcb39 /llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | |
parent | 41597b92b1a444721c550d1458f5350f53f24208 (diff) | |
download | bcm5719-llvm-e4c045b7df35e3280b0747d2e166ba22be4e4b1c.tar.gz bcm5719-llvm-e4c045b7df35e3280b0747d2e166ba22be4e4b1c.zip |
[X86] Remove mask arguments from permvar builtins/intrinsics. Use a select in IR instead.
Someday maybe we'll use selects for all intrinsics.
llvm-svn: 332824
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp index 4a01c1106d3..2516179e8b4 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -2785,30 +2785,22 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) { case Intrinsic::x86_avx2_permd: case Intrinsic::x86_avx2_permps: + case Intrinsic::x86_avx512_permvar_df_256: + case Intrinsic::x86_avx512_permvar_df_512: + case Intrinsic::x86_avx512_permvar_di_256: + case Intrinsic::x86_avx512_permvar_di_512: + case Intrinsic::x86_avx512_permvar_hi_128: + case Intrinsic::x86_avx512_permvar_hi_256: + case Intrinsic::x86_avx512_permvar_hi_512: + case Intrinsic::x86_avx512_permvar_qi_128: + case Intrinsic::x86_avx512_permvar_qi_256: + case Intrinsic::x86_avx512_permvar_qi_512: + case Intrinsic::x86_avx512_permvar_sf_512: + case Intrinsic::x86_avx512_permvar_si_512: if (Value *V = simplifyX86vpermv(*II, Builder)) return replaceInstUsesWith(*II, V); break; - case Intrinsic::x86_avx512_mask_permvar_df_256: - case Intrinsic::x86_avx512_mask_permvar_df_512: - case Intrinsic::x86_avx512_mask_permvar_di_256: - case Intrinsic::x86_avx512_mask_permvar_di_512: - case Intrinsic::x86_avx512_mask_permvar_hi_128: - case Intrinsic::x86_avx512_mask_permvar_hi_256: - case Intrinsic::x86_avx512_mask_permvar_hi_512: - case Intrinsic::x86_avx512_mask_permvar_qi_128: - case Intrinsic::x86_avx512_mask_permvar_qi_256: - case Intrinsic::x86_avx512_mask_permvar_qi_512: - case Intrinsic::x86_avx512_mask_permvar_sf_512: - case Intrinsic::x86_avx512_mask_permvar_si_512: - if (Value *V = simplifyX86vpermv(*II, Builder)) { - // We simplified the permuting, now create a select for the masking. - V = emitX86MaskSelect(II->getArgOperand(3), V, II->getArgOperand(2), - Builder); - return replaceInstUsesWith(*II, V); - } - break; - case Intrinsic::x86_avx_maskload_ps: case Intrinsic::x86_avx_maskload_pd: case Intrinsic::x86_avx_maskload_ps_256: |