26 #ifndef EIGEN_MATH_FUNCTIONS_MSA_H
27 #define EIGEN_MATH_FUNCTIONS_MSA_H
30 #include "../../InternalHeaderCheck.h"
62 Packet4i e_int = __builtin_msa_ftint_s_w(__builtin_msa_flog2_w(
x));
64 x = __builtin_msa_fexp2_w(
x, (
Packet4i)__builtin_msa_nori_b((v16u8)e_int, 0));
75 Packet4i ge_mask = __builtin_msa_fcle_w(p4f_cephes_SQRTHF,
x);
76 e_int =
psub(e_int, ge_mask);
77 x = (
Packet4f)__builtin_msa_bsel_v((v16u8)ge_mask, (v16u8)xx, (v16u8)
x);
79 Packet4f e = __builtin_msa_ffint_s_w(e_int);
85 y =
pmadd(p4f_cephes_log_p0,
x, p4f_cephes_log_p1);
86 y1 =
pmadd(p4f_cephes_log_p3,
x, p4f_cephes_log_p4);
87 y2 =
pmadd(p4f_cephes_log_p6,
x, p4f_cephes_log_p7);
89 y1 =
pmadd(y1,
x, p4f_cephes_log_p5);
90 y2 =
pmadd(y2,
x, p4f_cephes_log_p8);
96 x = __builtin_msa_fmsub_w(
x,
x2, p4f_half);
114 x = __builtin_msa_fmin_w(
x, non_neg_x_or_nan);
117 Packet4i neg_infs = __builtin_msa_slli_w(zero_mask, 23);
118 x = (
Packet4f)__builtin_msa_bsel_v((v16u8)zero_mask, (v16u8)
x, (v16u8)neg_infs);
144 x = (
Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(
x, p4f_exp_lo), (v16u8)
x, (v16u8)p4f_exp_lo);
145 x = (
Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(p4f_exp_hi,
x), (v16u8)
x, (v16u8)p4f_exp_hi);
148 Packet4f x2_add = (
Packet4f)__builtin_msa_binsli_w((v4u32)p4f_half, (v4u32)
x, 0);
150 Packet4i x2_int = __builtin_msa_ftrunc_s_w(
x2);
151 Packet4f x2_int_f = __builtin_msa_ffint_s_w(x2_int);
153 x = __builtin_msa_fmsub_w(
x, x2_int_f, p4f_cephes_exp_C1);
154 x = __builtin_msa_fmsub_w(
x, x2_int_f, p4f_cephes_exp_C2);
168 y = __builtin_msa_fexp2_w(
y, x2_int);
192 Packet4i tiny_mask = __builtin_msa_fclt_w(
x, p4f_tanh_tiny);
196 x = (
Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(p4f_tanh_hi,
x), (v16u8)
x, (v16u8)p4f_tanh_hi);
219 p = (
Packet4f)__builtin_msa_binsli_w((v4u32)
p, (v4u32)_x, 0);
222 p = (
Packet4f)__builtin_msa_bsel_v((v16u8)tiny_mask, (v16u8)
p, (v16u8)_x);
247 x =
padd(
x, zero_or_nan_if_inf);
250 Packet4i small_or_nan_mask = __builtin_msa_fcult_w(
x, p4f_sincos_max_arg);
256 Packet4i y_int = __builtin_msa_ftrunc_s_w(
y);
260 Packet4i y_int1 = __builtin_msa_addvi_w(y_int, 1);
262 y = __builtin_msa_ffint_s_w(y_int2);
266 : __builtin_msa_slli_w(__builtin_msa_addvi_w(y_int, 3), 29);
270 Packet4i poly_mask = __builtin_msa_ceqi_w(__builtin_msa_slli_w(y_int2, 30), 0);
285 y =
pmadd(
y, z, p4f_coscof_p1);
286 y =
pmadd(
y, z, p4f_coscof_p2);
289 y = __builtin_msa_fmsub_w(
y, z, p4f_half);
294 y2 =
pmadd(y2, z, p4f_sincof_p1);
295 y2 =
pmadd(y2, z, p4f_sincof_p2);
300 y = sine ? (
Packet4f)__builtin_msa_bsel_v((v16u8)poly_mask, (v16u8)
y, (v16u8)y2)
301 : (
Packet4f)__builtin_msa_bsel_v((v16u8)poly_mask, (v16u8)y2, (v16u8)
y);
305 y = (
Packet4f)__builtin_msa_binsli_w((v4u32)
y, (v4u32)sign_mask, 0);
342 x = (
Packet2d)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_d(
x, p2d_exp_lo), (v16u8)
x, (v16u8)p2d_exp_lo);
343 x = (
Packet2d)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_d(p2d_exp_hi,
x), (v16u8)
x, (v16u8)p2d_exp_hi);
346 Packet2d x2_add = (
Packet2d)__builtin_msa_binsli_d((v2u64)p2d_half, (v2u64)
x, 0);
348 Packet2l x2_long = __builtin_msa_ftrunc_s_d(
x2);
349 Packet2d x2_long_d = __builtin_msa_ffint_s_d(x2_long);
351 x = __builtin_msa_fmsub_d(
x, x2_long_d, p2d_cephes_exp_C1);
352 x = __builtin_msa_fmsub_d(
x, x2_long_d, p2d_cephes_exp_C2);
362 qx =
pmadd(qx,
x2, p2d_cephes_exp_q1);
363 qx =
pmadd(qx,
x2, p2d_cephes_exp_q2);
364 qx =
pmadd(qx,
x2, p2d_cephes_exp_q3);
370 x = __builtin_msa_fexp2_d(
x, x2_long);
Array< double, 1, 3 > e(1./3., 0.5, 2.)
#define EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
Definition: Macros.h:900
float * p
Definition: Tutorial_Map_using.cpp:9
RealScalar RealScalar * px
Definition: level1_cplx_impl.h:27
__m128d Packet2d
Definition: LSX/PacketMath.h:36
EIGEN_DEVICE_FUNC Packet padd(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:318
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f pcos< Packet4f >(const Packet4f &x)
Definition: arch/MSA/MathFunctions.h:315
__vector int Packet4i
Definition: AltiVec/PacketMath.h:34
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet2d pexp< Packet2d >(const Packet2d &_x)
Definition: arch/MSA/MathFunctions.h:320
static EIGEN_DECLARE_CONST_Packet4f(1, 1.0f)
const Scalar & y
Definition: RandomImpl.h:36
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:368
__vector unsigned int Packet4ui
Definition: AltiVec/PacketMath.h:35
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f plog< Packet4f >(const Packet4f &_x)
Definition: arch/MSA/MathFunctions.h:37
EIGEN_STRONG_INLINE Packet4f pmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
Definition: AltiVec/PacketMath.h:1218
EIGEN_STRONG_INLINE Packet4cf pmul(const Packet4cf &a, const Packet4cf &b)
Definition: AVX/Complex.h:88
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f ptanh< Packet4f >(const Packet4f &_x)
Definition: arch/MSA/MathFunctions.h:174
EIGEN_STRONG_INLINE Packet4f pabs(const Packet4f &a)
Definition: AltiVec/PacketMath.h:1936
EIGEN_STRONG_INLINE Packet8h pand(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2319
EIGEN_STRONG_INLINE Packet8h pxor(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2315
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f psin< Packet4f >(const Packet4f &x)
Definition: arch/MSA/MathFunctions.h:310
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f pexp< Packet4f >(const Packet4f &_x)
Definition: arch/MSA/MathFunctions.h:124
EIGEN_DEVICE_FUNC Packet psub(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:337
static EIGEN_DECLARE_CONST_Packet2d(1, 1.0)
__vector float Packet4f
Definition: AltiVec/PacketMath.h:33
Packet4f psincos_inner_msa_float(const Packet4f &_x)
Definition: arch/MSA/MathFunctions.h:228
EIGEN_DEVICE_FUNC const Scalar & q
Definition: SpecialFunctionsImpl.h:2019
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
Vector< double > x2(const Vector< double > &coord)
Cartesian coordinates centered at the point (1.5,1)
Definition: poisson/poisson_with_singularity/two_d_poisson.cc:102
Definition: Eigen_Colamd.h:49
list x
Definition: plotDoE.py:28
EIGEN_DONT_INLINE Scalar zero()
Definition: svd_common.h:232