Bridge++  Ver.2.1.3
mult_Domainwall_eo_xyz_openacc-inc.h
Go to the documentation of this file.
1 
8 // this is a part of Wilson fermion implementation.
9 // [13 Jun 2019 H.Matsufuru]
10 {
11  // mult_xp
12  int idir = 0;
13 
14  int iyzt = iy + Ny * (iz + Nz * it);
15  int isn = ((ix + keo) % Nx) + Nx * iyzt;
16  int isg = site + Nst_pad * (ieo + 2*idir);
17  int bc2;
18  if(jgm5 == 0){
19  vt1_0 = v1[IDX2_SP_5D_R(0,0,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,3,is,Ns,isn)];
20  vt1_1 = v1[IDX2_SP_5D_I(0,0,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,3,is,Ns,isn)];
21  vt1_2 = v1[IDX2_SP_5D_R(1,0,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,3,is,Ns,isn)];
22  vt1_3 = v1[IDX2_SP_5D_I(1,0,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,3,is,Ns,isn)];
23  vt1_4 = v1[IDX2_SP_5D_R(2,0,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,3,is,Ns,isn)];
24  vt1_5 = v1[IDX2_SP_5D_I(2,0,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,3,is,Ns,isn)];
25 
26  vt2_0 = v1[IDX2_SP_5D_R(0,1,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,2,is,Ns,isn)];
27  vt2_1 = v1[IDX2_SP_5D_I(0,1,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,2,is,Ns,isn)];
28  vt2_2 = v1[IDX2_SP_5D_R(1,1,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,2,is,Ns,isn)];
29  vt2_3 = v1[IDX2_SP_5D_I(1,1,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,2,is,Ns,isn)];
30  vt2_4 = v1[IDX2_SP_5D_R(2,1,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,2,is,Ns,isn)];
31  vt2_5 = v1[IDX2_SP_5D_I(2,1,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,2,is,Ns,isn)];
32  }else{
33  vt1_0 = v1[IDX2_SP_5D_R(0,2,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,1,is,Ns,isn)];
34  vt1_1 = v1[IDX2_SP_5D_I(0,2,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,1,is,Ns,isn)];
35  vt1_2 = v1[IDX2_SP_5D_R(1,2,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,1,is,Ns,isn)];
36  vt1_3 = v1[IDX2_SP_5D_I(1,2,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,1,is,Ns,isn)];
37  vt1_4 = v1[IDX2_SP_5D_R(2,2,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,1,is,Ns,isn)];
38  vt1_5 = v1[IDX2_SP_5D_I(2,2,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,1,is,Ns,isn)];
39 
40  vt2_0 = v1[IDX2_SP_5D_R(0,3,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,0,is,Ns,isn)];
41  vt2_1 = v1[IDX2_SP_5D_I(0,3,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,0,is,Ns,isn)];
42  vt2_2 = v1[IDX2_SP_5D_R(1,3,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,0,is,Ns,isn)];
43  vt2_3 = v1[IDX2_SP_5D_I(1,3,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,0,is,Ns,isn)];
44  vt2_4 = v1[IDX2_SP_5D_R(2,3,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,0,is,Ns,isn)];
45  vt2_5 = v1[IDX2_SP_5D_I(2,3,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,0,is,Ns,isn)];
46  }
47  u_0 = u_up[IDX2_G_R(0,0,isg)];
48  u_1 = u_up[IDX2_G_I(0,0,isg)];
49  u_2 = u_up[IDX2_G_R(1,0,isg)];
50  u_3 = u_up[IDX2_G_I(1,0,isg)];
51  u_4 = u_up[IDX2_G_R(2,0,isg)];
52  u_5 = u_up[IDX2_G_I(2,0,isg)];
53 
62 
63  // ic = 0;
64  bc2 = 1.0;
65  if(ix == Nx-1 && keo == 1) bc2 = bc[0];
66 
67  v2_01 = bc2 * wt1r;
68  v2_11 = bc2 * wt1i;
69  v2_02 = bc2 * wt2r;
70  v2_12 = bc2 * wt2i;
71  v2_03 = bc2 * wt2i;
72  v2_13 = -bc2 * wt2r;
73  v2_04 = bc2 * wt1i;
74  v2_14 = -bc2 * wt1r;
75 
76  u_6 = u_up[IDX2_G_R(0,1,isg)];
77  u_7 = u_up[IDX2_G_I(0,1,isg)];
78  u_8 = u_up[IDX2_G_R(1,1,isg)];
79  u_9 = u_up[IDX2_G_I(1,1,isg)];
80  u10 = u_up[IDX2_G_R(2,1,isg)];
81  u11 = u_up[IDX2_G_I(2,1,isg)];
82 
83  wt1r = MULT_GXr(u_6, u_7, u_8, u_9, u10, u11,
85  wt1i = MULT_GXi(u_6, u_7, u_8, u_9, u10, u11,
87  wt2r = MULT_GXr(u_6, u_7, u_8, u_9, u10, u11,
89  wt2i = MULT_GXi(u_6, u_7, u_8, u_9, u10, u11,
91 
92  // ic = 1;
93  v2_21 = bc2 * wt1r;
94  v2_31 = bc2 * wt1i;
95  v2_22 = bc2 * wt2r;
96  v2_32 = bc2 * wt2i;
97  v2_23 = bc2 * wt2i;
98  v2_33 = -bc2 * wt2r;
99  v2_24 = bc2 * wt1i;
100  v2_34 = -bc2 * wt1r;
101 
102 #ifdef SU3_3RD_ROW_RECONST
103  u12 = EXT_IMG_R(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
104  u13 = EXT_IMG_I(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
105  u14 = EXT_IMG_R(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
106  u15 = EXT_IMG_I(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
107  u16 = EXT_IMG_R(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
108  u17 = EXT_IMG_I(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
109 #else
110  u12 = u_up[IDX2_G_R(0,2,isg)];
111  u13 = u_up[IDX2_G_I(0,2,isg)];
112  u14 = u_up[IDX2_G_R(1,2,isg)];
113  u15 = u_up[IDX2_G_I(1,2,isg)];
114  u16 = u_up[IDX2_G_R(2,2,isg)];
115  u17 = u_up[IDX2_G_I(2,2,isg)];
116 #endif
117 
118  wt1r = MULT_GXr(u12, u13, u14, u15, u16, u17,
120  wt1i = MULT_GXi(u12, u13, u14, u15, u16, u17,
122  wt2r = MULT_GXr(u12, u13, u14, u15, u16, u17,
124  wt2i = MULT_GXi(u12, u13, u14, u15, u16, u17,
126 
127  // ic = 2;
133  v2_53 = -bc2 * wt2r;
135  v2_54 = -bc2 * wt1r;
136 
137  // mult_xm
138  int ix2 = (ix - 1 + keo + Nx) % Nx;
139  isn = ix2 + Nx * iyzt;
140  isg = isn + Nst_pad * (1-ieo + 2*idir);
141  if(jgm5 == 0){
142  vt1_0 = v1[IDX2_SP_5D_R(0,0,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,3,is,Ns,isn)];
143  vt1_1 = v1[IDX2_SP_5D_I(0,0,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,3,is,Ns,isn)];
144  vt1_2 = v1[IDX2_SP_5D_R(1,0,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,3,is,Ns,isn)];
145  vt1_3 = v1[IDX2_SP_5D_I(1,0,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,3,is,Ns,isn)];
146  vt1_4 = v1[IDX2_SP_5D_R(2,0,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,3,is,Ns,isn)];
147  vt1_5 = v1[IDX2_SP_5D_I(2,0,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,3,is,Ns,isn)];
148 
149  vt2_0 = v1[IDX2_SP_5D_R(0,1,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,2,is,Ns,isn)];
150  vt2_1 = v1[IDX2_SP_5D_I(0,1,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,2,is,Ns,isn)];
151  vt2_2 = v1[IDX2_SP_5D_R(1,1,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,2,is,Ns,isn)];
152  vt2_3 = v1[IDX2_SP_5D_I(1,1,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,2,is,Ns,isn)];
153  vt2_4 = v1[IDX2_SP_5D_R(2,1,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,2,is,Ns,isn)];
154  vt2_5 = v1[IDX2_SP_5D_I(2,1,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,2,is,Ns,isn)];
155  }else{
156  vt1_0 = v1[IDX2_SP_5D_R(0,2,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,1,is,Ns,isn)];
157  vt1_1 = v1[IDX2_SP_5D_I(0,2,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,1,is,Ns,isn)];
158  vt1_2 = v1[IDX2_SP_5D_R(1,2,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,1,is,Ns,isn)];
159  vt1_3 = v1[IDX2_SP_5D_I(1,2,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,1,is,Ns,isn)];
160  vt1_4 = v1[IDX2_SP_5D_R(2,2,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,1,is,Ns,isn)];
161  vt1_5 = v1[IDX2_SP_5D_I(2,2,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,1,is,Ns,isn)];
162 
163  vt2_0 = v1[IDX2_SP_5D_R(0,3,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,0,is,Ns,isn)];
164  vt2_1 = v1[IDX2_SP_5D_I(0,3,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,0,is,Ns,isn)];
165  vt2_2 = v1[IDX2_SP_5D_R(1,3,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,0,is,Ns,isn)];
166  vt2_3 = v1[IDX2_SP_5D_I(1,3,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,0,is,Ns,isn)];
167  vt2_4 = v1[IDX2_SP_5D_R(2,3,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,0,is,Ns,isn)];
168  vt2_5 = v1[IDX2_SP_5D_I(2,3,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,0,is,Ns,isn)];
169  }
170  u_0 = u_dn[IDX2_G_R(0,0,isg)];
171  u_1 = u_dn[IDX2_G_I(0,0,isg)];
172  u_2 = u_dn[IDX2_G_R(0,1,isg)];
173  u_3 = u_dn[IDX2_G_I(0,1,isg)];
174  u_4 = u_dn[IDX2_G_R(0,2,isg)];
175  u_5 = u_dn[IDX2_G_I(0,2,isg)];
176 
177  wt1r = MULT_GDXr(u_0, u_1, u_2, u_3, u_4, u_5,
179  wt1i = MULT_GDXi(u_0, u_1, u_2, u_3, u_4, u_5,
181  wt2r = MULT_GDXr(u_0, u_1, u_2, u_3, u_4, u_5,
183  wt2i = MULT_GDXi(u_0, u_1, u_2, u_3, u_4, u_5,
185 
186  // ic = 0;
187  bc2 = 1.0;
188  if(ix == 0 && keo == 0) bc2 = bc[0];
189 
190  v2_01 += bc2 * wt1r;
191  v2_11 += bc2 * wt1i;
192  v2_02 += bc2 * wt2r;
193  v2_12 += bc2 * wt2i;
194  v2_03 += -bc2 * wt2i;
195  v2_13 += +bc2 * wt2r;
196  v2_04 += -bc2 * wt1i;
197  v2_14 += +bc2 * wt1r;
198 
199  u_6 = u_dn[IDX2_G_R(1,0,isg)];
200  u_7 = u_dn[IDX2_G_I(1,0,isg)];
201  u_8 = u_dn[IDX2_G_R(1,1,isg)];
202  u_9 = u_dn[IDX2_G_I(1,1,isg)];
203  u10 = u_dn[IDX2_G_R(1,2,isg)];
204  u11 = u_dn[IDX2_G_I(1,2,isg)];
205 
206  wt1r = MULT_GDXr(u_6, u_7, u_8, u_9, u10, u11,
208  wt1i = MULT_GDXi(u_6, u_7, u_8, u_9, u10, u11,
210  wt2r = MULT_GDXr(u_6, u_7, u_8, u_9, u10, u11,
212  wt2i = MULT_GDXi(u_6, u_7, u_8, u_9, u10, u11,
214 
215  // ic = 1;
216  v2_21 += bc2 * wt1r;
217  v2_31 += bc2 * wt1i;
218  v2_22 += bc2 * wt2r;
219  v2_32 += bc2 * wt2i;
220  v2_23 += -bc2 * wt2i;
221  v2_33 += +bc2 * wt2r;
222  v2_24 += -bc2 * wt1i;
223  v2_34 += +bc2 * wt1r;
224 
225 #ifdef SU3_3RD_ROW_RECONST
226  u12 = EXT_IMG_R(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
227  u13 = EXT_IMG_I(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
228  u14 = EXT_IMG_R(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
229  u15 = EXT_IMG_I(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
230  u16 = EXT_IMG_R(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
231  u17 = EXT_IMG_I(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
232 #else
233  u12 = u_dn[IDX2_G_R(2,0,isg)];
234  u13 = u_dn[IDX2_G_I(2,0,isg)];
235  u14 = u_dn[IDX2_G_R(2,1,isg)];
236  u15 = u_dn[IDX2_G_I(2,1,isg)];
237  u16 = u_dn[IDX2_G_R(2,2,isg)];
238  u17 = u_dn[IDX2_G_I(2,2,isg)];
239 #endif
240 
241  wt1r = MULT_GDXr(u12, u13, u14, u15, u16, u17,
243  wt1i = MULT_GDXi(u12, u13, u14, u15, u16, u17,
245  wt2r = MULT_GDXr(u12, u13, u14, u15, u16, u17,
247  wt2i = MULT_GDXi(u12, u13, u14, u15, u16, u17,
249 
250  // ic = 2;
251  v2_41 += bc2 * wt1r;
252  v2_51 += bc2 * wt1i;
253  v2_42 += bc2 * wt2r;
254  v2_52 += bc2 * wt2i;
255  v2_43 += -bc2 * wt2i;
256  v2_53 += +bc2 * wt2r;
257  v2_44 += -bc2 * wt1i;
258  v2_54 += +bc2 * wt1r;
259 
260 
261  // mult_yp
262  int izt = site/(Nx*Ny);
263  int nn = (iy + 1) % Ny;
264  idir = 1;
265 
266  isn = ix + nn * Nx + izt * Nxy;
267  isg = ix + iy * Nx + izt * Nxy + Nst_pad * (ieo + 2*idir);
268  if(jgm5 == 0){
269  vt1_0 = v1[IDX2_SP_5D_R(0,0,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,3,is,Ns,isn)];
270  vt1_1 = v1[IDX2_SP_5D_I(0,0,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,3,is,Ns,isn)];
271  vt1_2 = v1[IDX2_SP_5D_R(1,0,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,3,is,Ns,isn)];
272  vt1_3 = v1[IDX2_SP_5D_I(1,0,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,3,is,Ns,isn)];
273  vt1_4 = v1[IDX2_SP_5D_R(2,0,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,3,is,Ns,isn)];
274  vt1_5 = v1[IDX2_SP_5D_I(2,0,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,3,is,Ns,isn)];
275 
276  vt2_0 = v1[IDX2_SP_5D_R(0,1,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,2,is,Ns,isn)];
277  vt2_1 = v1[IDX2_SP_5D_I(0,1,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,2,is,Ns,isn)];
278  vt2_2 = v1[IDX2_SP_5D_R(1,1,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,2,is,Ns,isn)];
279  vt2_3 = v1[IDX2_SP_5D_I(1,1,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,2,is,Ns,isn)];
280  vt2_4 = v1[IDX2_SP_5D_R(2,1,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,2,is,Ns,isn)];
281  vt2_5 = v1[IDX2_SP_5D_I(2,1,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,2,is,Ns,isn)];
282  }else{
283  vt1_0 = v1[IDX2_SP_5D_R(0,2,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,1,is,Ns,isn)];
284  vt1_1 = v1[IDX2_SP_5D_I(0,2,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,1,is,Ns,isn)];
285  vt1_2 = v1[IDX2_SP_5D_R(1,2,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,1,is,Ns,isn)];
286  vt1_3 = v1[IDX2_SP_5D_I(1,2,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,1,is,Ns,isn)];
287  vt1_4 = v1[IDX2_SP_5D_R(2,2,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,1,is,Ns,isn)];
288  vt1_5 = v1[IDX2_SP_5D_I(2,2,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,1,is,Ns,isn)];
289 
290  vt2_0 = v1[IDX2_SP_5D_R(0,3,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,0,is,Ns,isn)];
291  vt2_1 = v1[IDX2_SP_5D_I(0,3,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,0,is,Ns,isn)];
292  vt2_2 = v1[IDX2_SP_5D_R(1,3,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,0,is,Ns,isn)];
293  vt2_3 = v1[IDX2_SP_5D_I(1,3,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,0,is,Ns,isn)];
294  vt2_4 = v1[IDX2_SP_5D_R(2,3,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,0,is,Ns,isn)];
295  vt2_5 = v1[IDX2_SP_5D_I(2,3,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,0,is,Ns,isn)];
296  }
297  u_0 = u_up[IDX2_G_R(0,0,isg)];
298  u_1 = u_up[IDX2_G_I(0,0,isg)];
299  u_2 = u_up[IDX2_G_R(1,0,isg)];
300  u_3 = u_up[IDX2_G_I(1,0,isg)];
301  u_4 = u_up[IDX2_G_R(2,0,isg)];
302  u_5 = u_up[IDX2_G_I(2,0,isg)];
303 
304  wt1r = MULT_GXr(u_0, u_1, u_2, u_3, u_4, u_5,
306  wt1i = MULT_GXi(u_0, u_1, u_2, u_3, u_4, u_5,
308  wt2r = MULT_GXr(u_0, u_1, u_2, u_3, u_4, u_5,
310  wt2i = MULT_GXi(u_0, u_1, u_2, u_3, u_4, u_5,
312 
313  // ic = 0;
314  bc2 = 1.0;
315  if(iy == Ny-1) bc2 = bc[1];
316  v2_01 += bc2 * wt1r;
317  v2_11 += bc2 * wt1i;
318  v2_02 += bc2 * wt2r;
319  v2_12 += bc2 * wt2i;
320  v2_03 += -bc2 * wt2r;
321  v2_13 += -bc2 * wt2i;
322  v2_04 += bc2 * wt1r;
323  v2_14 += bc2 * wt1i;
324 
325  u_6 = u_up[IDX2_G_R(0,1,isg)];
326  u_7 = u_up[IDX2_G_I(0,1,isg)];
327  u_8 = u_up[IDX2_G_R(1,1,isg)];
328  u_9 = u_up[IDX2_G_I(1,1,isg)];
329  u10 = u_up[IDX2_G_R(2,1,isg)];
330  u11 = u_up[IDX2_G_I(2,1,isg)];
331 
332  wt1r = MULT_GXr(u_6, u_7, u_8, u_9, u10, u11,
334  wt1i = MULT_GXi(u_6, u_7, u_8, u_9, u10, u11,
336  wt2r = MULT_GXr(u_6, u_7, u_8, u_9, u10, u11,
338  wt2i = MULT_GXi(u_6, u_7, u_8, u_9, u10, u11,
340 
341  // ic = 1;
342  v2_21 += bc2 * wt1r;
343  v2_31 += bc2 * wt1i;
344  v2_22 += bc2 * wt2r;
345  v2_32 += bc2 * wt2i;
346  v2_23 += -bc2 * wt2r;
347  v2_33 += -bc2 * wt2i;
348  v2_24 += bc2 * wt1r;
349  v2_34 += bc2 * wt1i;
350 
351 #ifdef SU3_3RD_ROW_RECONST
352  u12 = EXT_IMG_R(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
353  u13 = EXT_IMG_I(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
354  u14 = EXT_IMG_R(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
355  u15 = EXT_IMG_I(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
356  u16 = EXT_IMG_R(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
357  u17 = EXT_IMG_I(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
358 #else
359  u12 = u_up[IDX2_G_R(0,2,isg)];
360  u13 = u_up[IDX2_G_I(0,2,isg)];
361  u14 = u_up[IDX2_G_R(1,2,isg)];
362  u15 = u_up[IDX2_G_I(1,2,isg)];
363  u16 = u_up[IDX2_G_R(2,2,isg)];
364  u17 = u_up[IDX2_G_I(2,2,isg)];
365 #endif
366 
367  wt1r = MULT_GXr(u12, u13, u14, u15, u16, u17,
369  wt1i = MULT_GXi(u12, u13, u14, u15, u16, u17,
371  wt2r = MULT_GXr(u12, u13, u14, u15, u16, u17,
373  wt2i = MULT_GXi(u12, u13, u14, u15, u16, u17,
375 
376  // ic = 2;
377  v2_41 += bc2 * wt1r;
378  v2_51 += bc2 * wt1i;
379  v2_42 += bc2 * wt2r;
380  v2_52 += bc2 * wt2i;
381  v2_43 += -bc2 * wt2r;
382  v2_53 += -bc2 * wt2i;
383  v2_44 += bc2 * wt1r;
384  v2_54 += bc2 * wt1i;
385 
386 
387  //mult_ym
388  nn = (iy + Ny - 1) % Ny;
389 
390  isn = ix + nn * Nx + izt * Nxy;
391  isg = ix + nn * Nx + izt * Nxy + Nst_pad * (1-ieo + 2*idir);
392  if(jgm5 == 0){
393  vt1_0 = v1[IDX2_SP_5D_R(0,0,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,3,is,Ns,isn)];
394  vt1_1 = v1[IDX2_SP_5D_I(0,0,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,3,is,Ns,isn)];
395  vt1_2 = v1[IDX2_SP_5D_R(1,0,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,3,is,Ns,isn)];
396  vt1_3 = v1[IDX2_SP_5D_I(1,0,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,3,is,Ns,isn)];
397  vt1_4 = v1[IDX2_SP_5D_R(2,0,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,3,is,Ns,isn)];
398  vt1_5 = v1[IDX2_SP_5D_I(2,0,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,3,is,Ns,isn)];
399 
400  vt2_0 = v1[IDX2_SP_5D_R(0,1,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,2,is,Ns,isn)];
401  vt2_1 = v1[IDX2_SP_5D_I(0,1,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,2,is,Ns,isn)];
402  vt2_2 = v1[IDX2_SP_5D_R(1,1,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,2,is,Ns,isn)];
403  vt2_3 = v1[IDX2_SP_5D_I(1,1,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,2,is,Ns,isn)];
404  vt2_4 = v1[IDX2_SP_5D_R(2,1,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,2,is,Ns,isn)];
405  vt2_5 = v1[IDX2_SP_5D_I(2,1,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,2,is,Ns,isn)];
406  }else{
407  vt1_0 = v1[IDX2_SP_5D_R(0,2,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,1,is,Ns,isn)];
408  vt1_1 = v1[IDX2_SP_5D_I(0,2,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,1,is,Ns,isn)];
409  vt1_2 = v1[IDX2_SP_5D_R(1,2,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,1,is,Ns,isn)];
410  vt1_3 = v1[IDX2_SP_5D_I(1,2,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,1,is,Ns,isn)];
411  vt1_4 = v1[IDX2_SP_5D_R(2,2,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,1,is,Ns,isn)];
412  vt1_5 = v1[IDX2_SP_5D_I(2,2,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,1,is,Ns,isn)];
413 
414  vt2_0 = v1[IDX2_SP_5D_R(0,3,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,0,is,Ns,isn)];
415  vt2_1 = v1[IDX2_SP_5D_I(0,3,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,0,is,Ns,isn)];
416  vt2_2 = v1[IDX2_SP_5D_R(1,3,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,0,is,Ns,isn)];
417  vt2_3 = v1[IDX2_SP_5D_I(1,3,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,0,is,Ns,isn)];
418  vt2_4 = v1[IDX2_SP_5D_R(2,3,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,0,is,Ns,isn)];
419  vt2_5 = v1[IDX2_SP_5D_I(2,3,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,0,is,Ns,isn)];
420  }
421  u_0 = u_dn[IDX2_G_R(0,0,isg)];
422  u_1 = u_dn[IDX2_G_I(0,0,isg)];
423  u_2 = u_dn[IDX2_G_R(0,1,isg)];
424  u_3 = u_dn[IDX2_G_I(0,1,isg)];
425  u_4 = u_dn[IDX2_G_R(0,2,isg)];
426  u_5 = u_dn[IDX2_G_I(0,2,isg)];
427 
428  wt1r = MULT_GDXr(u_0, u_1, u_2, u_3, u_4, u_5,
430  wt1i = MULT_GDXi(u_0, u_1, u_2, u_3, u_4, u_5,
432  wt2r = MULT_GDXr(u_0, u_1, u_2, u_3, u_4, u_5,
434  wt2i = MULT_GDXi(u_0, u_1, u_2, u_3, u_4, u_5,
436 
437  // ic = 0;
438  bc2 = 1.0;
439  if(iy == 0) bc2 = bc[1];
440  v2_01 += bc2 * wt1r;
441  v2_11 += bc2 * wt1i;
442  v2_02 += bc2 * wt2r;
443  v2_12 += bc2 * wt2i;
444  v2_03 += bc2 * wt2r;
445  v2_13 += bc2 * wt2i;
446  v2_04 += -bc2 * wt1r;
447  v2_14 += -bc2 * wt1i;
448 
449  u_6 = u_dn[IDX2_G_R(1,0,isg)];
450  u_7 = u_dn[IDX2_G_I(1,0,isg)];
451  u_8 = u_dn[IDX2_G_R(1,1,isg)];
452  u_9 = u_dn[IDX2_G_I(1,1,isg)];
453  u10 = u_dn[IDX2_G_R(1,2,isg)];
454  u11 = u_dn[IDX2_G_I(1,2,isg)];
455 
456  wt1r = MULT_GDXr(u_6, u_7, u_8, u_9, u10, u11,
458  wt1i = MULT_GDXi(u_6, u_7, u_8, u_9, u10, u11,
460  wt2r = MULT_GDXr(u_6, u_7, u_8, u_9, u10, u11,
462  wt2i = MULT_GDXi(u_6, u_7, u_8, u_9, u10, u11,
464 
465  // ic = 1;
466  v2_21 += bc2 * wt1r;
467  v2_31 += bc2 * wt1i;
468  v2_22 += bc2 * wt2r;
469  v2_32 += bc2 * wt2i;
470  v2_23 += bc2 * wt2r;
471  v2_33 += bc2 * wt2i;
472  v2_24 += -bc2 * wt1r;
473  v2_34 += -bc2 * wt1i;
474 
475 #ifdef SU3_3RD_ROW_RECONST
476  u12 = EXT_IMG_R(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
477  u13 = EXT_IMG_I(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
478  u14 = EXT_IMG_R(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
479  u15 = EXT_IMG_I(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
480  u16 = EXT_IMG_R(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
481  u17 = EXT_IMG_I(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
482 #else
483  u12 = u_dn[IDX2_G_R(2,0,isg)];
484  u13 = u_dn[IDX2_G_I(2,0,isg)];
485  u14 = u_dn[IDX2_G_R(2,1,isg)];
486  u15 = u_dn[IDX2_G_I(2,1,isg)];
487  u16 = u_dn[IDX2_G_R(2,2,isg)];
488  u17 = u_dn[IDX2_G_I(2,2,isg)];
489 #endif
490 
491  wt1r = MULT_GDXr(u12, u13, u14, u15, u16, u17,
493  wt1i = MULT_GDXi(u12, u13, u14, u15, u16, u17,
495  wt2r = MULT_GDXr(u12, u13, u14, u15, u16, u17,
497  wt2i = MULT_GDXi(u12, u13, u14, u15, u16, u17,
499 
500  // ic = 2;
501  v2_41 += bc2 * wt1r;
502  v2_51 += bc2 * wt1i;
503  v2_42 += bc2 * wt2r;
504  v2_52 += bc2 * wt2i;
505  v2_43 += bc2 * wt2r;
506  v2_53 += bc2 * wt2i;
507  v2_44 += -bc2 * wt1r;
508  v2_54 += -bc2 * wt1i;
509 
510 
511  //mult_zp
512  idir = 2;
513  int ixy = site % Nxy;
514 
515  nn = (iz + 1) % Nz;
516 
517  isn = ixy + nn * Nxy + it * Nxyz;
518  isg = ixy + iz * Nxy + it * Nxyz + Nst_pad * (ieo + 2*idir);
519  if(jgm5 == 0){
520  vt1_0 = v1[IDX2_SP_5D_R(0,0,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,2,is,Ns,isn)];
521  vt1_1 = v1[IDX2_SP_5D_I(0,0,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,2,is,Ns,isn)];
522  vt1_2 = v1[IDX2_SP_5D_R(1,0,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,2,is,Ns,isn)];
523  vt1_3 = v1[IDX2_SP_5D_I(1,0,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,2,is,Ns,isn)];
524  vt1_4 = v1[IDX2_SP_5D_R(2,0,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,2,is,Ns,isn)];
525  vt1_5 = v1[IDX2_SP_5D_I(2,0,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,2,is,Ns,isn)];
526 
527  vt2_0 = v1[IDX2_SP_5D_R(0,1,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,3,is,Ns,isn)];
528  vt2_1 = v1[IDX2_SP_5D_I(0,1,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,3,is,Ns,isn)];
529  vt2_2 = v1[IDX2_SP_5D_R(1,1,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,3,is,Ns,isn)];
530  vt2_3 = v1[IDX2_SP_5D_I(1,1,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,3,is,Ns,isn)];
531  vt2_4 = v1[IDX2_SP_5D_R(2,1,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,3,is,Ns,isn)];
532  vt2_5 = v1[IDX2_SP_5D_I(2,1,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,3,is,Ns,isn)];
533  }else{
534  vt1_0 = v1[IDX2_SP_5D_R(0,2,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,0,is,Ns,isn)];
535  vt1_1 = v1[IDX2_SP_5D_I(0,2,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,0,is,Ns,isn)];
536  vt1_2 = v1[IDX2_SP_5D_R(1,2,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,0,is,Ns,isn)];
537  vt1_3 = v1[IDX2_SP_5D_I(1,2,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,0,is,Ns,isn)];
538  vt1_4 = v1[IDX2_SP_5D_R(2,2,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,0,is,Ns,isn)];
539  vt1_5 = v1[IDX2_SP_5D_I(2,2,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,0,is,Ns,isn)];
540 
541  vt2_0 = v1[IDX2_SP_5D_R(0,3,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,1,is,Ns,isn)];
542  vt2_1 = v1[IDX2_SP_5D_I(0,3,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,1,is,Ns,isn)];
543  vt2_2 = v1[IDX2_SP_5D_R(1,3,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,1,is,Ns,isn)];
544  vt2_3 = v1[IDX2_SP_5D_I(1,3,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,1,is,Ns,isn)];
545  vt2_4 = v1[IDX2_SP_5D_R(2,3,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,1,is,Ns,isn)];
546  vt2_5 = v1[IDX2_SP_5D_I(2,3,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,1,is,Ns,isn)];
547  }
548  u_0 = u_up[IDX2_G_R(0,0,isg)];
549  u_1 = u_up[IDX2_G_I(0,0,isg)];
550  u_2 = u_up[IDX2_G_R(1,0,isg)];
551  u_3 = u_up[IDX2_G_I(1,0,isg)];
552  u_4 = u_up[IDX2_G_R(2,0,isg)];
553  u_5 = u_up[IDX2_G_I(2,0,isg)];
554 
555  wt1r = MULT_GXr(u_0, u_1, u_2, u_3, u_4, u_5,
557  wt1i = MULT_GXi(u_0, u_1, u_2, u_3, u_4, u_5,
559  wt2r = MULT_GXr(u_0, u_1, u_2, u_3, u_4, u_5,
561  wt2i = MULT_GXi(u_0, u_1, u_2, u_3, u_4, u_5,
563 
564  // ic = 0;
565  bc2 = 1.0;
566  if(iz == Nz-1) bc2 = bc[2];
567  v2_01 += bc2 * wt1r;
568  v2_11 += bc2 * wt1i;
569  v2_02 += bc2 * wt2r;
570  v2_12 += bc2 * wt2i;
571  v2_03 += bc2 * wt1i;
572  v2_13 += -bc2 * wt1r;
573  v2_04 += -bc2 * wt2i;
574  v2_14 += bc2 * wt2r;
575 
576  u_6 = u_up[IDX2_G_R(0,1,isg)];
577  u_7 = u_up[IDX2_G_I(0,1,isg)];
578  u_8 = u_up[IDX2_G_R(1,1,isg)];
579  u_9 = u_up[IDX2_G_I(1,1,isg)];
580  u10 = u_up[IDX2_G_R(2,1,isg)];
581  u11 = u_up[IDX2_G_I(2,1,isg)];
582 
583  wt1r = MULT_GXr(u_6, u_7, u_8, u_9, u10, u11,
585  wt1i = MULT_GXi(u_6, u_7, u_8, u_9, u10, u11,
587  wt2r = MULT_GXr(u_6, u_7, u_8, u_9, u10, u11,
589  wt2i = MULT_GXi(u_6, u_7, u_8, u_9, u10, u11,
591 
592  // ic = 1;
593  v2_21 += bc2 * wt1r;
594  v2_31 += bc2 * wt1i;
595  v2_22 += bc2 * wt2r;
596  v2_32 += bc2 * wt2i;
597  v2_23 += bc2 * wt1i;
598  v2_33 += -bc2 * wt1r;
599  v2_24 += -bc2 * wt2i;
600  v2_34 += bc2 * wt2r;
601 
602 #ifdef SU3_3RD_ROW_RECONST
603  u12 = EXT_IMG_R(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
604  u13 = EXT_IMG_I(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
605  u14 = EXT_IMG_R(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
606  u15 = EXT_IMG_I(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
607  u16 = EXT_IMG_R(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
608  u17 = EXT_IMG_I(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
609 #else
610  u12 = u_up[IDX2_G_R(0,2,isg)];
611  u13 = u_up[IDX2_G_I(0,2,isg)];
612  u14 = u_up[IDX2_G_R(1,2,isg)];
613  u15 = u_up[IDX2_G_I(1,2,isg)];
614  u16 = u_up[IDX2_G_R(2,2,isg)];
615  u17 = u_up[IDX2_G_I(2,2,isg)];
616 #endif
617 
618  wt1r = MULT_GXr(u12, u13, u14, u15, u16, u17,
620  wt1i = MULT_GXi(u12, u13, u14, u15, u16, u17,
622  wt2r = MULT_GXr(u12, u13, u14, u15, u16, u17,
624  wt2i = MULT_GXi(u12, u13, u14, u15, u16, u17,
626 
627  // ic = 2;
628  v2_41 += bc2 * wt1r;
629  v2_51 += bc2 * wt1i;
630  v2_42 += bc2 * wt2r;
631  v2_52 += bc2 * wt2i;
632  v2_43 += bc2 * wt1i;
633  v2_53 += -bc2 * wt1r;
634  v2_44 += -bc2 * wt2i;
635  v2_54 += bc2 * wt2r;
636 
637 
638  //mult_zm
639  nn = (iz + Nz - 1) % Nz;
640 
641  isn = ixy + nn * Nxy + it * Nxyz;
642  isg = ixy + nn * Nxy + it * Nxyz + Nst_pad * (1-ieo + 2*idir);
643  if(jgm5 == 0){
644  vt1_0 = v1[IDX2_SP_5D_R(0,0,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,2,is,Ns,isn)];
645  vt1_1 = v1[IDX2_SP_5D_I(0,0,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,2,is,Ns,isn)];
646  vt1_2 = v1[IDX2_SP_5D_R(1,0,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,2,is,Ns,isn)];
647  vt1_3 = v1[IDX2_SP_5D_I(1,0,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,2,is,Ns,isn)];
648  vt1_4 = v1[IDX2_SP_5D_R(2,0,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,2,is,Ns,isn)];
649  vt1_5 = v1[IDX2_SP_5D_I(2,0,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,2,is,Ns,isn)];
650 
651  vt2_0 = v1[IDX2_SP_5D_R(0,1,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,3,is,Ns,isn)];
652  vt2_1 = v1[IDX2_SP_5D_I(0,1,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,3,is,Ns,isn)];
653  vt2_2 = v1[IDX2_SP_5D_R(1,1,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,3,is,Ns,isn)];
654  vt2_3 = v1[IDX2_SP_5D_I(1,1,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,3,is,Ns,isn)];
655  vt2_4 = v1[IDX2_SP_5D_R(2,1,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,3,is,Ns,isn)];
656  vt2_5 = v1[IDX2_SP_5D_I(2,1,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,3,is,Ns,isn)];
657  }else{
658  vt1_0 = v1[IDX2_SP_5D_R(0,2,is,Ns,isn)] + v1[IDX2_SP_5D_I(0,0,is,Ns,isn)];
659  vt1_1 = v1[IDX2_SP_5D_I(0,2,is,Ns,isn)] - v1[IDX2_SP_5D_R(0,0,is,Ns,isn)];
660  vt1_2 = v1[IDX2_SP_5D_R(1,2,is,Ns,isn)] + v1[IDX2_SP_5D_I(1,0,is,Ns,isn)];
661  vt1_3 = v1[IDX2_SP_5D_I(1,2,is,Ns,isn)] - v1[IDX2_SP_5D_R(1,0,is,Ns,isn)];
662  vt1_4 = v1[IDX2_SP_5D_R(2,2,is,Ns,isn)] + v1[IDX2_SP_5D_I(2,0,is,Ns,isn)];
663  vt1_5 = v1[IDX2_SP_5D_I(2,2,is,Ns,isn)] - v1[IDX2_SP_5D_R(2,0,is,Ns,isn)];
664 
665  vt2_0 = v1[IDX2_SP_5D_R(0,3,is,Ns,isn)] - v1[IDX2_SP_5D_I(0,1,is,Ns,isn)];
666  vt2_1 = v1[IDX2_SP_5D_I(0,3,is,Ns,isn)] + v1[IDX2_SP_5D_R(0,1,is,Ns,isn)];
667  vt2_2 = v1[IDX2_SP_5D_R(1,3,is,Ns,isn)] - v1[IDX2_SP_5D_I(1,1,is,Ns,isn)];
668  vt2_3 = v1[IDX2_SP_5D_I(1,3,is,Ns,isn)] + v1[IDX2_SP_5D_R(1,1,is,Ns,isn)];
669  vt2_4 = v1[IDX2_SP_5D_R(2,3,is,Ns,isn)] - v1[IDX2_SP_5D_I(2,1,is,Ns,isn)];
670  vt2_5 = v1[IDX2_SP_5D_I(2,3,is,Ns,isn)] + v1[IDX2_SP_5D_R(2,1,is,Ns,isn)];
671  }
672  u_0 = u_dn[IDX2_G_R(0,0,isg)];
673  u_1 = u_dn[IDX2_G_I(0,0,isg)];
674  u_2 = u_dn[IDX2_G_R(0,1,isg)];
675  u_3 = u_dn[IDX2_G_I(0,1,isg)];
676  u_4 = u_dn[IDX2_G_R(0,2,isg)];
677  u_5 = u_dn[IDX2_G_I(0,2,isg)];
678 
679  wt1r = MULT_GDXr(u_0, u_1, u_2, u_3, u_4, u_5,
681  wt1i = MULT_GDXi(u_0, u_1, u_2, u_3, u_4, u_5,
683  wt2r = MULT_GDXr(u_0, u_1, u_2, u_3, u_4, u_5,
685  wt2i = MULT_GDXi(u_0, u_1, u_2, u_3, u_4, u_5,
687 
688  // ic = 0;
689  bc2 = 1.0;
690  if(iz == 0) bc2 = bc[2];
691  v2_01 += bc2 * wt1r;
692  v2_11 += bc2 * wt1i;
693  v2_02 += bc2 * wt2r;
694  v2_12 += bc2 * wt2i;
695  v2_03 += -bc2 * wt1i;
696  v2_13 += bc2 * wt1r;
697  v2_04 += bc2 * wt2i;
698  v2_14 += -bc2 * wt2r;
699 
700  u_6 = u_dn[IDX2_G_R(1,0,isg)];
701  u_7 = u_dn[IDX2_G_I(1,0,isg)];
702  u_8 = u_dn[IDX2_G_R(1,1,isg)];
703  u_9 = u_dn[IDX2_G_I(1,1,isg)];
704  u10 = u_dn[IDX2_G_R(1,2,isg)];
705  u11 = u_dn[IDX2_G_I(1,2,isg)];
706 
707  wt1r = MULT_GDXr(u_6, u_7, u_8, u_9, u10, u11,
709  wt1i = MULT_GDXi(u_6, u_7, u_8, u_9, u10, u11,
711  wt2r = MULT_GDXr(u_6, u_7, u_8, u_9, u10, u11,
713  wt2i = MULT_GDXi(u_6, u_7, u_8, u_9, u10, u11,
715 
716  // ic = 1;
717  v2_21 += bc2 * wt1r;
718  v2_31 += bc2 * wt1i;
719  v2_22 += bc2 * wt2r;
720  v2_32 += bc2 * wt2i;
721  v2_23 += -bc2 * wt1i;
722  v2_33 += bc2 * wt1r;
723  v2_24 += bc2 * wt2i;
724  v2_34 += -bc2 * wt2r;
725 
726 #ifdef SU3_3RD_ROW_RECONST
727  u12 = EXT_IMG_R(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
728  u13 = EXT_IMG_I(u_2, u_3, u_4, u_5, u_8, u_9, u10, u11);
729  u14 = EXT_IMG_R(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
730  u15 = EXT_IMG_I(u_4, u_5, u_0, u_1, u10, u11, u_6, u_7);
731  u16 = EXT_IMG_R(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
732  u17 = EXT_IMG_I(u_0, u_1, u_2, u_3, u_6, u_7, u_8, u_9);
733 #else
734  u12 = u_dn[IDX2_G_R(2,0,isg)];
735  u13 = u_dn[IDX2_G_I(2,0,isg)];
736  u14 = u_dn[IDX2_G_R(2,1,isg)];
737  u15 = u_dn[IDX2_G_I(2,1,isg)];
738  u16 = u_dn[IDX2_G_R(2,2,isg)];
739  u17 = u_dn[IDX2_G_I(2,2,isg)];
740 #endif
741 
742  wt1r = MULT_GDXr(u12, u13, u14, u15, u16, u17,
744  wt1i = MULT_GDXi(u12, u13, u14, u15, u16, u17,
746  wt2r = MULT_GDXr(u12, u13, u14, u15, u16, u17,
748  wt2i = MULT_GDXi(u12, u13, u14, u15, u16, u17,
750 
751  // ic = 2;
752  v2_41 += bc2 * wt1r;
753  v2_51 += bc2 * wt1i;
754  v2_42 += bc2 * wt2r;
755  v2_52 += bc2 * wt2i;
756  v2_43 += -bc2 * wt1i;
757  v2_53 += bc2 * wt1r;
758  v2_44 += bc2 * wt2i;
759  v2_54 += -bc2 * wt2r;
760 
761 }
762 //============================================================END=====
u14
u14
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:112
v2_14
v2_14
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:74
wt1i
wt1i
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:56
v2_22
v2_22
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:95
v2_13
v2_13
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:72
u_8
u_8
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:78
EXT_IMG_R
#define EXT_IMG_R(v1r, v1i, v2r, v2i, w1r, w1i, w2r, w2i)
Definition: afield_Gauge_openacc-inc.h:19
iy
int iy
Definition: mult_Wilson_xyz_openacc-inc.h:239
ixy
int ixy
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:513
v2_33
v2_33
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:98
izt
int izt
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:262
v2_23
v2_23
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:97
v2_24
v2_24
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:99
nn
int nn
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:263
vt1_2
vt1_2
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:35
u_4
u_4
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:51
vt2_5
vt2_5
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:45
u_9
u_9
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:79
v2_01
v2_01
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:67
vt2_0
vt2_0
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:40
vt1_5
vt1_5
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:38
u_3
u_3
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:50
IDX2_SP_5D_I
#define IDX2_SP_5D_I(ic, id, is, Ns, ist)
Definition: define_index.h:62
v2_03
v2_03
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:71
bc2
int bc2
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:17
v2_44
v2_44
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:134
wt2r
wt2r
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:58
IDX2_G_I
#define IDX2_G_I(ic1, ic2, ist)
Definition: define_index.h:52
v2_04
v2_04
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:73
u10
u10
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:80
MULT_GXi
#define MULT_GXi(u0, u1, u2, u3, u4, u5, v0, v1, v2, v3, v4, v5)
Definition: afield_Gauge_openacc-inc.h:17
wt1r
wt1r
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:54
iyzt
int iyzt
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:14
ix
int ix
Definition: mult_Wilson_xyz_openacc-inc.h:16
vt1_0
vt1_0
Definition: mult_Wilson_eo_t_chiral_openacc-inc.h:18
MULT_GDXi
#define MULT_GDXi(u0, u1, u2, u3, u4, u5, v0, v1, v2, v3, v4, v5)
Definition: mult_Wilson_inline_openacc-inc.h:19
idir
idir
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:264
v2_42
v2_42
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:130
v2_43
v2_43
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:132
u12
u12
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:110
vt1_4
vt1_4
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:37
u_0
u_0
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:47
vt2_2
vt2_2
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:42
v2_21
v2_21
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:93
v2_12
v2_12
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:70
v2_32
v2_32
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:96
isg
int isg
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:16
u_6
u_6
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:76
v2_53
v2_53
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:133
v2_11
v2_11
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:68
it
int it
Definition: mult_Wilson_xyz_openacc-inc.h:461
v2_02
v2_02
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:69
ix2
int ix2
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:138
u15
u15
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:113
u_5
u_5
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:52
u_7
u_7
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:77
u11
u11
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:81
u16
u16
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:114
v2_31
v2_31
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:94
v2_51
v2_51
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:129
MULT_GXr
#define MULT_GXr(u0, u1, u2, u3, u4, u5, v0, v1, v2, v3, v4, v5)
Definition: afield_Gauge_openacc-inc.h:16
u_2
u_2
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:49
u17
u17
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:115
wt2i
wt2i
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:60
vt2_4
vt2_4
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:44
vt1_3
vt1_3
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:36
iz
int iz
Definition: mult_Wilson_xyz_openacc-inc.h:462
u13
u13
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:111
v2_54
v2_54
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:135
IDX2_G_R
#define IDX2_G_R(ic1, ic2, ist)
Definition: define_index.h:51
v2_52
v2_52
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:131
v2_41
v2_41
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:128
MULT_GDXr
#define MULT_GDXr(u0, u1, u2, u3, u4, u5, v0, v1, v2, v3, v4, v5)
Definition: mult_Wilson_inline_openacc-inc.h:18
u_1
u_1
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:48
EXT_IMG_I
#define EXT_IMG_I(v1r, v1i, v2r, v2i, w1r, w1i, w2r, w2i)
Definition: afield_Gauge_openacc-inc.h:20
IDX2_SP_5D_R
#define IDX2_SP_5D_R(ic, id, is, Ns, ist)
Definition: define_index.h:61
vt1_1
vt1_1
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:34
vt2_1
vt2_1
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:41
vt2_3
vt2_3
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:43
isn
int isn
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:15
v2_34
v2_34
Definition: mult_Domainwall_eo_xyz_openacc-inc.h:100