From 04ae7929a39795cfd623c3b47e855da5c4f53fed Mon Sep 17 00:00:00 2001 From: Peter Boyle Date: Thu, 22 Dec 2016 17:53:22 +0000 Subject: [PATCH] BGQ or KNL assembler now --- lib/qcd/action/fermion/WilsonKernelsAsm.cc | 132 +-------------------- 1 file changed, 2 insertions(+), 130 deletions(-) diff --git a/lib/qcd/action/fermion/WilsonKernelsAsm.cc b/lib/qcd/action/fermion/WilsonKernelsAsm.cc index d7a9edd3..ab805f4f 100644 --- a/lib/qcd/action/fermion/WilsonKernelsAsm.cc +++ b/lib/qcd/action/fermion/WilsonKernelsAsm.cc @@ -53,136 +53,8 @@ WilsonKernels::DiracOptAsmDhopSiteDag(StencilImpl &st,LebesgueOrder & lo, assert(0); } -#if defined(AVX512) -#include - - /////////////////////////////////////////////////////////// - // If we are AVX512 specialise the single precision routine - /////////////////////////////////////////////////////////// - -#include - -static Vector signsF; - - template - int setupSigns(Vector& signs ){ - Vector bother(2); - signs = bother; - vrsign(signs[0]); - visign(signs[1]); - return 1; - } - - static int signInitF = setupSigns(signsF); - -#define label(A) ilabel(A) -#define ilabel(A) ".globl\n" #A ":\n" - -#define MAYBEPERM(A,perm) if (perm) { A ; } -#define MULT_2SPIN(ptr,pf) MULT_ADDSUB_2SPIN(ptr,pf) -#define FX(A) WILSONASM_ ##A -#define COMPLEX_TYPE vComplexF -#define signs signsF - -#undef KERNEL_DAG -template<> void -WilsonKernels::DiracOptAsmDhopSite(StencilImpl &st,LebesgueOrder & lo,DoubledGaugeField &U, SiteHalfSpinor *buf, - int ss,int ssU,int Ls,int Ns,const FermionField &in, FermionField &out) -#include - -#define KERNEL_DAG -template<> void -WilsonKernels::DiracOptAsmDhopSiteDag(StencilImpl &st,LebesgueOrder & lo,DoubledGaugeField &U,SiteHalfSpinor *buf, - int ss,int ssU,int Ls,int Ns,const FermionField &in, FermionField &out) -#include - -#undef VMOVIDUP -#undef VMOVRDUP -#undef MAYBEPERM -#undef MULT_2SPIN -#undef FX -#define FX(A) DWFASM_ ## A -#define MAYBEPERM(A,B) -//#define VMOVIDUP(A,B,C) VBCASTIDUPf(A,B,C) -//#define VMOVRDUP(A,B,C) VBCASTRDUPf(A,B,C) -#define MULT_2SPIN(ptr,pf) MULT_ADDSUB_2SPIN_LS(ptr,pf) - -#undef KERNEL_DAG -template<> void -WilsonKernels::DiracOptAsmDhopSite(StencilImpl &st,LebesgueOrder & lo,DoubledGaugeField &U, SiteHalfSpinor *buf, - int ss,int ssU,int Ls,int Ns,const FermionField &in, FermionField &out) -#include - -#define KERNEL_DAG -template<> void -WilsonKernels::DiracOptAsmDhopSiteDag(StencilImpl &st,LebesgueOrder & lo,DoubledGaugeField &U,SiteHalfSpinor *buf, - int ss,int ssU,int Ls,int Ns,const FermionField &in, FermionField &out) -#include -#undef COMPLEX_TYPE -#undef signs -#undef VMOVRDUP -#undef MAYBEPERM -#undef MULT_2SPIN -#undef FX - -/////////////////////////////////////////////////////////// -// If we are AVX512 specialise the double precision routine -/////////////////////////////////////////////////////////// - -#include - -static Vector signsD; -#define signs signsD -static int signInitD = setupSigns(signsD); - -#define MAYBEPERM(A,perm) if (perm) { A ; } -#define MULT_2SPIN(ptr,pf) MULT_ADDSUB_2SPIN(ptr,pf) -#define FX(A) WILSONASM_ ##A -#define COMPLEX_TYPE vComplexD - -#undef KERNEL_DAG -template<> void -WilsonKernels::DiracOptAsmDhopSite(StencilImpl &st,LebesgueOrder & lo,DoubledGaugeField &U, SiteHalfSpinor *buf, - int ss,int ssU,int Ls,int Ns,const FermionField &in, FermionField &out) -#include - -#define KERNEL_DAG -template<> void -WilsonKernels::DiracOptAsmDhopSiteDag(StencilImpl &st,LebesgueOrder & lo,DoubledGaugeField &U,SiteHalfSpinor *buf, - int ss,int ssU,int Ls,int Ns,const FermionField &in, FermionField &out) -#include - -#undef VMOVIDUP -#undef VMOVRDUP -#undef MAYBEPERM -#undef MULT_2SPIN -#undef FX -#define FX(A) DWFASM_ ## A -#define MAYBEPERM(A,B) -//#define VMOVIDUP(A,B,C) VBCASTIDUPd(A,B,C) -//#define VMOVRDUP(A,B,C) VBCASTRDUPd(A,B,C) -#define MULT_2SPIN(ptr,pf) MULT_ADDSUB_2SPIN_LS(ptr,pf) - -#undef KERNEL_DAG -template<> void -WilsonKernels::DiracOptAsmDhopSite(StencilImpl &st,LebesgueOrder & lo,DoubledGaugeField &U, SiteHalfSpinor *buf, - int ss,int ssU,int Ls,int Ns,const FermionField &in, FermionField &out) -#include - -#define KERNEL_DAG -template<> void -WilsonKernels::DiracOptAsmDhopSiteDag(StencilImpl &st,LebesgueOrder & lo,DoubledGaugeField &U,SiteHalfSpinor *buf, - int ss,int ssU,int Ls,int Ns,const FermionField &in, FermionField &out) -#include - -#undef COMPLEX_TYPE -#undef signs -#undef VMOVRDUP -#undef MAYBEPERM -#undef MULT_2SPIN -#undef FX - -#endif //AVX512 +#include +#include #define INSTANTIATE_ASM(A)\ template void WilsonKernels::DiracOptAsmDhopSite(StencilImpl &st,LebesgueOrder & lo,DoubledGaugeField &U, SiteHalfSpinor *buf,\