xref: /freebsd/contrib/arm-optimized-routines/math/aarch64/advsimd/v_poly_f32.h (revision f3087bef11543b42e0d69b708f367097a4118d24)
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