8#ifndef QDP_SSE_BLAS_VAYPX3_G5
9#define QDP_SSE_BLAS_VAYPX3_G5
30 v4sf vscalep = _mm_load_ss(scalep);
31 vscalep = _mm_shuffle_ps(vscalep, vscalep,0);
33 for(
int i=0; i < n_4vec; i++) {
36 _mm_store_ps(Out+ 0, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 0)), _mm_load_ps(Add+ 0)));
39 _mm_store_ps(Out+ 4, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 4)), _mm_load_ps(Add+ 4)));
42 _mm_store_ps(Out+ 8, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 8)), _mm_load_ps(Add+ 8)));
45 _mm_store_ps(Out+12, _mm_load_ps(Add+ 12));
48 _mm_store_ps(Out+16, _mm_load_ps(Add+ 16));
51 _mm_store_ps(Out+20, _mm_load_ps(Add+ 20));
54 Out += 24; InScale += 24; Add += 24;
67 v4sf vscalep = _mm_load_ss(scalep);
68 vscalep = _mm_shuffle_ps(vscalep, vscalep, 0);
70 for(
int i=0; i < n_4vec; i++) {
72 _mm_store_ps(Out+0,_mm_load_ps(Add+ 0));
75 _mm_store_ps(Out+4,_mm_load_ps(Add+ 4));
78 _mm_store_ps(Out+8, _mm_load_ps(Add+ 8));
82 _mm_store_ps(Out+12, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 12)), _mm_load_ps(Add+ 12)));
85 _mm_store_ps(Out+ 16, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 16)), _mm_load_ps(Add+ 16)));
88 _mm_store_ps(Out+ 20, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 20)), _mm_load_ps(Add+ 20)));
90 Out += 24; InScale += 24; Add += 24;
107 v4sf vscalep = _mm_load_ss(scalep);
108 vscalep = _mm_shuffle_ps(vscalep, vscalep, 0);
110 for(
int i=0; i < n_4vec; i++) {
113 _mm_store_ps(Out+ 0, _mm_sub_ps(_mm_load_ps(Add+ 0),_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 0))));
117 _mm_store_ps(Out+ 4, _mm_sub_ps(_mm_load_ps(Add+ 4),_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 4))));
120 _mm_store_ps(Out+ 8, _mm_sub_ps(_mm_load_ps(Add+ 8), _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 8))));
123 _mm_store_ps(Out+12, _mm_load_ps(Add + 12));
128 _mm_store_ps(Out+16, _mm_load_ps(Add+ 16));
131 _mm_store_ps(Out+20, _mm_load_ps(Add+20));
134 Out += 24; InScale += 24; Add += 24;
148 v4sf vscalep = _mm_load_ss(scalep);
149 vscalep = _mm_shuffle_ps(vscalep, vscalep,0);
151 for(
int i=0; i < n_4vec; i++) {
153 _mm_store_ps(Out+0, _mm_load_ps(Add+0));
156 _mm_store_ps(Out+4, _mm_load_ps(Add+4));
160 _mm_store_ps(Out+8, _mm_load_ps(Add+8));
164 _mm_store_ps(Out+12, _mm_sub_ps(_mm_load_ps(Add+ 12),_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 12))));;
167 _mm_store_ps(Out+ 16, _mm_sub_ps(_mm_load_ps(Add+ 16),_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 16))));
170 _mm_store_ps(Out+ 20, _mm_sub_ps(_mm_load_ps(Add+ 20),_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 20))));
172 Out += 24; InScale += 24; Add += 24;
Yet another random number generator.
void xmayz_g5ProjPlus(REAL *Out, REAL *scalep, REAL *Add, REAL *InScale, int n_4vec)
void xpayz_g5ProjMinus(REAL *Out, REAL *scalep, REAL *Add, REAL *InScale, int n_4vec)
void xmayz_g5ProjMinus(REAL *Out, REAL *scalep, REAL *Add, REAL *InScale, int n_4vec)
void xpayz_g5ProjPlus(REAL *Out, REAL *scalep, REAL *Add, REAL *InScale, int n_4vec)