8#ifndef QDP_SSE_BLAS_VAXPBY3_G5
9#define QDP_SSE_BLAS_VAXPBY3_G5
30 v4sf vscalep = _mm_load_ss(scalep);
31 v4sf vscalep2 = _mm_load_ss(scalep2);
32 vscalep = _mm_shuffle_ps(vscalep, vscalep, 0);
33 vscalep2 = _mm_shuffle_ps(vscalep2, vscalep2,0);
35 for(
int i=0; i < n_4vec; i++) {
38 _mm_store_ps(Out+ 0, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 0)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 0))));
41 _mm_store_ps(Out+ 4, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 4)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 4))));
44 _mm_store_ps(Out+ 8, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 8)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 8))));
47 _mm_store_ps(Out+12, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 12)));
50 _mm_store_ps(Out+16, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 16)));
53 _mm_store_ps(Out+20, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 20)));
56 Out += 24; InScale += 24; Add += 24;
69 v4sf vscalep = _mm_load_ss(scalep);
70 vscalep = _mm_shuffle_ps(vscalep, vscalep, 0);
72 v4sf vscalep2 = _mm_load_ss(scalep2);
73 vscalep2 = _mm_shuffle_ps(vscalep2, vscalep2, 0);
75 for(
int i=0; i < n_4vec; i++) {
77 _mm_store_ps(Out+0, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 0)));
80 _mm_store_ps(Out+4, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 4)));
83 _mm_store_ps(Out+8, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 8)));
87 _mm_store_ps(Out+ 12, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 12)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 12))));
90 _mm_store_ps(Out+ 16, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 16)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 16))));
93 _mm_store_ps(Out+ 20, _mm_add_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 20)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 20))));
96 Out += 24; InScale += 24; Add += 24;
110 v4sf vscalep = _mm_load_ss(scalep);
111 v4sf vscalep2 = _mm_load_ss(scalep2);
113 vscalep = _mm_shuffle_ps( vscalep, vscalep, 0);
114 vscalep2 = _mm_shuffle_ps( vscalep2, vscalep2, 0);
117 for(
int i=0; i < n_4vec; i++) {
120 _mm_store_ps(Out+ 0, _mm_sub_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 0)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 0))));
123 _mm_store_ps(Out+ 4, _mm_sub_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 4)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 4))));
126 _mm_store_ps(Out+ 8, _mm_sub_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 8)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 8))));
129 _mm_store_ps(Out+12, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 12)));
132 _mm_store_ps(Out+16, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 16)));
135 _mm_store_ps(Out+20, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 20)));
138 Out += 24; InScale += 24; Add += 24;
151 v4sf vscalep = _mm_load_ss(scalep);
152 vscalep = _mm_shuffle_ps(vscalep, vscalep, 0);
154 v4sf vscalep2 = _mm_load_ss(scalep2);
155 vscalep2 = _mm_shuffle_ps(vscalep2, vscalep2, 0);
157 for(
int i=0; i < n_4vec; i++) {
159 _mm_store_ps(Out+0, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 0)));
162 _mm_store_ps(Out+4, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 4)));
165 _mm_store_ps(Out+8, _mm_mul_ps(vscalep, _mm_load_ps(InScale+ 8)));
169 _mm_store_ps(Out+ 12, _mm_sub_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 12)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 12))));
172 _mm_store_ps(Out+ 16, _mm_sub_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 16)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 16))));
175 _mm_store_ps(Out+ 20, _mm_sub_ps(_mm_mul_ps(vscalep, _mm_load_ps(InScale+ 20)), _mm_mul_ps(vscalep2,_mm_load_ps(Add+ 20))));
178 Out += 24; InScale += 24; Add += 24;
Yet another random number generator.
void axpbyz_g5ProjMinus(REAL *Out, REAL *scalep, REAL *InScale, REAL *scalep2, REAL *Add, int n_4vec)
void axmbyz_g5ProjMinus(REAL *Out, REAL *scalep, REAL *InScale, REAL *scalep2, REAL *Add, int n_4vec)
void axpbyz_g5ProjPlus(REAL *Out, REAL *scalep, REAL *InScale, REAL *scalep2, REAL *Add, int n_4vec)
void axmbyz_g5ProjPlus(REAL *Out, REAL *scalep, REAL *InScale, REAL *scalep2, REAL *Add, int n_4vec)