================ @@ -11658,6 +11658,29 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) { return Success(APValue(ResultElements.data(), ResultElements.size()), E); } + case Builtin::BI__builtin_elementwise_fma: { + APValue SourceX, SourceY, SourceZ; + if (!EvaluateAsRValue(Info, E->getArg(0), SourceX) || + !EvaluateAsRValue(Info, E->getArg(1), SourceY) || + !EvaluateAsRValue(Info, E->getArg(2), SourceZ)) + return false; + + unsigned SourceLen = SourceX.getVectorLength(); + SmallVector<APValue> ResultElements; + ResultElements.reserve(SourceLen); + llvm::RoundingMode RM = getActiveRoundingMode(getEvalInfo(), E); + + for (unsigned EltNum = 0; EltNum < SourceLen; ++EltNum) { + APFloat X = SourceX.getVectorElt(EltNum).getFloat(); + APFloat Y = SourceY.getVectorElt(EltNum).getFloat(); + APFloat Z = SourceZ.getVectorElt(EltNum).getFloat(); ---------------- arsenm wrote:
Can these be const&? https://github.com/llvm/llvm-project/pull/152919 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits