QUDA  v0.7.0
A library for QCD on GPUs
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
wilson_pack_clover_twisted_face_dagger_core.h
Go to the documentation of this file.
1 // input spinor
2 #ifdef SPINOR_DOUBLE
3 #define spinorFloat double
4 #define i00_re I0.x
5 #define i00_im I0.y
6 #define i01_re I1.x
7 #define i01_im I1.y
8 #define i02_re I2.x
9 #define i02_im I2.y
10 #define i10_re I3.x
11 #define i10_im I3.y
12 #define i11_re I4.x
13 #define i11_im I4.y
14 #define i12_re I5.x
15 #define i12_im I5.y
16 #define i20_re I6.x
17 #define i20_im I6.y
18 #define i21_re I7.x
19 #define i21_im I7.y
20 #define i22_re I8.x
21 #define i22_im I8.y
22 #define i30_re I9.x
23 #define i30_im I9.y
24 #define i31_re I10.x
25 #define i31_im I10.y
26 #define i32_re I11.x
27 #define i32_im I11.y
28 #else
29 #define spinorFloat float
30 #define i00_re I0.x
31 #define i00_im I0.y
32 #define i01_re I0.z
33 #define i01_im I0.w
34 #define i02_re I1.x
35 #define i02_im I1.y
36 #define i10_re I1.z
37 #define i10_im I1.w
38 #define i11_re I2.x
39 #define i11_im I2.y
40 #define i12_re I2.z
41 #define i12_im I2.w
42 #define i20_re I3.x
43 #define i20_im I3.y
44 #define i21_re I3.z
45 #define i21_im I3.w
46 #define i22_re I4.x
47 #define i22_im I4.y
48 #define i30_re I4.z
49 #define i30_im I4.w
50 #define i31_re I5.x
51 #define i31_im I5.y
52 #define i32_re I5.z
53 #define i32_im I5.w
54 #endif // SPINOR_DOUBLE
55 
56 // first chiral block of clover term
57 #ifdef CLOVER_DOUBLE
58 #define c00_00_re C0.x
59 #define c01_01_re C0.y
60 #define c02_02_re C1.x
61 #define c10_10_re C1.y
62 #define c11_11_re C2.x
63 #define c12_12_re C2.y
64 #define c01_00_re C3.x
65 #define c01_00_im C3.y
66 #define c02_00_re C4.x
67 #define c02_00_im C4.y
68 #define c10_00_re C5.x
69 #define c10_00_im C5.y
70 #define c11_00_re C6.x
71 #define c11_00_im C6.y
72 #define c12_00_re C7.x
73 #define c12_00_im C7.y
74 #define c02_01_re C8.x
75 #define c02_01_im C8.y
76 #define c10_01_re C9.x
77 #define c10_01_im C9.y
78 #define c11_01_re C10.x
79 #define c11_01_im C10.y
80 #define c12_01_re C11.x
81 #define c12_01_im C11.y
82 #define c10_02_re C12.x
83 #define c10_02_im C12.y
84 #define c11_02_re C13.x
85 #define c11_02_im C13.y
86 #define c12_02_re C14.x
87 #define c12_02_im C14.y
88 #define c11_10_re C15.x
89 #define c11_10_im C15.y
90 #define c12_10_re C16.x
91 #define c12_10_im C16.y
92 #define c12_11_re C17.x
93 #define c12_11_im C17.y
94 #else
95 #define c00_00_re C0.x
96 #define c01_01_re C0.y
97 #define c02_02_re C0.z
98 #define c10_10_re C0.w
99 #define c11_11_re C1.x
100 #define c12_12_re C1.y
101 #define c01_00_re C1.z
102 #define c01_00_im C1.w
103 #define c02_00_re C2.x
104 #define c02_00_im C2.y
105 #define c10_00_re C2.z
106 #define c10_00_im C2.w
107 #define c11_00_re C3.x
108 #define c11_00_im C3.y
109 #define c12_00_re C3.z
110 #define c12_00_im C3.w
111 #define c02_01_re C4.x
112 #define c02_01_im C4.y
113 #define c10_01_re C4.z
114 #define c10_01_im C4.w
115 #define c11_01_re C5.x
116 #define c11_01_im C5.y
117 #define c12_01_re C5.z
118 #define c12_01_im C5.w
119 #define c10_02_re C6.x
120 #define c10_02_im C6.y
121 #define c11_02_re C6.z
122 #define c11_02_im C6.w
123 #define c12_02_re C7.x
124 #define c12_02_im C7.y
125 #define c11_10_re C7.z
126 #define c11_10_im C7.w
127 #define c12_10_re C8.x
128 #define c12_10_im C8.y
129 #define c12_11_re C8.z
130 #define c12_11_im C8.w
131 #endif // CLOVER_DOUBLE
132 
133 #define c00_01_re (+c01_00_re)
134 #define c00_01_im (-c01_00_im)
135 #define c00_02_re (+c02_00_re)
136 #define c00_02_im (-c02_00_im)
137 #define c01_02_re (+c02_01_re)
138 #define c01_02_im (-c02_01_im)
139 #define c00_10_re (+c10_00_re)
140 #define c00_10_im (-c10_00_im)
141 #define c01_10_re (+c10_01_re)
142 #define c01_10_im (-c10_01_im)
143 #define c02_10_re (+c10_02_re)
144 #define c02_10_im (-c10_02_im)
145 #define c00_11_re (+c11_00_re)
146 #define c00_11_im (-c11_00_im)
147 #define c01_11_re (+c11_01_re)
148 #define c01_11_im (-c11_01_im)
149 #define c02_11_re (+c11_02_re)
150 #define c02_11_im (-c11_02_im)
151 #define c10_11_re (+c11_10_re)
152 #define c10_11_im (-c11_10_im)
153 #define c00_12_re (+c12_00_re)
154 #define c00_12_im (-c12_00_im)
155 #define c01_12_re (+c12_01_re)
156 #define c01_12_im (-c12_01_im)
157 #define c02_12_re (+c12_02_re)
158 #define c02_12_im (-c12_02_im)
159 #define c10_12_re (+c12_10_re)
160 #define c10_12_im (-c12_10_im)
161 #define c11_12_re (+c12_11_re)
162 #define c11_12_im (-c12_11_im)
163 
164 // second chiral block of clover term (reuses C0,...,C9)
165 #define c20_20_re c00_00_re
166 #define c21_20_re c01_00_re
167 #define c21_20_im c01_00_im
168 #define c22_20_re c02_00_re
169 #define c22_20_im c02_00_im
170 #define c30_20_re c10_00_re
171 #define c30_20_im c10_00_im
172 #define c31_20_re c11_00_re
173 #define c31_20_im c11_00_im
174 #define c32_20_re c12_00_re
175 #define c32_20_im c12_00_im
176 #define c20_21_re c00_01_re
177 #define c20_21_im c00_01_im
178 #define c21_21_re c01_01_re
179 #define c22_21_re c02_01_re
180 #define c22_21_im c02_01_im
181 #define c30_21_re c10_01_re
182 #define c30_21_im c10_01_im
183 #define c31_21_re c11_01_re
184 #define c31_21_im c11_01_im
185 #define c32_21_re c12_01_re
186 #define c32_21_im c12_01_im
187 #define c20_22_re c00_02_re
188 #define c20_22_im c00_02_im
189 #define c21_22_re c01_02_re
190 #define c21_22_im c01_02_im
191 #define c22_22_re c02_02_re
192 #define c30_22_re c10_02_re
193 #define c30_22_im c10_02_im
194 #define c31_22_re c11_02_re
195 #define c31_22_im c11_02_im
196 #define c32_22_re c12_02_re
197 #define c32_22_im c12_02_im
198 #define c20_30_re c00_10_re
199 #define c20_30_im c00_10_im
200 #define c21_30_re c01_10_re
201 #define c21_30_im c01_10_im
202 #define c22_30_re c02_10_re
203 #define c22_30_im c02_10_im
204 #define c30_30_re c10_10_re
205 #define c31_30_re c11_10_re
206 #define c31_30_im c11_10_im
207 #define c32_30_re c12_10_re
208 #define c32_30_im c12_10_im
209 #define c20_31_re c00_11_re
210 #define c20_31_im c00_11_im
211 #define c21_31_re c01_11_re
212 #define c21_31_im c01_11_im
213 #define c22_31_re c02_11_re
214 #define c22_31_im c02_11_im
215 #define c30_31_re c10_11_re
216 #define c30_31_im c10_11_im
217 #define c31_31_re c11_11_re
218 #define c32_31_re c12_11_re
219 #define c32_31_im c12_11_im
220 #define c20_32_re c00_12_re
221 #define c20_32_im c00_12_im
222 #define c21_32_re c01_12_re
223 #define c21_32_im c01_12_im
224 #define c22_32_re c02_12_re
225 #define c22_32_im c02_12_im
226 #define c30_32_re c10_12_re
227 #define c30_32_im c10_12_im
228 #define c31_32_re c11_12_re
229 #define c31_32_im c11_12_im
230 #define c32_32_re c12_12_re
231 
232 
233 // first chiral block of inverted clover term
234 #ifdef CLOVER_DOUBLE
235 #define cinv00_00_re C0.x
236 #define cinv01_01_re C0.y
237 #define cinv02_02_re C1.x
238 #define cinv10_10_re C1.y
239 #define cinv11_11_re C2.x
240 #define cinv12_12_re C2.y
241 #define cinv01_00_re C3.x
242 #define cinv01_00_im C3.y
243 #define cinv02_00_re C4.x
244 #define cinv02_00_im C4.y
245 #define cinv10_00_re C5.x
246 #define cinv10_00_im C5.y
247 #define cinv11_00_re C6.x
248 #define cinv11_00_im C6.y
249 #define cinv12_00_re C7.x
250 #define cinv12_00_im C7.y
251 #define cinv02_01_re C8.x
252 #define cinv02_01_im C8.y
253 #define cinv10_01_re C9.x
254 #define cinv10_01_im C9.y
255 #define cinv11_01_re C10.x
256 #define cinv11_01_im C10.y
257 #define cinv12_01_re C11.x
258 #define cinv12_01_im C11.y
259 #define cinv10_02_re C12.x
260 #define cinv10_02_im C12.y
261 #define cinv11_02_re C13.x
262 #define cinv11_02_im C13.y
263 #define cinv12_02_re C14.x
264 #define cinv12_02_im C14.y
265 #define cinv11_10_re C15.x
266 #define cinv11_10_im C15.y
267 #define cinv12_10_re C16.x
268 #define cinv12_10_im C16.y
269 #define cinv12_11_re C17.x
270 #define cinv12_11_im C17.y
271 #else
272 #define cinv00_00_re C0.x
273 #define cinv01_01_re C0.y
274 #define cinv02_02_re C0.z
275 #define cinv10_10_re C0.w
276 #define cinv11_11_re C1.x
277 #define cinv12_12_re C1.y
278 #define cinv01_00_re C1.z
279 #define cinv01_00_im C1.w
280 #define cinv02_00_re C2.x
281 #define cinv02_00_im C2.y
282 #define cinv10_00_re C2.z
283 #define cinv10_00_im C2.w
284 #define cinv11_00_re C3.x
285 #define cinv11_00_im C3.y
286 #define cinv12_00_re C3.z
287 #define cinv12_00_im C3.w
288 #define cinv02_01_re C4.x
289 #define cinv02_01_im C4.y
290 #define cinv10_01_re C4.z
291 #define cinv10_01_im C4.w
292 #define cinv11_01_re C5.x
293 #define cinv11_01_im C5.y
294 #define cinv12_01_re C5.z
295 #define cinv12_01_im C5.w
296 #define cinv10_02_re C6.x
297 #define cinv10_02_im C6.y
298 #define cinv11_02_re C6.z
299 #define cinv11_02_im C6.w
300 #define cinv12_02_re C7.x
301 #define cinv12_02_im C7.y
302 #define cinv11_10_re C7.z
303 #define cinv11_10_im C7.w
304 #define cinv12_10_re C8.x
305 #define cinv12_10_im C8.y
306 #define cinv12_11_re C8.z
307 #define cinv12_11_im C8.w
308 #endif // CLOVER_DOUBLE
309 
310 #define cinv00_01_re (+cinv01_00_re)
311 #define cinv00_01_im (-cinv01_00_im)
312 #define cinv00_02_re (+cinv02_00_re)
313 #define cinv00_02_im (-cinv02_00_im)
314 #define cinv01_02_re (+cinv02_01_re)
315 #define cinv01_02_im (-cinv02_01_im)
316 #define cinv00_10_re (+cinv10_00_re)
317 #define cinv00_10_im (-cinv10_00_im)
318 #define cinv01_10_re (+cinv10_01_re)
319 #define cinv01_10_im (-cinv10_01_im)
320 #define cinv02_10_re (+cinv10_02_re)
321 #define cinv02_10_im (-cinv10_02_im)
322 #define cinv00_11_re (+cinv11_00_re)
323 #define cinv00_11_im (-cinv11_00_im)
324 #define cinv01_11_re (+cinv11_01_re)
325 #define cinv01_11_im (-cinv11_01_im)
326 #define cinv02_11_re (+cinv11_02_re)
327 #define cinv02_11_im (-cinv11_02_im)
328 #define cinv10_11_re (+cinv11_10_re)
329 #define cinv10_11_im (-cinv11_10_im)
330 #define cinv00_12_re (+cinv12_00_re)
331 #define cinv00_12_im (-cinv12_00_im)
332 #define cinv01_12_re (+cinv12_01_re)
333 #define cinv01_12_im (-cinv12_01_im)
334 #define cinv02_12_re (+cinv12_02_re)
335 #define cinv02_12_im (-cinv12_02_im)
336 #define cinv10_12_re (+cinv12_10_re)
337 #define cinv10_12_im (-cinv12_10_im)
338 #define cinv11_12_re (+cinv12_11_re)
339 #define cinv11_12_im (-cinv12_11_im)
340 
341 // second chiral block of inverted clover term (reuses C0,...,C9)
342 #define cinv20_20_re cinv00_00_re
343 #define cinv21_20_re cinv01_00_re
344 #define cinv21_20_im cinv01_00_im
345 #define cinv22_20_re cinv02_00_re
346 #define cinv22_20_im cinv02_00_im
347 #define cinv30_20_re cinv10_00_re
348 #define cinv30_20_im cinv10_00_im
349 #define cinv31_20_re cinv11_00_re
350 #define cinv31_20_im cinv11_00_im
351 #define cinv32_20_re cinv12_00_re
352 #define cinv32_20_im cinv12_00_im
353 #define cinv20_21_re cinv00_01_re
354 #define cinv20_21_im cinv00_01_im
355 #define cinv21_21_re cinv01_01_re
356 #define cinv22_21_re cinv02_01_re
357 #define cinv22_21_im cinv02_01_im
358 #define cinv30_21_re cinv10_01_re
359 #define cinv30_21_im cinv10_01_im
360 #define cinv31_21_re cinv11_01_re
361 #define cinv31_21_im cinv11_01_im
362 #define cinv32_21_re cinv12_01_re
363 #define cinv32_21_im cinv12_01_im
364 #define cinv20_22_re cinv00_02_re
365 #define cinv20_22_im cinv00_02_im
366 #define cinv21_22_re cinv01_02_re
367 #define cinv21_22_im cinv01_02_im
368 #define cinv22_22_re cinv02_02_re
369 #define cinv30_22_re cinv10_02_re
370 #define cinv30_22_im cinv10_02_im
371 #define cinv31_22_re cinv11_02_re
372 #define cinv31_22_im cinv11_02_im
373 #define cinv32_22_re cinv12_02_re
374 #define cinv32_22_im cinv12_02_im
375 #define cinv20_30_re cinv00_10_re
376 #define cinv20_30_im cinv00_10_im
377 #define cinv21_30_re cinv01_10_re
378 #define cinv21_30_im cinv01_10_im
379 #define cinv22_30_re cinv02_10_re
380 #define cinv22_30_im cinv02_10_im
381 #define cinv30_30_re cinv10_10_re
382 #define cinv31_30_re cinv11_10_re
383 #define cinv31_30_im cinv11_10_im
384 #define cinv32_30_re cinv12_10_re
385 #define cinv32_30_im cinv12_10_im
386 #define cinv20_31_re cinv00_11_re
387 #define cinv20_31_im cinv00_11_im
388 #define cinv21_31_re cinv01_11_re
389 #define cinv21_31_im cinv01_11_im
390 #define cinv22_31_re cinv02_11_re
391 #define cinv22_31_im cinv02_11_im
392 #define cinv30_31_re cinv10_11_re
393 #define cinv30_31_im cinv10_11_im
394 #define cinv31_31_re cinv11_11_re
395 #define cinv32_31_re cinv12_11_re
396 #define cinv32_31_im cinv12_11_im
397 #define cinv20_32_re cinv00_12_re
398 #define cinv20_32_im cinv00_12_im
399 #define cinv21_32_re cinv01_12_re
400 #define cinv21_32_im cinv01_12_im
401 #define cinv22_32_re cinv02_12_re
402 #define cinv22_32_im cinv02_12_im
403 #define cinv30_32_re cinv10_12_re
404 #define cinv30_32_im cinv10_12_im
405 #define cinv31_32_re cinv11_12_re
406 #define cinv31_32_im cinv11_12_im
407 #define cinv32_32_re cinv12_12_re
408 
409 
410 #include "io_spinor.h"
411 
412 #include "read_clover.h"
413 
414 #include "tmc_core.h"
415 
416 if (face_num) {
417 
418  switch(dim) {
419  case 0:
420  {
421  // read spinor from device memory
422  READ_SPINOR(SPINORTEX, param.sp_stride, idx, idx);
423  APPLY_CLOVER_TWIST_INV(c, cinv, -a, i);
424 
431 
432  // project spinor into half spinors
433  a0_re = +i00_re+i30_im;
434  a0_im = +i00_im-i30_re;
435  a1_re = +i01_re+i31_im;
436  a1_im = +i01_im-i31_re;
437  a2_re = +i02_re+i32_im;
438  a2_im = +i02_im-i32_re;
439  b0_re = +i10_re+i20_im;
440  b0_im = +i10_im-i20_re;
441  b1_re = +i11_re+i21_im;
442  b1_im = +i11_im-i21_re;
443  b2_re = +i12_re+i22_im;
444  b2_im = +i12_im-i22_re;
445 
446  // write half spinor back to device memory
447  WRITE_HALF_SPINOR(face_volume, face_idx);
448  }
449  break;
450  case 1:
451  {
452  // read spinor from device memory
453  READ_SPINOR(SPINORTEX, param.sp_stride, idx, idx);
454  APPLY_CLOVER_TWIST_INV(c, cinv, -a, i);
455 
462 
463  // project spinor into half spinors
464  a0_re = +i00_re-i30_re;
465  a0_im = +i00_im-i30_im;
466  a1_re = +i01_re-i31_re;
467  a1_im = +i01_im-i31_im;
468  a2_re = +i02_re-i32_re;
469  a2_im = +i02_im-i32_im;
470  b0_re = +i10_re+i20_re;
471  b0_im = +i10_im+i20_im;
472  b1_re = +i11_re+i21_re;
473  b1_im = +i11_im+i21_im;
474  b2_re = +i12_re+i22_re;
475  b2_im = +i12_im+i22_im;
476 
477  // write half spinor back to device memory
478  WRITE_HALF_SPINOR(face_volume, face_idx);
479  }
480  break;
481  case 2:
482  {
483  // read spinor from device memory
484  READ_SPINOR(SPINORTEX, param.sp_stride, idx, idx);
485  APPLY_CLOVER_TWIST_INV(c, cinv, -a, i);
486 
493 
494  // project spinor into half spinors
495  a0_re = +i00_re+i20_im;
496  a0_im = +i00_im-i20_re;
497  a1_re = +i01_re+i21_im;
498  a1_im = +i01_im-i21_re;
499  a2_re = +i02_re+i22_im;
500  a2_im = +i02_im-i22_re;
501  b0_re = +i10_re-i30_im;
502  b0_im = +i10_im+i30_re;
503  b1_re = +i11_re-i31_im;
504  b1_im = +i11_im+i31_re;
505  b2_re = +i12_re-i32_im;
506  b2_im = +i12_im+i32_re;
507 
508  // write half spinor back to device memory
509  WRITE_HALF_SPINOR(face_volume, face_idx);
510  }
511  break;
512  case 3:
513  {
514  // read spinor from device memory
515  READ_SPINOR(SPINORTEX, param.sp_stride, idx, idx);
516  APPLY_CLOVER_TWIST_INV(c, cinv, -a, i);
517 
524 
525  // project spinor into half spinors
526  a0_re = +2*i20_re;
527  a0_im = +2*i20_im;
528  a1_re = +2*i21_re;
529  a1_im = +2*i21_im;
530  a2_re = +2*i22_re;
531  a2_im = +2*i22_im;
532  b0_re = +2*i30_re;
533  b0_im = +2*i30_im;
534  b1_re = +2*i31_re;
535  b1_im = +2*i31_im;
536  b2_re = +2*i32_re;
537  b2_im = +2*i32_im;
538 
539  // write half spinor back to device memory
540  WRITE_HALF_SPINOR(face_volume, face_idx);
541  }
542  break;
543  }
544 
545 } else {
546 
547  switch(dim) {
548  case 0:
549  {
550  // read spinor from device memory
551  READ_SPINOR(SPINORTEX, param.sp_stride, idx, idx);
552  APPLY_CLOVER_TWIST_INV(c, cinv, -a, i);
553 
560 
561  // project spinor into half spinors
562  a0_re = +i00_re-i30_im;
563  a0_im = +i00_im+i30_re;
564  a1_re = +i01_re-i31_im;
565  a1_im = +i01_im+i31_re;
566  a2_re = +i02_re-i32_im;
567  a2_im = +i02_im+i32_re;
568  b0_re = +i10_re-i20_im;
569  b0_im = +i10_im+i20_re;
570  b1_re = +i11_re-i21_im;
571  b1_im = +i11_im+i21_re;
572  b2_re = +i12_re-i22_im;
573  b2_im = +i12_im+i22_re;
574 
575  // write half spinor back to device memory
576  WRITE_HALF_SPINOR(face_volume, face_idx);
577  }
578  break;
579  case 1:
580  {
581  // read spinor from device memory
582  READ_SPINOR(SPINORTEX, param.sp_stride, idx, idx);
583  APPLY_CLOVER_TWIST_INV(c, cinv, -a, i);
584 
591 
592  // project spinor into half spinors
593  a0_re = +i00_re+i30_re;
594  a0_im = +i00_im+i30_im;
595  a1_re = +i01_re+i31_re;
596  a1_im = +i01_im+i31_im;
597  a2_re = +i02_re+i32_re;
598  a2_im = +i02_im+i32_im;
599  b0_re = +i10_re-i20_re;
600  b0_im = +i10_im-i20_im;
601  b1_re = +i11_re-i21_re;
602  b1_im = +i11_im-i21_im;
603  b2_re = +i12_re-i22_re;
604  b2_im = +i12_im-i22_im;
605 
606  // write half spinor back to device memory
607  WRITE_HALF_SPINOR(face_volume, face_idx);
608  }
609  break;
610  case 2:
611  {
612  // read spinor from device memory
613  READ_SPINOR(SPINORTEX, param.sp_stride, idx, idx);
614  APPLY_CLOVER_TWIST_INV(c, cinv, -a, i);
615 
622 
623  // project spinor into half spinors
624  a0_re = +i00_re-i20_im;
625  a0_im = +i00_im+i20_re;
626  a1_re = +i01_re-i21_im;
627  a1_im = +i01_im+i21_re;
628  a2_re = +i02_re-i22_im;
629  a2_im = +i02_im+i22_re;
630  b0_re = +i10_re+i30_im;
631  b0_im = +i10_im-i30_re;
632  b1_re = +i11_re+i31_im;
633  b1_im = +i11_im-i31_re;
634  b2_re = +i12_re+i32_im;
635  b2_im = +i12_im-i32_re;
636 
637  // write half spinor back to device memory
638  WRITE_HALF_SPINOR(face_volume, face_idx);
639  }
640  break;
641  case 3:
642  {
643  // read spinor from device memory
644  READ_SPINOR(SPINORTEX, param.sp_stride, idx, idx);
645  APPLY_CLOVER_TWIST_INV(c, cinv, -a, i);
646 
653 
654  // project spinor into half spinors
655  a0_re = +2*i00_re;
656  a0_im = +2*i00_im;
657  a1_re = +2*i01_re;
658  a1_im = +2*i01_im;
659  a2_re = +2*i02_re;
660  a2_im = +2*i02_im;
661  b0_re = +2*i10_re;
662  b0_im = +2*i10_im;
663  b1_re = +2*i11_re;
664  b1_im = +2*i11_im;
665  b2_re = +2*i12_re;
666  b2_im = +2*i12_im;
667 
668  // write half spinor back to device memory
669  WRITE_HALF_SPINOR(face_volume, face_idx);
670  }
671  break;
672  }
673 
674 }
675 
676 // undefine to prevent warning when precision is changed
677 #undef spinorFloat
678 #undef SHARED_STRIDE
679 
680 #undef i00_re
681 #undef i00_im
682 #undef i01_re
683 #undef i01_im
684 #undef i02_re
685 #undef i02_im
686 #undef i10_re
687 #undef i10_im
688 #undef i11_re
689 #undef i11_im
690 #undef i12_re
691 #undef i12_im
692 #undef i20_re
693 #undef i20_im
694 #undef i21_re
695 #undef i21_im
696 #undef i22_re
697 #undef i22_im
698 #undef i30_re
699 #undef i30_im
700 #undef i31_re
701 #undef i31_im
702 #undef i32_re
703 #undef i32_im
704 
705 #undef c00_00_re
706 #undef c01_01_re
707 #undef c02_02_re
708 #undef c10_10_re
709 #undef c11_11_re
710 #undef c12_12_re
711 #undef c01_00_re
712 #undef c01_00_im
713 #undef c02_00_re
714 #undef c02_00_im
715 #undef c10_00_re
716 #undef c10_00_im
717 #undef c11_00_re
718 #undef c11_00_im
719 #undef c12_00_re
720 #undef c12_00_im
721 #undef c02_01_re
722 #undef c02_01_im
723 #undef c10_01_re
724 #undef c10_01_im
725 #undef c11_01_re
726 #undef c11_01_im
727 #undef c12_01_re
728 #undef c12_01_im
729 #undef c10_02_re
730 #undef c10_02_im
731 #undef c11_02_re
732 #undef c11_02_im
733 #undef c12_02_re
734 #undef c12_02_im
735 #undef c11_10_re
736 #undef c11_10_im
737 #undef c12_10_re
738 #undef c12_10_im
739 #undef c12_11_re
740 #undef c12_11_im
741 
742 #undef cinv00_00_re
743 #undef cinv01_01_re
744 #undef cinv02_02_re
745 #undef cinv10_10_re
746 #undef cinv11_11_re
747 #undef cinv12_12_re
748 #undef cinv01_00_re
749 #undef cinv01_00_im
750 #undef cinv02_00_re
751 #undef cinv02_00_im
752 #undef cinv10_00_re
753 #undef cinv10_00_im
754 #undef cinv11_00_re
755 #undef cinv11_00_im
756 #undef cinv12_00_re
757 #undef cinv12_00_im
758 #undef cinv02_01_re
759 #undef cinv02_01_im
760 #undef cinv10_01_re
761 #undef cinv10_01_im
762 #undef cinv11_01_re
763 #undef cinv11_01_im
764 #undef cinv12_01_re
765 #undef cinv12_01_im
766 #undef cinv10_02_re
767 #undef cinv10_02_im
768 #undef cinv11_02_re
769 #undef cinv11_02_im
770 #undef cinv12_02_re
771 #undef cinv12_02_im
772 #undef cinv11_10_re
773 #undef cinv11_10_im
774 #undef cinv12_10_re
775 #undef cinv12_10_im
776 #undef cinv12_11_re
777 #undef cinv12_11_im
778 
QudaGaugeParam param
Definition: pack_test.cpp:17
#define APPLY_CLOVER_TWIST_INV(c, cinv, a, reg)
Definition: tmc_core.h:432
#define SPINORTEX
Definition: clover_def.h:40
#define READ_SPINOR
Definition: clover_def.h:36