[clang] [X86] Add constexpr support for addsub intrinsics (PR #167512)
Ahmed Nour via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 17 06:02:50 PST 2025
================
@@ -13373,6 +13373,35 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
}
return Success(APValue(ResultElements.data(), ResultElements.size()), E);
}
+ case clang::X86::BI__builtin_ia32_addsubpd:
+ case clang::X86::BI__builtin_ia32_addsubps:
+ case clang::X86::BI__builtin_ia32_addsubpd256:
+ case clang::X86::BI__builtin_ia32_addsubps256: {
+ // Addsub: alternates between subtraction and addition
+ // Result[i] = (i % 2 == 0) ? (a[i] - b[i]) : (a[i] + b[i])
+ APValue SourceLHS, SourceRHS;
+ if (!EvaluateAsRValue(Info, E->getArg(0), SourceLHS) ||
+ !EvaluateAsRValue(Info, E->getArg(1), SourceRHS))
+ return false;
+ unsigned NumElts = SourceLHS.getVectorLength();
----------------
ahmednoursphinx wrote:
Updated , Good catch, i should have aligned with `InterpBuiltin.cpp` convention
https://github.com/llvm/llvm-project/pull/167512
More information about the cfe-commits
mailing list