================
@@ -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);
+
+ case clang::X86::BI__builtin_ia32_pmaddwd128:
+ case clang::X86::BI__builtin_ia32_pmaddwd256:
+ case clang::X86::BI__builtin_ia32_pmaddwd512:
+ 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.sext(BitWidth) * LoRHS.sext(BitWidth)) +
(HiLHS.sext(BitWidth) * HiRHS.sext(BitWidth));
});
```
https://github.com/llvm/llvm-project/pull/161563
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits