LAL  7.5.0.1-b72065a
VectorMath.c File Reference

Prototypes

 DEFINE_ALIGNED_VECT_API (UINT4)
 
 DEFINE_ALIGNED_VECT_API (REAL4)
 
 DEFINE_ALIGNED_VECT_API (REAL8)
 
 DEFINE_ALIGNED_VECT_API (COMPLEX8)
 
 DEFINE_ALIGNED_VECT_API (COMPLEX16)
 

Go to the source code of this file.

Macros

#define DEFINE_ALIGNED_VECT_API(TYPE)
 Create a special <TYPE>Vector with n-byte aligned memory data array. More...
 
#define EXPORT_VECTORMATH_ANY(NAME, ARG_DEF, ARG_CALL, ISET1, ISET2, ISET3, ISET4)
 
#define EXPORT_VECTORMATH_S2I(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## REAL4, (INT4 *out, const REAL4 *in, const UINT4 len), (out, in, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_S2S(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## REAL4, (REAL4 *out, const REAL4 *in, const UINT4 len), (out, in, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_S2SS(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## REAL4, (REAL4 *out1, REAL4 *out2, const REAL4 *in, const UINT4 len), (out1, out2, in, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_SS2S(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## REAL4, (REAL4 *out, const REAL4 *in1, const REAL4 *in2, const UINT4 len), (out, in1, in2, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_sS2S(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## REAL4, (REAL4 *out, REAL4 scalar, const REAL4 *in, const UINT4 len), (out, scalar, in, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_SS2uU(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## REAL4, ( UINT4* count, UINT4 *out, const REAL4 *in1, const REAL4 *in2, const UINT4 len ), (count, out, in1, in2, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_sS2uU(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## REAL4, ( UINT4* count, UINT4 *out, REAL4 scalar, const REAL4 *in, const UINT4 len ), (count, out, scalar, in, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_dD2D(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## REAL8, (REAL8 *out, REAL8 scalar, const REAL8 *in, const UINT4 len), (out, scalar, in, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_DD2D(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## REAL8, (REAL8 *out, const REAL8 *in1, const REAL8 *in2, const UINT4 len), (out, in1, in2, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_CC2C(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## COMPLEX8, (COMPLEX8 *out, const COMPLEX8 *in1, const COMPLEX8 *in2, const UINT4 len), (out, in1, in2, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_cC2C(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## COMPLEX8, (COMPLEX8 *out, COMPLEX8 scalar, const COMPLEX8 *in, const UINT4 len), (out, scalar, in, len), __VA_ARGS__ )
 
#define EXPORT_VECTORMATH_D2D(NAME, ...)    EXPORT_VECTORMATH_ANY( NAME ## REAL8, (REAL8 *out, const REAL8 *in, const UINT4 len), (out, in, len), __VA_ARGS__ )
 

Macro Definition Documentation

◆ DEFINE_ALIGNED_VECT_API

#define DEFINE_ALIGNED_VECT_API (   TYPE)

Create a special <TYPE>Vector with n-byte aligned memory data array.

This does not rely on posix_memalign() being available, and should compile+run everywhere. Use XLALDestroy<TYPE>VectorAligned() to free this.

Definition at line 45 of file VectorMath.c.

◆ EXPORT_VECTORMATH_ANY

