10 #ifndef MULT_CLOVER_QXS_INCLUDED
11 #define MULT_CLOVER_QXS_INCLUDED
19 int *Nsize,
int *do_comm)
25 int Nstv = Nxv * Nyv * Nz * Nt;
26 int Nst = Nstv *
VLEN;
28 svbool_t pg1_xp, pg2_xp, pg1_xm, pg2_xm;
29 svbool_t pg1_yp, pg2_yp, pg1_ym, pg2_ym;
30 set_predicate_xp(pg1_xp, pg2_xp);
31 set_predicate_xm(pg1_xm, pg2_xm);
32 set_predicate_yp(pg1_yp, pg2_yp);
33 set_predicate_ym(pg1_ym, pg2_ym);
36 int Nxyz = Nxv * Nyv * Nz;
39 set_threadtask(ith, nth, is, ns, Nstv);
41 for (
int site = is; site < ns; ++site) {
43 int iyzt = site / Nxv;
59 int nei =
ix + 1 + Nxv *
iyzt;
62 }
else if (do_comm[0] == 0) {
64 int nei = 0 + Nxv *
iyzt;
71 int nei =
ix - 1 + Nxv *
iyzt;
75 }
else if (do_comm[0] == 0) {
77 int nei = Nxv - 1 + Nxv *
iyzt;
84 int iy2 = (
iy + 1) % Nyv;
85 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
90 }
else if (do_comm[1] == 0) {
91 int iy2 = (
iy + 1) % Nyv;
92 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
100 int iy2 = (
iy - 1 + Nyv) % Nyv;
101 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
106 }
else if (do_comm[1] == 0) {
107 int iy2 = (
iy - 1 + Nyv) % Nyv;
108 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
115 if ((
iz < Nz - 1) || (do_comm[2] == 0)) {
116 int iz2 = (
iz + 1) % Nz;
117 int nei =
ixy + Nxy * (iz2 + Nz *
it);
122 if ((
iz > 0) || (do_comm[2] == 0)) {
123 int iz2 = (
iz - 1 + Nz) % Nz;
124 int nei =
ixy + Nxy * (iz2 + Nz *
it);
129 if ((
it < Nt - 1) || (do_comm[3] == 0)) {
130 int it2 = (
it + 1) % Nt;
131 int nei =
ixyz + Nxyz * it2;
137 if ((
it > 0) || (do_comm[3] == 0)) {
138 int it2 = (
it - 1 + Nt) % Nt;
139 int nei =
ixyz + Nxyz * it2;
145 mult_clover_csw_aypx(&v2[
VLEN *
NVCD * site], -kappa, &v2v[0],
156 int *Nsize,
int *do_comm)
162 int Nstv = Nxv * Nyv * Nz * Nt;
163 int Nst = Nstv *
VLEN;
165 svbool_t pg1_xp, pg2_xp, pg1_xm, pg2_xm;
166 svbool_t pg1_yp, pg2_yp, pg1_ym, pg2_ym;
167 set_predicate_xp(pg1_xp, pg2_xp);
168 set_predicate_xm(pg1_xm, pg2_xm);
169 set_predicate_yp(pg1_yp, pg2_yp);
170 set_predicate_ym(pg1_ym, pg2_ym);
173 int Nxyz = Nxv * Nyv * Nz;
175 int ith, nth, is, ns;
176 set_threadtask(ith, nth, is, ns, Nstv);
178 for (
int site = is; site < ns; ++site) {
180 int iyzt = site / Nxv;
182 int izt = site / Nxy;
189 clear_vec(v2v,
NVCD);
194 int nei =
ix + 1 + Nxv *
iyzt;
197 }
else if (do_comm[0] == 0) {
199 int nei = 0 + Nxv *
iyzt;
206 int nei =
ix - 1 + Nxv *
iyzt;
210 }
else if (do_comm[0] == 0) {
212 int nei = Nxv - 1 + Nxv *
iyzt;
219 int iy2 = (
iy + 1) % Nyv;
220 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
225 }
else if (do_comm[1] == 0) {
226 int iy2 = (
iy + 1) % Nyv;
227 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
235 int iy2 = (
iy - 1 + Nyv) % Nyv;
236 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
241 }
else if (do_comm[1] == 0) {
242 int iy2 = (
iy - 1 + Nyv) % Nyv;
243 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
250 if ((
iz < Nz - 1) || (do_comm[2] == 0)) {
251 int iz2 = (
iz + 1) % Nz;
252 int nei =
ixy + Nxy * (iz2 + Nz *
it);
257 if ((
iz > 0) || (do_comm[2] == 0)) {
258 int iz2 = (
iz - 1 + Nz) % Nz;
259 int nei =
ixy + Nxy * (iz2 + Nz *
it);
264 if ((
it < Nt - 1) || (do_comm[3] == 0)) {
265 int it2 = (
it + 1) % Nt;
266 int nei =
ixyz + Nxyz * it2;
272 if ((
it > 0) || (do_comm[3] == 0)) {
273 int it2 = (
it - 1 + Nt) % Nt;
274 int nei =
ixyz + Nxyz * it2;
280 mult_clover_csw_aypx_chrot(
281 &v2[
VLEN *
NVCD * site], -kappa, &v2v[0].v[0],
296 int Nstv = Nxv * Nyv * Nz * Nt;
297 int Nst = Nstv *
VLEN;
299 int ith, nth, is, ns;
300 set_threadtask(ith, nth, is, ns, Nstv);
302 for (
int site = is; site < ns; ++site) {
303 mult_cswinv_chrot(&v2[
VLEN *
NVCD * site],