24 #ifndef ACL_SRC_CORE_NEON_SVEMATH_H
25 #define ACL_SRC_CORE_NEON_SVEMATH_H
27 #if defined(ARM_COMPUTE_ENABLE_SVE)
44 svfloat32_t svexp_f32_z(svbool_t pg, svfloat32_t val);
53 svfloat32_t svinv_f32_z(svbool_t pg, svfloat32_t x);
62 svfloat32_t svlog_f32_z(svbool_t pg, svfloat32_t x);
75 svfloat32_t svtanh_f32_z(svbool_t pg, svfloat32_t val);
88 svfloat16_t svtanh_f16_z(svbool_t pg, svfloat16_t val);
97 svfloat16_t svexp_f16_z(svbool_t pg, svfloat16_t x);
99 #ifdef ARM_COMPUTE_ENABLE_SVE2
108 svfloat16_t svexp_f16_z_sve2(svbool_t pg, svfloat16_t x);
110 #endif // ARM_COMPUTE_ENABLE_SVE2
119 svfloat16_t svinv_f16_z(svbool_t pg, svfloat16_t x);
128 svfloat16_t svlog_f16_z(svbool_t pg, svfloat16_t x);
130 #ifdef ARM_COMPUTE_ENABLE_SVE2
139 svfloat16_t svlog_f16_z_sve2(svbool_t pg, svfloat16_t x);
141 #endif // ARM_COMPUTE_ENABLE_SVE2
150 template <
typename VectorType>
151 inline VectorType svinvsqrt(svbool_t pg, VectorType val)
153 auto sqrt_reciprocal = svrsqrte(val);
154 sqrt_reciprocal = svmul_z(pg, svrsqrts(svmul_z(pg, val, sqrt_reciprocal), sqrt_reciprocal), sqrt_reciprocal);
155 sqrt_reciprocal = svmul_z(pg, svrsqrts(svmul_z(pg, val, sqrt_reciprocal), sqrt_reciprocal), sqrt_reciprocal);
156 return sqrt_reciprocal;
166 svfloat32_t svsin_f32_z(svbool_t pg, svfloat32_t val);
175 svfloat16_t svsin_f16_z(svbool_t pg, svfloat16_t val);
177 #ifdef ARM_COMPUTE_ENABLE_SVE2
186 svfloat16_t svsin_f16_z_sve2(svbool_t pg, svfloat16_t val);
188 #endif // ARM_COMPUTE_ENABLE_SVE2
200 svfloat32_t svpow_f32_z(svbool_t pg, svfloat32_t a, svfloat32_t
b);
212 svfloat16_t svpow_f16_z(svbool_t pg, svfloat16_t a, svfloat16_t
b);
214 #ifdef ARM_COMPUTE_ENABLE_SVE2
226 svfloat16_t svpow_f16_z_sve2(svbool_t pg, svfloat16_t a, svfloat16_t
b);
228 #endif // ARM_COMPUTE_ENABLE_SVE2
239 template <
typename int_vec_type>
241 const svfloat32_t &in_1,
242 const svfloat32_t &in_2,
243 const svfloat32_t &in_3);
248 #endif // ACL_SRC_CORE_NEON_SVEMATH_H