QDP++
sse_linalg_m_eq_mm_double.cc File Reference

Generic Scalar VAXPY routine. More...

#include "qdp_diagnostics.h"
#include "scalarsite_sse/sse_linalg_mm_su3_double.h"
#include <xmmintrin.h>
#include "qdp_config.h"

Go to the source code of this file.

Namespaces

namespace  QDP
 Yet another random number generator.

Macros

#define CMUL(z, x, y)
#define CMADD(z, x, y)

Functions

void QDP::ssed_m_eq_mm (REAL64 *m3, REAL64 *m2, REAL64 *m1, int n_mat)
void QDP::ssed_m_peq_amm (REAL64 *m3, REAL64 *a, REAL64 *m2, REAL64 *m1, int n_mat)
void QDP::ssed_m_eq_mm_u (REAL64 *m3, REAL64 *m2, REAL64 *m1, int n_mat)
void QDP::ssed_m_peq_amm_u (REAL64 *m3, REAL64 *a, REAL64 *m2, REAL64 *m1, int n_mat)

Detailed Description

Generic Scalar VAXPY routine.

Definition in file sse_linalg_m_eq_mm_double.cc.

Macro Definition Documentation

◆ 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 33 of file sse_linalg_m_eq_mm_double.cc.

Referenced by QDP::ssed_m_eq_mm(), QDP::ssed_m_eq_mm_u(), QDP::ssed_m_peq_amm(), and QDP::ssed_m_peq_amm_u().

◆ CMUL

#define CMUL ( z,
x,
y )
Value:
{ \
__m128d t1,t2,t3; \
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 19 of file sse_linalg_m_eq_mm_double.cc.

Referenced by QDP::ssed_m_eq_mm(), and QDP::ssed_m_eq_mm_u().