[clang] [clang][x86] Add constexpr support for VNNI intrinsics (PR #190549)
Timm Baeder via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 6 00:09:46 PDT 2026
================
@@ -6049,6 +6096,50 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
return EvalScalarMinMaxFp(A, B, RoundingMode, /*IsMin=*/false);
},
/*IsScalar=*/true);
+ case X86::BI__builtin_ia32_vpdpwssd128:
+ case X86::BI__builtin_ia32_vpdpwssd256:
+ case X86::BI__builtin_ia32_vpdpwssd512:
+ case X86::BI__builtin_ia32_vpdpwssds128:
+ case X86::BI__builtin_ia32_vpdpwssds256:
+ case X86::BI__builtin_ia32_vpdpwssds512:
+ case X86::BI__builtin_ia32_vpdpbusds128:
+ case X86::BI__builtin_ia32_vpdpbusds256:
+ case X86::BI__builtin_ia32_vpdpbusds512:
+ case X86::BI__builtin_ia32_vpdpbusd128:
+ case X86::BI__builtin_ia32_vpdpbusd256:
+ case X86::BI__builtin_ia32_vpdpbusd512: {
+ unsigned BuiltinID = Call->getBuiltinCallee();
+ bool IsDottingWord;
+ bool IsSaturating;
+ switch (BuiltinID) {
+ case X86::BI__builtin_ia32_vpdpwssd128:
+ case X86::BI__builtin_ia32_vpdpwssd256:
+ case X86::BI__builtin_ia32_vpdpwssd512:
+ IsDottingWord = true;
+ IsSaturating = false;
+ break;
+ case X86::BI__builtin_ia32_vpdpwssds128:
+ case X86::BI__builtin_ia32_vpdpwssds256:
+ case X86::BI__builtin_ia32_vpdpwssds512:
+ IsDottingWord = true;
+ IsSaturating = true;
+ break;
+ case X86::BI__builtin_ia32_vpdpbusds128:
+ case X86::BI__builtin_ia32_vpdpbusds256:
+ case X86::BI__builtin_ia32_vpdpbusds512:
+ IsDottingWord = false;
+ IsSaturating = true;
+ break;
+ case X86::BI__builtin_ia32_vpdpbusd128:
+ case X86::BI__builtin_ia32_vpdpbusd256:
+ case X86::BI__builtin_ia32_vpdpbusd512:
+ IsDottingWord = false;
+ IsSaturating = false;
+ break;
+ }
----------------
tbaederr wrote:
I'd rather have individual calls to `interp__builtin_ia32_vpdp` instead of a nested switch statement.
https://github.com/llvm/llvm-project/pull/190549
More information about the cfe-commits
mailing list