QDP++
sse_dcomplex_mult_macros.h File Reference
#include "qdp_diagnostics.h"
#include "qdp_config.h"
#include <xmmintrin.h>

Go to the source code of this file.

Macros

#define CMUL(z, x, y)
#define CMADD(z, x, y)
#define CCMUL(z, x, y)
#define CCMADD(z, x, y)
#define CONJMUL(z, x, y)
#define CONJMADD(z, x, y)

Macro Definition Documentation

◆ CCMADD

#define CCMADD ( z,
x,
y )
Value:
{ \
__m128d t1,t2,t3,t4; \
__m128d t5 = _mm_set_pd( (double)(-1), (double)1 ); \
t1 = _mm_mul_pd(x,y); \
t2 = _mm_shuffle_pd(t1,t1,0x1); \
t3 = _mm_shuffle_pd(y,y,0x1);\
t4 = _mm_sub_pd(t1,t2); \
t2 = _mm_mul_pd(x,t3); \
t3 = _mm_shuffle_pd(t2,t2,0x1); \
t3 = _mm_add_pd(t2,t3); \
t4= _mm_shuffle_pd(t4,t3,0x2); \
t4= _mm_mul_pd(t5, t4); \
z = _mm_add_pd(z,t4); \
}

Definition at line 72 of file sse_dcomplex_mult_macros.h.

◆ CCMUL

#define CCMUL ( z,
x,
y )
Value:
{ \
__m128d t1,t2,t3; \
__m128d t4 = _mm_set_pd( (double)(-1), (double)1 ); \
t1 = _mm_mul_pd(x,y); \
t2 = _mm_shuffle_pd(t1,t1,0x1); \
t3 = _mm_shuffle_pd(y,y,0x1);\
z = _mm_sub_pd(t1,t2); \
t2 = _mm_mul_pd(x,t3); \
t3 = _mm_shuffle_pd(t2,t2,0x1); \
t3 = _mm_add_pd(t2,t3); \
z= _mm_shuffle_pd(z,t3,0x2); \
z= _mm_mul_pd(z,t4); \
}

Definition at line 54 of file sse_dcomplex_mult_macros.h.

◆ CMADD

#define CMADD ( z,
x,
y )
Value:
{ \
__m128d t1,t2,t3,t4; \
t1 = _mm_mul_pd(x,y); \
t2 = _mm_shuffle_pd(t1,t1,0x1); \
t3 = _mm_shuffle_pd(y,y,0x1);\
t4 = _mm_sub_pd(t1,t2); \
t2 = _mm_mul_pd(x,t3); \
t3 = _mm_shuffle_pd(t2,t2,0x1); \
t3 = _mm_add_pd(t2,t3); \
t4= _mm_shuffle_pd(t4,t3,0x2); \
z = _mm_add_pd(z,t4); \
}

Definition at line 37 of file sse_dcomplex_mult_macros.h.

◆ CMUL

#define CMUL ( z,
x,
y )
Value:
{ \
__m128d t1,t2,t3,t4; \
t1 = _mm_mul_pd(x,y); \
t2 = _mm_shuffle_pd(t1,t1,0x1); \
t3 = _mm_shuffle_pd(y,y,0x1);\
z = _mm_sub_pd(t1,t2); \
t2 = _mm_mul_pd(x,t3); \
t3 = _mm_shuffle_pd(t2,t2,0x1); \
t3 = _mm_add_pd(t2,t3); \
z= _mm_shuffle_pd(z,t3,0x2); \
}

Definition at line 21 of file sse_dcomplex_mult_macros.h.

◆ CONJMADD

#define CONJMADD ( z,
x,
y )
Value:
{ \
__m128d t1,t2,t3,t4; \
t1 = _mm_mul_pd(x,y); \
t2 = _mm_shuffle_pd(t1,t1,0x1); \
t3 = _mm_shuffle_pd(y,y,0x1);\
t4 = _mm_add_pd(t1,t2); \
t2 = _mm_mul_pd(x,t3); \
t3 = _mm_shuffle_pd(t2,t2,0x1); \
t3 = _mm_sub_pd(t2,t3); \
t4= _mm_shuffle_pd(t4,t3,0x2); \
z = _mm_add_pd(z,t4); \
}

Definition at line 108 of file sse_dcomplex_mult_macros.h.

◆ CONJMUL

#define CONJMUL ( z,
x,
y )
Value:
{ \
__m128d t1,t2,t3,t4; \
t1 = _mm_mul_pd(x,y); \
t2 = _mm_shuffle_pd(t1,t1,0x1); \
t3 = _mm_shuffle_pd(y,y,0x1);\
z = _mm_add_pd(t1,t2); \
t2 = _mm_mul_pd(x,t3); \
t3 = _mm_shuffle_pd(t2,t2,0x1); \
t3 = _mm_sub_pd(t2,t3); \
z= _mm_shuffle_pd(z,t3,0x2); \
}

Definition at line 92 of file sse_dcomplex_mult_macros.h.