Double precision AVX_128_FMA kernels
authorErik Lindahl <erik@kth.se>
Wed, 28 Nov 2012 21:03:25 +0000 (22:03 +0100)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Thu, 29 Nov 2012 17:22:19 +0000 (18:22 +0100)
commit529bfd7c0c2b0d1ff7cfbb47a7a3f57a0a75e593
treecf5a2393ac75bc658ca3cb4b29aa1e630703de43
parent1c6aa68dd2a3ea5473cd11ea6da52349e83e20be
Double precision AVX_128_FMA kernels

Kernels optimized for modern Opteron processors.
Using tables for Ewald right now, this might change with benchmarking.

Change-Id: I7da359c76b3c517e920a369413b11130be44631c
115 files changed:
include/gmx_math_x86_avx_128_fma_double.h
src/gmxlib/nonbonded/CMakeLists.txt
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/kernelutil_x86_avx_128_fma_double.h [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/make_nb_kernel_avx_128_fma_double.py [new file with mode: 0755]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwCSTab_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwCSTab_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwCSTab_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwCSTab_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwCSTab_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwLJ_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwLJ_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwLJ_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwLJ_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwLJ_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwNone_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwNone_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwNone_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwNone_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCSTab_VdwNone_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwCSTab_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwCSTab_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwCSTab_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwCSTab_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwCSTab_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwLJ_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwLJ_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwLJ_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwLJ_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwLJ_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwNone_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwNone_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwNone_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwNone_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecCoul_VdwNone_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSh_VdwLJSh_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSh_VdwLJSh_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSh_VdwLJSh_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSh_VdwLJSh_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSh_VdwLJSh_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSh_VdwNone_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSh_VdwNone_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSh_VdwNone_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSh_VdwNone_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSh_VdwNone_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSw_VdwLJSw_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSw_VdwLJSw_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSw_VdwLJSw_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSw_VdwLJSw_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSw_VdwLJSw_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSw_VdwNone_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSw_VdwNone_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSw_VdwNone_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSw_VdwNone_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEwSw_VdwNone_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwCSTab_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwCSTab_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwCSTab_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwCSTab_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwCSTab_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwLJ_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwLJ_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwLJ_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwLJ_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwLJ_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwNone_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwNone_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwNone_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwNone_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecEw_VdwNone_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecGB_VdwLJ_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecGB_VdwNone_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecNone_VdwCSTab_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecNone_VdwLJSh_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecNone_VdwLJSw_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecNone_VdwLJ_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwCSTab_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwCSTab_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwCSTab_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwCSTab_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwCSTab_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwLJSh_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwLJSh_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwLJSh_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwLJSh_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwLJSh_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwLJSw_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwLJSw_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwLJSw_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwLJSw_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwLJSw_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwNone_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwNone_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwNone_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwNone_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRFCut_VdwNone_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwCSTab_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwCSTab_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwCSTab_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwCSTab_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwCSTab_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwLJ_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwLJ_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwLJ_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwLJ_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwLJ_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwNone_GeomP1P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwNone_GeomW3P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwNone_GeomW3W3_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwNone_GeomW4P1_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecRF_VdwNone_GeomW4W4_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_avx_128_fma_double.c [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_avx_128_fma_double.h [new file with mode: 0644]
src/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_template_avx_128_fma_double.pre [new file with mode: 0644]
src/gmxlib/nonbonded/nonbonded.c