[clang] [Headers][X86] Enable constexpr handling for MMX/SSE/AVX/AVX512 PMADDWD/PMADDUBSW intrinsics (PR #161563)
Simon Pilgrim via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 6 06:48:09 PDT 2025
================
@@ -3364,6 +3425,16 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
return interp__builtin_elementwise_int_binop(S, OpPC, Call,
llvm::APIntOps::avgCeilU);
+ case clang::X86::BI__builtin_ia32_pmaddubsw128:
+ case clang::X86::BI__builtin_ia32_pmaddubsw256:
+ case clang::X86::BI__builtin_ia32_pmaddubsw512:
+ return interp__builtin_ia32_pmadd(S, OpPC, Call, BuiltinID);
----------------
RKSimon wrote:
use a callback system like interp__builtin_elementwise_int_binop:
```cpp
return interp__builtin_ia32_pmadd(S, OpPC, Call,
[](const APSInt &LoLHS, const APSInt &HiLHS, const APSInt &HiRHS, const APSInt &HiRHS) {
unsigned BitWidth = 2 * LHS.getBitWidth();
return (LoLHS.zext(BitWidth) * LoRHS.sext(BitWidth)).sadd_sat((HiLHS.zext(BitWidth) * HiRHS.sext(BitWidth)));
});
```
https://github.com/llvm/llvm-project/pull/161563
More information about the cfe-commits
mailing list