[clang] [X86][bytecode] Allow SSE/AVX BLEND imm intrinsics to be used in constexpr (PR #157776)
Simon Pilgrim via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 11 00:52:28 PDT 2025
================
@@ -11945,6 +11945,40 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
return Success(APValue(ResultElements.data(), ResultElements.size()), E);
}
+ case X86::BI__builtin_ia32_blendpd:
+ case X86::BI__builtin_ia32_blendpd256:
+ case X86::BI__builtin_ia32_blendps:
+ case X86::BI__builtin_ia32_blendps256:
+ case X86::BI__builtin_ia32_pblendw128:
+ case X86::BI__builtin_ia32_pblendw256:
+ case X86::BI__builtin_ia32_pblendd128:
+ case X86::BI__builtin_ia32_pblendd256: {
+ APValue SourceF, SourceT, SourceC;
+ if (!EvaluateAsRValue(Info, E->getArg(0), SourceF) ||
+ !EvaluateAsRValue(Info, E->getArg(1), SourceT) ||
+ !EvaluateAsRValue(Info, E->getArg(2), SourceC))
+ return false;
+
+ assert(SourceF.getKind() == clang::APValue::Vector);
----------------
RKSimon wrote:
x86 target builtins have specific result/operand types - the asserts probably aren't necessary - and even for generic/elementwise builtins I'd expect semachecking to catch type mismatches.
https://github.com/llvm/llvm-project/pull/157776
More information about the cfe-commits
mailing list