Grid 0.7.0
WilsonKernelsAsmAvx512.h
Go to the documentation of this file.
1/*************************************************************************************
2
3 Grid physics library, www.github.com/paboyle/Grid
4
5
6
7 Source file: ./lib/qcd/action/fermion/WilsonKernelsAsmAvx512.h
8
9 Copyright (C) 2015
10
11Author: Peter Boyle <paboyle@ph.ed.ac.uk>
12Author: paboyle <paboyle@ph.ed.ac.uk>
13
14 This program is free software; you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
16 the Free Software Foundation; either version 2 of the License, or
17 (at your option) any later version.
18
19 This program is distributed in the hope that it will be useful,
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 GNU General Public License for more details.
23
24 You should have received a copy of the GNU General Public License along
25 with this program; if not, write to the Free Software Foundation, Inc.,
26 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
27
28 See the full license in the file "LICENSE" in the top level distribution directory
29*************************************************************************************/
30/* END LEGAL */
31#pragma once
32
33#if defined(AVX512)
35 // If we are AVX512 specialise the single precision routine
37#include <simd/Intel512wilson.h>
38#include <simd/Intel512single.h>
39
41#undef DWFVEC5D
42
43static std::vector<vComplexF> signsF;
44
45 template<typename vtype>
46 int setupSigns(std::vector<vtype>& signs ){
47 std::vector<vtype> bother(2);
48 signs = bother;
49 vrsign(signs[0]);
50 visign(signs[1]);
51 return 1;
52 }
53
54 static int signInitF = setupSigns(signsF);
55
56#define MAYBEPERM(A,perm) if (perm) { A ; }
57#define MULT_2SPIN(ptr,pf) MULT_ADDSUB_2SPIN(ptr,pf)
58#define COMPLEX_SIGNS(isigns) vComplexF *isigns = &signsF[0];
59
61// XYZT vectorised, undag Kernel, single
63#undef KERNEL_DAG
64#define INTERIOR_AND_EXTERIOR
65#undef INTERIOR
66#undef EXTERIOR
67template<> void
68WilsonKernels<WilsonImplF>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
69 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
70#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
71
72template<> void
73WilsonKernels<ZWilsonImplF>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
74 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
75#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
76
77//template<> void
78//WilsonKernels<WilsonImplFH>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
79// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
80//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
81//
82//template<> void
83//WilsonKernels<ZWilsonImplFH>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
84// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
85//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
86
87#undef INTERIOR_AND_EXTERIOR
88#define INTERIOR
89#undef EXTERIOR
90template<> void
91WilsonKernels<WilsonImplF>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
92 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
93#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
94
95template<> void
96WilsonKernels<ZWilsonImplF>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
97 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
98#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
99
100//template<> void
101//WilsonKernels<WilsonImplFH>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
102// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
103//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
104//
105//template<> void
106//WilsonKernels<ZWilsonImplFH>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
107// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
108//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
109
110
111#undef INTERIOR_AND_EXTERIOR
112#undef INTERIOR
113#define EXTERIOR
114template<> void
115WilsonKernels<WilsonImplF>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
116 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
117#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
118
119template<> void
120WilsonKernels<ZWilsonImplF>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
121 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
122#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
123
124//template<> void
125//WilsonKernels<WilsonImplFH>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
126// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
127//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
128//
129//template<> void
130//WilsonKernels<ZWilsonImplFH>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
131// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
132//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
133
135// XYZT vectorised, dag Kernel, single
137#define KERNEL_DAG
138#define INTERIOR_AND_EXTERIOR
139#undef INTERIOR
140#undef EXTERIOR
141template<> void
142WilsonKernels<WilsonImplF>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
143 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
144#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
145
146template<> void
147WilsonKernels<ZWilsonImplF>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
148 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
149#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
150
151//template<> void
152//WilsonKernels<WilsonImplFH>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
153// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
154//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
155//
156//template<> void
157//WilsonKernels<ZWilsonImplFH>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
158// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
159//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
160
161#undef INTERIOR_AND_EXTERIOR
162#define INTERIOR
163#undef EXTERIOR
164template<> void
165WilsonKernels<WilsonImplF>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
166 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
167#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
168
169template<> void
170WilsonKernels<ZWilsonImplF>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
171 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
172#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
173
174//template<> void
175//WilsonKernels<WilsonImplFH>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
176// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
177//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
178//
179//template<> void
180//WilsonKernels<ZWilsonImplFH>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
181// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
182//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
183
184#undef INTERIOR_AND_EXTERIOR
185#undef INTERIOR
186#define EXTERIOR
187template<> void
188WilsonKernels<WilsonImplF>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
189 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
190#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
191
192template<> void
193WilsonKernels<ZWilsonImplF>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
194 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
195#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
196
197//template<> void
198//WilsonKernels<WilsonImplFH>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
199// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
200//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
201//
202//template<> void
203//WilsonKernels<ZWilsonImplFH>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
204// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
205//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
206
207#undef MAYBEPERM
208#undef MULT_2SPIN
209#define MAYBEPERM(A,B)
210#define MULT_2SPIN(ptr,pf) MULT_ADDSUB_2SPIN_LS(ptr,pf)
211
213// Ls vectorised, undag Kernel, single
215
216#ifdef DWFVEC5D
217
218#undef KERNEL_DAG
219#define INTERIOR_AND_EXTERIOR
220#undef INTERIOR
221#undef EXTERIOR
222template<> void
223WilsonKernels<DomainWallVec5dImplF>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
224 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
225#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
226template<> void
227WilsonKernels<ZDomainWallVec5dImplF>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
228 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
229#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
230
231//template<> void
232//WilsonKernels<DomainWallVec5dImplFH>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
233// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
234//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
235//template<> void
236//WilsonKernels<ZDomainWallVec5dImplFH>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
237// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
238//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
239
240#undef INTERIOR_AND_EXTERIOR
241#define INTERIOR
242#undef EXTERIOR
243template<> void
244WilsonKernels<DomainWallVec5dImplF>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
245 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
246#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
247template<> void
248WilsonKernels<ZDomainWallVec5dImplF>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
249 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
250#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
251
252//template<> void
253//WilsonKernels<DomainWallVec5dImplFH>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
254// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
255//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
256//template<> void
257//WilsonKernels<ZDomainWallVec5dImplFH>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
258// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
259//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
260
261#undef INTERIOR_AND_EXTERIOR
262#undef INTERIOR
263#define EXTERIOR
264#undef MULT_2SPIN
265#define MULT_2SPIN(ptr,pf) MULT_ADDSUB_2SPIN_LSNOPF(ptr,pf)
266template<> void
267WilsonKernels<DomainWallVec5dImplF>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
268 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
269#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
270
271template<> void
272WilsonKernels<ZDomainWallVec5dImplF>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
273 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
274#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
275
276//template<> void
277//WilsonKernels<DomainWallVec5dImplFH>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
278// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
279//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
280//
281//template<> void
282//WilsonKernels<ZDomainWallVec5dImplFH>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
283// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
284//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
285
287// Ls vectorised, dag Kernel, single
289#define KERNEL_DAG
290#define INTERIOR_AND_EXTERIOR
291#undef INTERIOR
292#undef EXTERIOR
293template<> void
294WilsonKernels<DomainWallVec5dImplF>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
295 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
296#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
297template<> void
298WilsonKernels<ZDomainWallVec5dImplF>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
299 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
300#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
301
302//template<> void
303//WilsonKernels<DomainWallVec5dImplFH>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
304// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
305//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
306//template<> void
307//WilsonKernels<ZDomainWallVec5dImplFH>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
308// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
309//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
310
311#undef INTERIOR_AND_EXTERIOR
312#define INTERIOR
313#undef EXTERIOR
314template<> void
315WilsonKernels<DomainWallVec5dImplF>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
316 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
317#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
318template<> void
319WilsonKernels<ZDomainWallVec5dImplF>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
320 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
321#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
322
323//template<> void
324//WilsonKernels<DomainWallVec5dImplFH>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
325// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
326//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
327//template<> void
328//WilsonKernels<ZDomainWallVec5dImplFH>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
329// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
330//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
331
332#undef INTERIOR_AND_EXTERIOR
333#undef INTERIOR
334#define EXTERIOR
335template<> void
336WilsonKernels<DomainWallVec5dImplF>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
337 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
338#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
339template<> void
340WilsonKernels<ZDomainWallVec5dImplF>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
341 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
342#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
343
344//template<> void
345//WilsonKernels<DomainWallVec5dImplFH>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
346// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
347//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
348//template<> void
349//WilsonKernels<ZDomainWallVec5dImplFH>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
350// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
351//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
352
353#endif // VEC 5D
354
355#undef COMPLEX_SIGNS
356#undef MAYBEPERM
357#undef MULT_2SPIN
358
359
360
362// If we are AVX512 specialise the double precision routine
364
365#include <simd/Intel512double.h>
366
367static std::vector<vComplexD> signsD;
368static int signInitD = setupSigns(signsD);
369
370#define MAYBEPERM(A,perm) if (perm) { A ; }
371#define MULT_2SPIN(ptr,pf) MULT_ADDSUB_2SPIN(ptr,pf)
372#define COMPLEX_SIGNS(isigns) vComplexD *isigns = &signsD[0];
373
374
375#define INTERIOR_AND_EXTERIOR
376#undef INTERIOR
377#undef EXTERIOR
378
380// XYZT vectorised, undag Kernel, single
382#undef KERNEL_DAG
383#define INTERIOR_AND_EXTERIOR
384#undef INTERIOR
385#undef EXTERIOR
386template<> void
387WilsonKernels<WilsonImplD>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
388 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
389#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
390template<> void
391WilsonKernels<ZWilsonImplD>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
392 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
393#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
394
395//template<> void
396//WilsonKernels<WilsonImplDF>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
397// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
398//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
399//template<> void
400//WilsonKernels<ZWilsonImplDF>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
401// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
402//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
403
404#undef INTERIOR_AND_EXTERIOR
405#define INTERIOR
406#undef EXTERIOR
407template<> void
408WilsonKernels<WilsonImplD>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
409 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
410#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
411template<> void
412WilsonKernels<ZWilsonImplD>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
413 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
414#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
415
416//template<> void
417//WilsonKernels<WilsonImplDF>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
418// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
419//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
420//template<> void
421//WilsonKernels<ZWilsonImplDF>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
422// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
423//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
424
425#undef INTERIOR_AND_EXTERIOR
426#undef INTERIOR
427#define EXTERIOR
428template<> void
429WilsonKernels<WilsonImplD>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
430 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
431#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
432template<> void
433WilsonKernels<ZWilsonImplD>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
434 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
435#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
436
437//template<> void
438//WilsonKernels<WilsonImplDF>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
439// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
440//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
441//template<> void
442//WilsonKernels<ZWilsonImplDF>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
443// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
444//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
445
447// XYZT vectorised, dag Kernel, single
449#define KERNEL_DAG
450#define INTERIOR_AND_EXTERIOR
451#undef INTERIOR
452#undef EXTERIOR
453template<> void
454WilsonKernels<WilsonImplD>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
455 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
456#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
457template<> void
458WilsonKernels<ZWilsonImplD>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
459 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
460#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
461
462//template<> void
463//WilsonKernels<WilsonImplDF>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
464// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
465//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
466//template<> void
467//WilsonKernels<ZWilsonImplDF>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
468// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
469//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
470
471#undef INTERIOR_AND_EXTERIOR
472#define INTERIOR
473#undef EXTERIOR
474template<> void
475WilsonKernels<WilsonImplD>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
476 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
477#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
478template<> void
479WilsonKernels<ZWilsonImplD>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
480 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
481#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
482
483//template<> void
484//WilsonKernels<WilsonImplDF>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
485// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
486//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
487//template<> void
488//WilsonKernels<ZWilsonImplDF>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
489// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
490//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
491
492#undef INTERIOR_AND_EXTERIOR
493#undef INTERIOR
494#define EXTERIOR
495template<> void
496WilsonKernels<WilsonImplD>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
497 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
498#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
499template<> void
500WilsonKernels<ZWilsonImplD>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
501 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
502#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
503
504//template<> void
505//WilsonKernels<WilsonImplDF>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
506// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
507//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
508//template<> void
509//WilsonKernels<ZWilsonImplDF>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
510// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
511//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
512
513#undef MAYBEPERM
514#undef MULT_2SPIN
515#define MAYBEPERM(A,B)
516#define MULT_2SPIN(ptr,pf) MULT_ADDSUB_2SPIN_LS(ptr,pf)
517
519// Ls vectorised, undag Kernel, single
521#ifdef DWFVEC5D
522
523#undef KERNEL_DAG
524#define INTERIOR_AND_EXTERIOR
525#undef INTERIOR
526#undef EXTERIOR
527template<> void
528WilsonKernels<DomainWallVec5dImplD>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
529 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
530#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
531template<> void
532WilsonKernels<ZDomainWallVec5dImplD>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
533 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
534#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
535
536//template<> void
537//WilsonKernels<DomainWallVec5dImplDF>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
538// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
539//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
540//template<> void
541//WilsonKernels<ZDomainWallVec5dImplDF>::AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
542// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
543//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
544
545#undef INTERIOR_AND_EXTERIOR
546#define INTERIOR
547#undef EXTERIOR
548template<> void
549WilsonKernels<DomainWallVec5dImplD>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
550 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
551#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
552template<> void
553WilsonKernels<ZDomainWallVec5dImplD>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
554 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
555#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
556
557//template<> void
558//WilsonKernels<DomainWallVec5dImplDF>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
559// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
560//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
561//template<> void
562//WilsonKernels<ZDomainWallVec5dImplDF>::AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
563// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
564//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
565
566#undef INTERIOR_AND_EXTERIOR
567#undef INTERIOR
568#define EXTERIOR
569#undef MULT_2SPIN
570#define MULT_2SPIN(ptr,pf) MULT_ADDSUB_2SPIN_LSNOPF(ptr,pf)
571template<> void
572WilsonKernels<DomainWallVec5dImplD>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
573 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
574#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
575template<> void
576WilsonKernels<ZDomainWallVec5dImplD>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
577 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
578#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
579
580//template<> void
581//WilsonKernels<DomainWallVec5dImplDF>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
582// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
583//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
584//template<> void
585//WilsonKernels<ZDomainWallVec5dImplDF>::AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf,
586// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
587//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
588
590// Ls vectorised, dag Kernel, single
592#define KERNEL_DAG
593#define INTERIOR_AND_EXTERIOR
594#undef INTERIOR
595#undef EXTERIOR
596template<> void
597WilsonKernels<DomainWallVec5dImplD>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
598 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
599#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
600template<> void
601WilsonKernels<ZDomainWallVec5dImplD>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
602 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
603#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
604
605//template<> void
606//WilsonKernels<DomainWallVec5dImplDF>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
607// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
608//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
609//template<> void
610//WilsonKernels<ZDomainWallVec5dImplDF>::AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
611// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
612//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
613
614#undef INTERIOR_AND_EXTERIOR
615#define INTERIOR
616#undef EXTERIOR
617template<> void
618WilsonKernels<DomainWallVec5dImplD>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
619 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
620#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
621template<> void
622WilsonKernels<ZDomainWallVec5dImplD>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
623 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
624#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
625
626//template<> void
627//WilsonKernels<DomainWallVec5dImplDF>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
628// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
629//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
630//template<> void
631//WilsonKernels<ZDomainWallVec5dImplDF>::AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
632// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
633//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
634
635#undef INTERIOR_AND_EXTERIOR
636#undef INTERIOR
637#define EXTERIOR
638
639template<> void
640WilsonKernels<DomainWallVec5dImplD>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
641 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
642#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
643template<> void
644WilsonKernels<ZDomainWallVec5dImplD>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
645 int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
646#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
647
648//template<> void
649//WilsonKernels<DomainWallVec5dImplDF>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
650// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
651//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
652//template<> void
653//WilsonKernels<ZDomainWallVec5dImplDF>::AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U,SiteHalfSpinor *buf,
654// int ss,int ssU,int Ls,int Ns,const FermionFieldView &in, FermionFieldView &out)
655//#include <qcd/action/fermion/implementation/WilsonKernelsAsmBody.h>
656
657#endif // VEC 5D
658
659#undef COMPLEX_SIGNS
660#undef MAYBEPERM
661#undef MULT_2SPIN
662
663#undef Chi_00
664#undef Chi_01
665#undef Chi_02
666#undef Chi_10
667#undef Chi_11
668#undef Chi_12
669#undef Chi_20
670#undef Chi_21
671#undef Chi_22
672#undef Chi_30
673#undef Chi_31
674#undef Chi_32
675
676#undef UChi_00
677#undef UChi_01
678#undef UChi_02
679#undef UChi_10
680#undef UChi_11
681#undef UChi_12
682#undef UChi_20
683#undef UChi_21
684#undef UChi_22
685#undef UChi_30
686#undef UChi_31
687#undef UChi_32
688
689#undef Psi_00
690#undef Psi_01
691#undef Psi_02
692#undef Psi_10
693#undef Psi_11
694#undef Psi_12
695#undef Psi_20
696#undef Psi_21
697#undef Psi_22
698#undef Psi_30
699#undef Psi_31
700#undef Psi_32
701
702#undef Phi_00
703#undef Phi_01
704#undef Phi_02
705#undef Phi_10
706#undef Phi_11
707#undef Phi_12
708#undef Phi_20
709#undef Phi_21
710#undef Phi_22
711#undef Phi_30
712#undef Phi_31
713#undef Phi_32
714
715
716#endif //AVX512
int signs[4]
Definition BGQQPX.h:536
accelerator_inline void vrsign(Grid_simd2< S, V > &ret)
accelerator_inline void visign(Grid_simd2< S, V > &ret)
static constexpr int Ns
Definition QCD.h:51
static INTERNAL_PRECISION U
Definition Zolotarev.cc:230
static void AsmDhopSiteExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf, int sF, int sU, int Ls, int Nsite, const FermionFieldView &in, FermionFieldView &out)
static void AsmDhopSiteDag(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf, int sF, int sU, int Ls, int Nsite, const FermionFieldView &in, FermionFieldView &out)
static void AsmDhopSite(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf, int sF, int sU, int Ls, int Nsite, const FermionFieldView &in, FermionFieldView &out)
static void AsmDhopSiteDagExt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf, int sF, int sU, int Ls, int Nsite, const FermionFieldView &in, FermionFieldView &out)
static void AsmDhopSiteDagInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf, int sF, int sU, int Ls, int Nsite, const FermionFieldView &in, FermionFieldView &out)
static void AsmDhopSiteInt(StencilView &st, DoubledGaugeFieldView &U, SiteHalfSpinor *buf, int sF, int sU, int Ls, int Nsite, const FermionFieldView &in, FermionFieldView &out)