diff --git a/src/spicelib/devices/bsim3v32/b3v32ldsimd.c b/src/spicelib/devices/bsim3v32/b3v32ldsimd.c index cb53d7545..7c5d52b5e 100644 --- a/src/spicelib/devices/bsim3v32/b3v32ldsimd.c +++ b/src/spicelib/devices/bsim3v32/b3v32ldsimd.c @@ -55,136 +55,123 @@ #define USEX86INTRINSICS 1 -typedef double Vec4d __attribute__ ((vector_size (sizeof(double)*NSIMD), aligned (sizeof(double)*NSIMD))); -typedef long int Vec4m __attribute__ ((vector_size (sizeof(double)*NSIMD), aligned (sizeof(double)*NSIMD))); +typedef double Vec4d __attribute__ ((vector_size (sizeof(double)*4), aligned (sizeof(double)*4))); +typedef int64_t Vec4m __attribute__ ((vector_size (sizeof(double)*4), aligned (sizeof(double)*4))); #define SIMDANY(err) (err!=0) #define SIMDIFYCMD(cmd) /* empty */ #define SIMDifySaveScope(sc) /* empty */ -#define vec4_pow0p7(x,p) vec4_mypow(x,p) -#define vec4_powMJ(x,p) vec4_mypow(x,p) -#define vec4_powMJSW(x,p) vec4_mypow(x,p) -#define vec4_powMJSWG(x,p) vec4_mypow(x,p) - #if USEX86INTRINSICS==1 -/* libmvec prototypes */ -/* Caution: those libmvec functions are not as precise as std libm */ -__m256d _ZGVdN4v_exp(__m256d x); -__m256d _ZGVdN4v_log(__m256d x); - -#define vec4_MAX(a,b) _mm256_max_pd(a,b) -#define vec4_exp(a) _ZGVdN4v_exp(a) -#define vec4_log(a) _ZGVdN4v_log(a) -#define vec4_sqrt(a) _mm256_sqrt_pd(a) - - static inline Vec4d vec4_blend(Vec4d fa, Vec4d tr, Vec4m mask) { return _mm256_blendv_pd(fa,tr, (Vec4d) mask); } - -static inline Vec4d vec4_fabs(Vec4d x) -{ - return vec4_blend(x,-x,x<0); -} - #else -/* vector-libm prototypes */ -Vec4d vec4_exp_vectorlibm(Vec4d x); /* defined in vec4_exp.c */ -Vec4d vec4_log_vectorlibm(Vec4d x); /* defined in vec4_log.c */ -#define vec4_exp(a) vec4_exp_vectorlibm(a) -#define vec4_log(a) vec4_log_vectorlibm(a) -static inline Vec4d vec4_MAX(Vec4d a, Vec4d b) -{ - return vec4_blend(a,b,a