diff options
Diffstat (limited to 'src/vectors-4-default.h')
-rw-r--r-- | src/vectors-4-default.h | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/src/vectors-4-default.h b/src/vectors-4-default.h index 28fae04..ec98ebf 100644 --- a/src/vectors-4-default.h +++ b/src/vectors-4-default.h @@ -1,3 +1,4 @@ +// -*-C++-*- // Fallback vectorisation implementation: Do not vectorise // We use macros here, so that we are not surprised by compilers which @@ -23,10 +24,10 @@ vec_static_assert(sizeof(CCTK_REAL4_VEC) == sizeof(CCTK_REAL4) * CCTK_REAL4_VEC_SIZE); // Integer and boolean types corresponding to this real type -#define CCTK_INTEGER4 CCTK_REAL4 -#define CCTK_BOOLEAN4 CCTK_REAL4 -#define CCTK_INTEGER4_VEC CCTK_REAL4_VEC -#define CCTK_BOOLEAN4_VEC CCTK_REAL4_VEC +#define CCTK_INTEGER4 CCTK_INT4 +#define CCTK_BOOLEAN4 CCTK_INT4 +#define CCTK_INTEGER4_VEC CCTK_INT4 +#define CCTK_BOOLEAN4_VEC CCTK_INT4 @@ -38,6 +39,8 @@ vec_static_assert(sizeof(CCTK_REAL4_VEC) == // Access vectors elements #define vec4_elt0(x) (x) #define vec4_elt(x,d) (x) +#define vec4_elti(x,d) (x) +#define vec4_eltb(x,d) (x) @@ -118,20 +121,18 @@ vec_static_assert(sizeof(CCTK_REAL4_VEC) == }) #define k4signbit(x) (std::signbit(x)) -#define k4l2r(x_) ({ CCTK_INT4 x__=(x_); CCTK_INT4 x=x__; *(CCTK_REAL4*)&x; }) -#define k4r2l(x_) ({ CCTK_REAL4 x__=(x_); CCTK_REAL4 x=x__; *(CCTK_INT4*)&x; }) -#define k4lfalse k4l2r(0) -#define k4ltrue k4l2r(1) -#define k4lnot(x) k4l2r(!k4r2l(x)) -#define k4land(x,y) k4l2r(k4r2l(x) && k4r2l(y)) -#define k4lor(x,y) k4l2r(k4r2l(x) || k4r2l(y)) -#define k4lxor(x,y) k4l2r(!k4r2l(x) != !k4r2l(y)) - -#define k4ifthen(x,y,z) (k4r2l(x)?(y):(z)) - -#define k4cmpeq(x,y) k4l2r((x)==(y)) -#define k4cmpne(x,y) k4l2r((x)!=(y)) -#define k4cmpgt(x,y) k4l2r((x)>(y)) -#define k4cmpge(x,y) k4l2r((x)>=(y)) -#define k4cmplt(x,y) k4l2r((x)<(y)) -#define k4cmple(x,y) k4l2r((x)<=(y)) +#define k4lfalse 0 +#define k4ltrue 1 +#define k4lnot(x) (!(x)) +#define k4land(x,y) ((x) && (y)) +#define k4lor(x,y) ((x) || (y)) +#define k4lxor(x,y) (!(x) != !(y)) + +#define k4ifthen(x,y,z) ((x)?(y):(z)) + +#define k4cmpeq(x,y) ((x)==(y)) +#define k4cmpne(x,y) ((x)!=(y)) +#define k4cmpgt(x,y) ((x)>(y)) +#define k4cmpge(x,y) ((x)>=(y)) +#define k4cmplt(x,y) ((x)<(y)) +#define k4cmple(x,y) ((x)<=(y)) |