#define EXPORT_VECTORMATH_ANY (   NAME,
  ARG_DEF,
  ARG_CALL,
  ISET1,
  ISET2,
  ISET3,
  ISET4 
)
Value:
\
static int XLALVector##NAME##_DISPATCH ARG_DEF; \
\
static int (*XLALVector##NAME##_ptr) ARG_DEF = XLALVector##NAME##_DISPATCH; \
const char* XLALVector##NAME##_name = "\0"; \
\
int XLALVector##NAME##_DISPATCH ARG_DEF { \
CONCAT2(DISPATCH_SELECT_,ISET1)(XLALVector##NAME##_ptr = XLALVector##NAME##_##ISET1, XLALVector##NAME##_name = "XLALVector"#NAME"_"#ISET1); \
CONCAT2(DISPATCH_SELECT_,ISET2)(XLALVector##NAME##_ptr = XLALVector##NAME##_##ISET2, XLALVector##NAME##_name = "XLALVector"#NAME"_"#ISET2); \
CONCAT2(DISPATCH_SELECT_,ISET3)(XLALVector##NAME##_ptr = XLALVector##NAME##_##ISET3, XLALVector##NAME##_name = "XLALVector"#NAME"_"#ISET3); \
CONCAT2(DISPATCH_SELECT_,ISET4)(XLALVector##NAME##_ptr = XLALVector##NAME##_##ISET4, XLALVector##NAME##_name = "XLALVector"#NAME"_"#ISET4); \
DISPATCH_SELECT_END( XLALVector##NAME##_ptr = XLALVector##NAME##_GEN, XLALVector##NAME##_name = "XLALVector"#NAME"_GEN" ); \
\
return XLALVector##NAME ARG_CALL; \
\
} \
\
int XLALVector##NAME ARG_DEF { \
\
return (XLALVector##NAME##_ptr) ARG_CALL; \
\
}
#define _(msgid)
Definition: LALgetopt.c:39
#define DISPATCH_SELECT_BEGIN()
Definition: simd_dispatch.h:53

Definition at line 98 of file VectorMath.c.

◆ EXPORT_VECTORMATH_S2I

#define EXPORT_VECTORMATH_S2I (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## REAL4, (INT4 *out, const REAL4 *in, const UINT4 len), (out, in, len), __VA_ARGS__ )

Definition at line 125 of file VectorMath.c.

◆ EXPORT_VECTORMATH_S2S

#define EXPORT_VECTORMATH_S2S (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## REAL4, (REAL4 *out, const REAL4 *in, const UINT4 len), (out, in, len), __VA_ARGS__ )

Definition at line 131 of file VectorMath.c.

◆ EXPORT_VECTORMATH_S2SS

#define EXPORT_VECTORMATH_S2SS (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## REAL4, (REAL4 *out1, REAL4 *out2, const REAL4 *in, const UINT4 len), (out1, out2, in, len), __VA_ARGS__ )

Definition at line 141 of file VectorMath.c.

◆ EXPORT_VECTORMATH_SS2S

#define EXPORT_VECTORMATH_SS2S (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## REAL4, (REAL4 *out, const REAL4 *in1, const REAL4 *in2, const UINT4 len), (out, in1, in2, len), __VA_ARGS__ )

Definition at line 148 of file VectorMath.c.

◆ EXPORT_VECTORMATH_sS2S

#define EXPORT_VECTORMATH_sS2S (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## REAL4, (REAL4 *out, REAL4 scalar, const REAL4 *in, const UINT4 len), (out, scalar, in, len), __VA_ARGS__ )

Definition at line 157 of file VectorMath.c.

◆ EXPORT_VECTORMATH_SS2uU

#define EXPORT_VECTORMATH_SS2uU (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## REAL4, ( UINT4* count, UINT4 *out, const REAL4 *in1, const REAL4 *in2, const UINT4 len ), (count, out, in1, in2, len), __VA_ARGS__ )

◆ EXPORT_VECTORMATH_sS2uU

#define EXPORT_VECTORMATH_sS2uU (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## REAL4, ( UINT4* count, UINT4 *out, REAL4 scalar, const REAL4 *in, const UINT4 len ), (count, out, scalar, in, len), __VA_ARGS__ )

◆ EXPORT_VECTORMATH_dD2D

#define EXPORT_VECTORMATH_dD2D (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## REAL8, (REAL8 *out, REAL8 scalar, const REAL8 *in, const UINT4 len), (out, scalar, in, len), __VA_ARGS__ )

◆ EXPORT_VECTORMATH_DD2D

#define EXPORT_VECTORMATH_DD2D (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## REAL8, (REAL8 *out, const REAL8 *in1, const REAL8 *in2, const UINT4 len), (out, in1, in2, len), __VA_ARGS__ )

◆ EXPORT_VECTORMATH_CC2C

#define EXPORT_VECTORMATH_CC2C (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## COMPLEX8, (COMPLEX8 *out, const COMPLEX8 *in1, const COMPLEX8 *in2, const UINT4 len), (out, in1, in2, len), __VA_ARGS__ )

◆ EXPORT_VECTORMATH_cC2C

#define EXPORT_VECTORMATH_cC2C (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## COMPLEX8, (COMPLEX8 *out, COMPLEX8 scalar, const COMPLEX8 *in, const UINT4 len), (out, scalar, in, len), __VA_ARGS__ )

◆ EXPORT_VECTORMATH_D2D

#define EXPORT_VECTORMATH_D2D (   NAME,
  ... 
)     EXPORT_VECTORMATH_ANY( NAME ## REAL8, (REAL8 *out, const REAL8 *in, const UINT4 len), (out, in, len), __VA_ARGS__ )

Function Documentation

◆ DEFINE_ALIGNED_VECT_API() [1/5]

DEFINE_ALIGNED_VECT_API ( UINT4  )

◆ DEFINE_ALIGNED_VECT_API() [2/5]

DEFINE_ALIGNED_VECT_API ( REAL4  )

◆ DEFINE_ALIGNED_VECT_API() [3/5]

DEFINE_ALIGNED_VECT_API ( REAL8  )

◆ DEFINE_ALIGNED_VECT_API() [4/5]

DEFINE_ALIGNED_VECT_API ( COMPLEX8  )

◆ DEFINE_ALIGNED_VECT_API() [5/5]

DEFINE_ALIGNED_VECT_API ( COMPLEX16  )