8#ifndef QDP_SSE_BLAS_VSCAL_G5
9#define QDP_SSE_BLAS_VSCAL_G5
27 v4sf vscalep = _mm_load_ss(scalep);
28 vscalep =_mm_shuffle_ps(vscalep, vscalep, 0 );
33 v4sf vzero = _mm_load_ss(&rzero);
34 vzero = _mm_shuffle_ps(vzero, vzero, 0);
36 for(
int i=0; i < n_4vec; i++) {
39 _mm_store_ps(Out+ 0, _mm_mul_ps(vscalep, _mm_load_ps(X+ 0)));
42 _mm_store_ps(Out+ 4, _mm_mul_ps(vscalep, _mm_load_ps(X+ 4)));
46 _mm_store_ps(Out+ 8, _mm_mul_ps(vscalep, _mm_load_ps(X+ 8)));
50 _mm_store_ps(Out+12, vzero);
53 _mm_store_ps(Out+16, vzero);
56 _mm_store_ps(Out+20, vzero);
72 v4sf vscalep = _mm_load_ss(scalep);
73 vscalep = _mm_shuffle_ps(vscalep, vscalep,0);
77 v4sf vzero = _mm_load_ss(&rzero);
78 vzero = _mm_shuffle_ps(vzero, vzero, 0);
80 for(
int i=0; i < n_4vec; i++) {
82 _mm_store_ps(Out+0, vzero);
85 _mm_store_ps(Out+4, vzero);
88 _mm_store_ps(Out+8, vzero);
92 _mm_store_ps(Out+ 12, _mm_mul_ps(vscalep, _mm_load_ps(X+ 12)));
95 _mm_store_ps(Out+ 16, _mm_mul_ps(vscalep, _mm_load_ps(X+ 16)));
99 _mm_store_ps(Out+ 20, _mm_mul_ps(vscalep, _mm_load_ps(X+ 20)));
Yet another random number generator.
void scal_g5ProjMinus(REAL *Out, REAL *scalep, REAL *In, int n_4vec)
void scal_g5ProjPlus(REAL *Out, REAL *scalep, REAL *In, int n_4vec)