diff options
| author | Craig Topper <craig.topper@intel.com> | 2018-06-07 17:28:03 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2018-06-07 17:28:03 +0000 |
| commit | d3623155a26fa01079612dd654d69f94f751e302 (patch) | |
| tree | e84cd3ba5ba2f07a86ce97062865b168d42b4e9e /clang/lib/Sema | |
| parent | 6887aa8adcc82974de0a3a3b2b76e5497e4f4e55 (diff) | |
| download | bcm5719-llvm-d3623155a26fa01079612dd654d69f94f751e302.tar.gz bcm5719-llvm-d3623155a26fa01079612dd654d69f94f751e302.zip | |
[X86] Add back builtins for _mm_slli_si128/_mm_srli_si128 and similar intrinsics.
We still lower them to native shuffle IR, but we do it in CGBuiltin.cpp now. This allows us to check the target feature and ensure the immediate fits in 8 bits.
This also improves our -O0 codegen slightly because we're able to see the zeroinitializer in the shuffle. It looks like it got lost behind a store+load previously.
llvm-svn: 334208
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 44c87316419..0c5be0506e0 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -2781,6 +2781,14 @@ bool Sema::CheckX86BuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) { case X86::BI__builtin_ia32_rndscaless_round_mask: i = 4; l = 0; u = 255; break; + case X86::BI__builtin_ia32_pslldqi128: + case X86::BI__builtin_ia32_pslldqi256: + case X86::BI__builtin_ia32_pslldqi512: + case X86::BI__builtin_ia32_psrldqi128: + case X86::BI__builtin_ia32_psrldqi256: + case X86::BI__builtin_ia32_psrldqi512: + i = 1; l = 0; u = 1023; + break; } return SemaBuiltinConstantArgRange(TheCall, i, l, u); } |

