43{
44 double* restrict
chi1;
46 double* restrict
psi1;
47 double* restrict
zeta1;
50
54
58
59 if ( inc_x != 1 ||
60 inc_u != 1 ||
61 inc_y != 1 ||
63
65 if ( ( unsigned long ) z % 16 != 0 )
66 {
67 if ( ( unsigned long ) x % 16 == 0 ||
68 ( unsigned long ) u % 16 == 0 ||
69 (
unsigned long ) y % 16 == 0 )
bl1_abort();
70
72 }
73
76
81
83
85 {
88 double chi1_c = *
chi1;
90
91 rho_c += chi1_c * upsilon_c;
94
99 }
100
101 a1v.
v = _mm_loaddup_pd( (
double* )alpha );
102 b1v.
v = _mm_loaddup_pd( (
double* )beta );
103
104 rho1v.
v = _mm_setzero_pd();
105
107 {
108 x1v.
v = _mm_load_pd( (
double* )
chi1 );
109 u1v.
v = _mm_load_pd( (
double* )
upsilon1 );
110 y1v.
v = _mm_load_pd( (
double* )
psi1 );
111 z1v.
v = _mm_load_pd( (
double* )
zeta1 );
112
113 rho1v.
v += x1v.
v * u1v.
v;
114 y1v.
v -= a1v.
v * x1v.
v;
115 z1v.
v -= b1v.
v * x1v.
v;
116
117 _mm_store_pd( (
double* )
psi1, y1v.
v );
118 _mm_store_pd( (
double* )
zeta1, z1v.
v );
119
124 }
125
126 rho_c += rho1v.
d[0] + rho1v.
d[1];
127
129 {
132
134 {
135 double chi1_c = *
chi1;
137
138 rho_c += chi1_c * upsilon_c;
141
146 }
147 }
148
150}
chi1
Definition bl1_axmyv2.c:366
double beta_c
Definition bl1_dotaxmyv2.c:158
double alpha_c
Definition bl1_dotaxmyv2.c:157
int n_left
Definition bl1_dotaxmyv2.c:164
double *restrict upsilon1
Definition bl1_dotaxmyv2.c:154
int n_pre
Definition bl1_dotaxmyv2.c:162
double rho_c
Definition bl1_dotaxmyv2.c:159
double *restrict psi1
Definition bl1_dotaxmyv2.c:155
int n_run
Definition bl1_dotaxmyv2.c:163
* rho
Definition bl1_dotaxmyv2.c:258
int i
Definition bl1_dotaxmyv2.c:160
double *restrict zeta1
Definition bl1_dotaxmyv2.c:156
Definition blis_type_defs.h:117
double d[2]
Definition blis_type_defs.h:119
__m128d v
Definition blis_type_defs.h:118