1*f3087befSAndrew Turner /* 2*f3087befSAndrew Turner * Helpers for evaluating polynomials on single-precision AdvSIMD input, using 3*f3087befSAndrew Turner * various schemes. 4*f3087befSAndrew Turner * 5*f3087befSAndrew Turner * Copyright (c) 2023-2024, Arm Limited. 6*f3087befSAndrew Turner * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception 7*f3087befSAndrew Turner */ 8*f3087befSAndrew Turner 9*f3087befSAndrew Turner #ifndef MATH_POLY_ADVSIMD_F32_H 10*f3087befSAndrew Turner #define MATH_POLY_ADVSIMD_F32_H 11*f3087befSAndrew Turner 12*f3087befSAndrew Turner #include <arm_neon.h> 13*f3087befSAndrew Turner 14*f3087befSAndrew Turner /* Wrap AdvSIMD f32 helpers: evaluation of some scheme/order has form: 15*f3087befSAndrew Turner v_[scheme]_[order]_f32. */ 16*f3087befSAndrew Turner #define VTYPE float32x4_t 17*f3087befSAndrew Turner #define FMA(x, y, z) vfmaq_f32 (z, x, y) 18*f3087befSAndrew Turner #define VWRAP(f) v_##f##_f32 19*f3087befSAndrew Turner #include "poly_generic.h" 20*f3087befSAndrew Turner #undef VWRAP 21*f3087befSAndrew Turner #undef FMA 22*f3087befSAndrew Turner #undef VTYPE 23*f3087befSAndrew Turner 24*f3087befSAndrew Turner #endif 25