================ @@ -549,6 +562,22 @@ static bool interp__builtin_fpclassify(InterpState &S, CodePtr OpPC, return true; } +static bool interp__builtin_fma(InterpState &S, CodePtr OpPC, + const InterpFrame *Frame, const Function *Func, + const CallExpr *Call) { + const Floating &X = getParam<Floating>(Frame, 0); + const Floating &Y = getParam<Floating>(Frame, 1); + const Floating &Z = getParam<Floating>(Frame, 2); + Floating Result; + + llvm::RoundingMode RM = getActiveRoundingMode(S, Call); + Floating::mul(X, Y, RM, &Result); + Floating::add(Result, Z, RM, &Result); ---------------- c8ef wrote:
I'm not entirely sure about this either, thanks for pointing it out! Regarding the type, `Floating` is simply a wrapper for `APFloat`. https://github.com/llvm/llvm-project/pull/113020 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits