#ifndef _gmx_math_x86_avx_256_double_h_
#define _gmx_math_x86_avx_256_double_h_
-#include "gmx_x86_avx_256.h"
-
+#include <math.h>
+#include "gmx_x86_avx_256.h"
#ifndef M_PI
# define M_PI 3.14159265358979323846264338327950288
#ifndef _gmx_math_x86_avx_256_single_h_
#define _gmx_math_x86_avx_256_single_h_
-#include "gmx_x86_avx_256.h"
+#include <math.h>
+#include "gmx_x86_avx_256.h"
#ifndef M_PI
# define M_PI 3.14159265358979323846264338327950288
#
# The nbnxn kernel files take the longest time to compile, so we sneak
# them in first to take best advantage of make-time parallelisation.
-file(GLOB MDLIB_SOURCES nbnxn_kernels/*.c *.c)
+file(GLOB MDLIB_SOURCES nbnxn_kernels/simd_4xn/*.c nbnxn_kernels/simd_2xnn/*.c nbnxn_kernels/*.c *.c)
if(GMX_GPU)
add_subdirectory(nbnxn_cuda)
--- /dev/null
+#!/usr/bin/python
+#
+# This file is part of the GROMACS molecular simulation package.
+#
+# Copyright (c) 2013, by the GROMACS development team, led by
+# David van der Spoel, Berk Hess, Erik Lindahl, and including many
+# others, as listed in the AUTHORS file in the top-level source
+# directory and at http://www.gromacs.org.
+#
+# GROMACS is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# as published by the Free Software Foundation; either version 2.1
+# of the License, or (at your option) any later version.
+#
+# GROMACS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GROMACS; if not, see
+# http://www.gnu.org/licenses, or write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# If you want to redistribute modifications to GROMACS, please
+# consider that scientific software is very special. Version
+# control is crucial - bugs must be traceable. We will be happy to
+# consider code for inclusion in the official distribution, but
+# derived work must not be called official GROMACS. Details are found
+# in the README & COPYING files - if they are missing, get the
+# official version at http://www.gromacs.org.
+#
+# To help us fund GROMACS development, we humbly ask that you cite
+# the research papers on the package. Check out http://www.gromacs.org
+
+# This script is used by the GROMACS developers to build most of the
+# files from which the nbnxn kernels are compiled. It is not called at
+# CMake time, and users should never need to use it. It currently
+# works for nbnxn kernel structure types 2xnn and 4xn. The generated
+# files are versions of the *.pre files in this directory, customized
+# for the kernel structure type and/or the detailed kernel type. These
+# are:
+#
+# A single header file that declares all the kernel functions for
+# this nbnxn kernel structure type, including the function that does
+# the dispatch via the function pointer table.
+#
+# A single C kernel dispatcher file that defines the function that
+# decides at run time which kernel to call.
+#
+# Many C kernel files, each defining a single kernel function. These
+# functions can take a noticeable time to compile, and should tend
+# to be in seperate files to take advantage of make-time
+# parallelism.
+#
+# This script should be run from the directory in which it is
+# located. The generated files are located in ../simd_<type>. There
+# are three other files in those locations that are not generated. These
+# contain:
+#
+# setup logic peculiar to the kernel structure type but common to
+# all the kernels within that type, and
+#
+# the logic for the outer and inner loops of the kernels, as
+# customized by numerous preprocessor defines to suit the hardware
+# and kernel type.
+#
+# Note that while functions for both nbnxn kernel structures are
+# compiled and built into an mdrun executable, because that executable
+# is not portable, only the functions for the useful nbnxn kernel
+# structure for the hardware selected at CMake time contain real
+# kernel logic. A run-time error occurs if an inappropriate kernel
+# dispatcher function is called (but that is normally impossible).
+
+import sys
+import os
+import collections # Requires Python 2.7
+
+FileHeader = \
+'/*\n' \
+' * This file is part of the GROMACS molecular simulation package.\n' \
+' *\n' \
+' * Copyright (c) 2012,2013, by the GROMACS development team, led by\n' \
+' * David van der Spoel, Berk Hess, Erik Lindahl, and including many\n' \
+' * others, as listed in the AUTHORS file in the top-level source\n' \
+' * directory and at http://www.gromacs.org.\n' \
+' *\n' \
+' * GROMACS is free software; you can redistribute it and/or\n' \
+' * modify it under the terms of the GNU Lesser General Public License\n' \
+' * as published by the Free Software Foundation; either version 2.1\n' \
+' * of the License, or (at your option) any later version.\n' \
+' *\n' \
+' * GROMACS is distributed in the hope that it will be useful,\n' \
+' * but WITHOUT ANY WARRANTY; without even the implied warranty of\n' \
+' * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n' \
+' * Lesser General Public License for more details.\n' \
+' *\n' \
+' * You should have received a copy of the GNU Lesser General Public\n' \
+' * License along with GROMACS; if not, see\n' \
+' * http://www.gnu.org/licenses, or write to the Free Software Foundation,\n' \
+' * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n' \
+' *\n' \
+' * If you want to redistribute modifications to GROMACS, please\n' \
+' * consider that scientific software is very special. Version\n' \
+' * control is crucial - bugs must be traceable. We will be happy to\n' \
+' * consider code for inclusion in the official distribution, but\n' \
+' * derived work must not be called official GROMACS. Details are found\n' \
+' * in the README & COPYING files - if they are missing, get the\n' \
+' * official version at http://www.gromacs.org.\n' \
+' *\n' \
+' * To help us fund GROMACS development, we humbly ask that you cite\n' \
+' * the research papers on the package. Check out http://www.gromacs.org.\n' \
+' */\n' \
+'/*\n' \
+' * Note: this file was generated by the Verlet kernel generator for\n' \
+' * kernel type {0}.\n' \
+' */\n\n'
+
+# The dict order must match the order of an enumeration in
+# nbnxn_kernel_simd_template.c.pre
+ElectrostaticsDict = collections.OrderedDict()
+ElectrostaticsDict['rf'] = { 'define' : '#define CALC_COUL_RF' }
+ElectrostaticsDict['tab'] = { 'define' : '#define CALC_COUL_TAB' }
+ElectrostaticsDict['tab_twin'] = { 'define' : '#define CALC_COUL_TAB\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' }
+ElectrostaticsDict['ewald'] = { 'define' : '#define CALC_COUL_EWALD' }
+ElectrostaticsDict['ewald_twin'] = { 'define' : '#define CALC_COUL_EWALD\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' }
+
+# The dict order must match the order of a C enumeration.
+LJCombinationRuleDict = collections.OrderedDict()
+LJCombinationRuleDict['geom'] = { 'define' : '#define LJ_COMB_GEOM' }
+LJCombinationRuleDict['lb'] = { 'define' : '#define LJ_COMB_LB' }
+LJCombinationRuleDict['none'] = { 'define' : '/* Use no LJ combination rule */' }
+
+# This is OK as an unordered dict
+EnergiesComputationDict = {
+ 'ener' : {
+ 'function type' : 'nbk_func_ener',
+ 'define' : '#define CALC_ENERGIES',
+ },
+ 'energrp' : {
+ 'function type' : 'nbk_func_ener',
+ 'define' : '#define CALC_ENERGIES\n#define ENERGY_GROUPS',
+ },
+ 'noener' : {
+ 'function type' : 'nbk_func_noener',
+ 'define' : '/* Will not calculate energies */',
+ },
+}
+
+# This is OK as an unordered dict
+VerletKernelTypeDict = {
+ '2xnn' : {
+ 'Define' : 'GMX_NBNXN_SIMD_2XNN',
+ 'WidthSetup' : '/* Include the full-width SIMD macros */\n',
+ 'WidthCheck' : ('#if !(GMX_SIMD_WIDTH_HERE == 8 || GMX_SIMD_WIDTH_HERE == 16)\n' \
+ '#error "unsupported SIMD width"\n' \
+ '#endif\n'),
+ 'UnrollSize' : 2,
+ },
+ '4xn' : {
+ 'Define' : 'GMX_NBNXN_SIMD_4XN',
+ 'WidthSetup' : ('#ifdef GMX_NBNXN_HALF_WIDTH_SIMD\n' \
+ '#define GMX_USE_HALF_WIDTH_SIMD_HERE\n' \
+ '#endif\n'),
+ 'WidthCheck' : ('#if !(GMX_SIMD_WIDTH_HERE == 2 || GMX_SIMD_WIDTH_HERE == 4 || GMX_SIMD_WIDTH_HERE == 8)\n' \
+ '#error "unsupported SIMD width"\n' \
+ '#endif\n'),
+ 'UnrollSize' : 1,
+ },
+}
+
+with open ("nbnxn_kernel_simd_template.c.pre", "r") as KernelDispatcherTemplateFile:
+ KernelDispatcherTemplate = KernelDispatcherTemplateFile.read()
+
+with open ("nbnxn_kernel_simd_template.h.pre", "r") as KernelsHeaderTemplateFile:
+ KernelsHeaderTemplate = KernelsHeaderTemplateFile.read()
+
+# For each Verlet kernel type, write three kinds of files:
+# a header file defining the functions for all the kernels,
+# a code file containing the kernel function lookup table and
+# the kernel dispatcher function
+# for each kernel, a file defining the single C function for that kernel
+for type in VerletKernelTypeDict:
+ DirName = "../simd_{0}".format(type)
+ KernelNamePrefix = 'nbnxn_kernel_simd_{0}'.format(type)
+ KernelsHeaderFileName = "{0}.h".format(KernelNamePrefix)
+ KernelFunctionLookupTable = {}
+ KernelDeclarations = ''
+ with open ("{1}_kernel.c.pre".format(DirName,KernelNamePrefix), "r") as KernelTemplateFile:
+ KernelTemplate = KernelTemplateFile.read()
+
+ # Loop over all kernels
+ for ener in EnergiesComputationDict:
+ KernelFunctionLookupTable[ener] = '{\n'
+ for elec in ElectrostaticsDict:
+ KernelFunctionLookupTable[ener] += ' {\n'
+ for ljcomb in LJCombinationRuleDict:
+ KernelName = ('{0}_{1}_comb_{2}_{3}'
+ .format(KernelNamePrefix,elec,ljcomb,ener))
+
+ # Declare the kernel function
+ KernelDeclarations += ('{1:21} {0};\n'
+ .format(KernelName,
+ EnergiesComputationDict[ener]['function type']))
+
+ # Write the file with the kernel definition
+ with open('{0}/{1}.c'.format(DirName,KernelName), 'w') as kernelfp:
+ kernelfp.write(FileHeader.format(type))
+ kernelfp.write(KernelTemplate
+ .format(VerletKernelTypeDict[type]['Define'],
+ ElectrostaticsDict[elec]['define'],
+ LJCombinationRuleDict[ljcomb]['define'],
+ EnergiesComputationDict[ener]['define'],
+ KernelsHeaderFileName,
+ KernelName,
+ " " * (len(KernelName) + 1),
+ VerletKernelTypeDict[type]['UnrollSize'],
+ )
+ )
+
+ # Enter the kernel function in the lookup table
+ KernelFunctionLookupTable[ener] += ' {0},\n'.format(KernelName)
+
+ KernelFunctionLookupTable[ener] += ' },\n'
+ KernelFunctionLookupTable[ener] += '};\n'
+ KernelDeclarations += '\n'
+
+ # Write the header file that declares all the kernel
+ # functions for this type
+ with open('{0}/{1}'.format(DirName,KernelsHeaderFileName),'w') as fp:
+ fp.write(FileHeader.format(type))
+ fp.write(KernelsHeaderTemplate
+ .format(KernelNamePrefix,
+ " " * (len(KernelNamePrefix) + 1),
+ KernelDeclarations))
+
+ # Write the file defining the kernel dispatcher
+ # function for this type
+ with open('{0}/{1}'.format(DirName,"{0}.c".format(KernelNamePrefix)),'w') as fp:
+ fp.write(FileHeader.format(type))
+ fp.write(KernelDispatcherTemplate
+ .format(VerletKernelTypeDict[type]['Define'],
+ VerletKernelTypeDict[type]['WidthSetup'],
+ VerletKernelTypeDict[type]['WidthCheck'],
+ VerletKernelTypeDict[type]['UnrollSize'],
+ KernelsHeaderFileName,
+ KernelNamePrefix,
+ ' ' * (len(KernelNamePrefix)+1),
+ KernelFunctionLookupTable['ener'],
+ KernelFunctionLookupTable['energrp'],
+ KernelFunctionLookupTable['noener'],
+ )
+ )
+
+sys.exit()
--- /dev/null
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * {0}, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE {7}
+#include "{4}"
+
+{1}
+{2}
+{3}
+
+#ifdef {0}
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* {0} */
+
+#ifdef CALC_ENERGIES
+void
+{5}(const nbnxn_pairlist_t *nbl,
+{6}const nbnxn_atomdata_t *nbat,
+{6}const interaction_const_t *ic,
+{6}rvec *shift_vec,
+{6}real *f,
+{6}real *fshift,
+{6}real *Vvdw,
+{6}real *Vc)
+#else /* CALC_ENERGIES */
+void
+{5}(const nbnxn_pairlist_t *nbl,
+{6}const nbnxn_atomdata_t *nbat,
+{6}const interaction_const_t *ic,
+{6}rvec *shift_vec,
+{6}real *f,
+{6}real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef {0}
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* {0} */
+{{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * {0} is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}}
+#endif /* {0} */
--- /dev/null
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * {0}, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE {7}
+#include "{4}"
+
+{1}
+{2}
+{3}
+
+#ifdef {0}
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* {0} */
+
+#ifdef CALC_ENERGIES
+void
+{5}(const nbnxn_pairlist_t *nbl,
+{6}const nbnxn_atomdata_t *nbat,
+{6}const interaction_const_t *ic,
+{6}rvec *shift_vec,
+{6}real *f,
+{6}real *fshift,
+{6}real *Vvdw,
+{6}real *Vc)
+#else /* CALC_ENERGIES */
+void
+{5}(const nbnxn_pairlist_t *nbl,
+{6}const nbnxn_atomdata_t *nbat,
+{6}const interaction_const_t *ic,
+{6}rvec *shift_vec,
+{6}real *f,
+{6}real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef {0}
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* {0} */
+{{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * {0} is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}}
+#endif /* {0} */
--- /dev/null
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "typedefs.h"
+
+#ifdef {0}
+
+{1}
+#include "gmx_simd_macros.h"
+#include "gmx_simd_vec.h"
+{2}
+#define GMX_SIMD_J_UNROLL_SIZE {3}
+#include "{4}"
+#include "../nbnxn_kernel_common.h"
+#include "gmx_omp_nthreads.h"
+#include "types/force_flags.h"
+
+/*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels
+ */
+enum {{
+ coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR
+}};
+
+/* Declare and define the kernel function pointer lookup tables. */
+static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] =
+{7}
+static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] =
+{8}
+static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] =
+{9}
+
+static void
+reduce_group_energies(int ng, int ng_2log,
+ const real *VSvdw, const real *VSc,
+ real *Vvdw, real *Vc)
+{{
+ const int unrollj = GMX_SIMD_WIDTH_HERE/GMX_SIMD_J_UNROLL_SIZE;
+ const int unrollj_half = unrollj/2;
+ int ng_p2, i, j, j0, j1, c, s;
+
+ ng_p2 = (1<<ng_2log);
+
+ /* The size of the x86 SIMD energy group buffer array is:
+ * ng*ng*ng_p2*unrollj_half*simd_width
+ */
+ for (i = 0; i < ng; i++)
+ {{
+ for (j = 0; j < ng; j++)
+ {{
+ Vvdw[i*ng+j] = 0;
+ Vc[i*ng+j] = 0;
+ }}
+
+ for (j1 = 0; j1 < ng; j1++)
+ {{
+ for (j0 = 0; j0 < ng; j0++)
+ {{
+ c = ((i*ng + j1)*ng_p2 + j0)*unrollj_half*unrollj;
+ for (s = 0; s < unrollj_half; s++)
+ {{
+ Vvdw[i*ng+j0] += VSvdw[c+0];
+ Vvdw[i*ng+j1] += VSvdw[c+1];
+ Vc [i*ng+j0] += VSc [c+0];
+ Vc [i*ng+j1] += VSc [c+1];
+ c += unrollj + 2;
+ }}
+ }}
+ }}
+ }}
+}}
+
+#else /* {0} */
+
+#include "gmx_fatal.h"
+
+#endif /* {0} */
+
+void
+{5}(nbnxn_pairlist_set_t *nbl_list,
+{6}const nbnxn_atomdata_t *nbat,
+{6}const interaction_const_t *ic,
+{6}int ewald_excl,
+{6}rvec *shift_vec,
+{6}int force_flags,
+{6}int clearF,
+{6}real *fshift,
+{6}real *Vc,
+{6}real *Vvdw)
+#ifdef {0}
+{{
+ int nnbl;
+ nbnxn_pairlist_t **nbl;
+ int coult;
+ int nb;
+
+ nnbl = nbl_list->nnbl;
+ nbl = nbl_list->nbl;
+
+ if (EEL_RF(ic->eeltype) || ic->eeltype == eelCUT)
+ {{
+ coult = coultRF;
+ }}
+ else
+ {{
+ if (ewald_excl == ewaldexclTable)
+ {{
+ if (ic->rcoulomb == ic->rvdw)
+ {{
+ coult = coultTAB;
+ }}
+ else
+ {{
+ coult = coultTAB_TWIN;
+ }}
+ }}
+ else
+ {{
+ if (ic->rcoulomb == ic->rvdw)
+ {{
+ coult = coultEWALD;
+ }}
+ else
+ {{
+ coult = coultEWALD_TWIN;
+ }}
+ }}
+ }}
+
+#pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded))
+ for (nb = 0; nb < nnbl; nb++)
+ {{
+ nbnxn_atomdata_output_t *out;
+ real *fshift_p;
+
+ out = &nbat->out[nb];
+
+ if (clearF == enbvClearFYes)
+ {{
+ clear_f(nbat, nb, out->f);
+ }}
+
+ if ((force_flags & GMX_FORCE_VIRIAL) && nnbl == 1)
+ {{
+ fshift_p = fshift;
+ }}
+ else
+ {{
+ fshift_p = out->fshift;
+
+ if (clearF == enbvClearFYes)
+ {{
+ clear_fshift(fshift_p);
+ }}
+ }}
+
+ /* With Ewald type electrostatics we the forces for excluded atom pairs
+ * should not contribute to the virial sum. The exclusion forces
+ * are not calculate in the energy kernels, but are in _noener.
+ */
+ if (!((force_flags & GMX_FORCE_ENERGY) ||
+ (EEL_FULL(ic->eeltype) && (force_flags & GMX_FORCE_VIRIAL))))
+ {{
+ /* Don't calculate energies */
+ p_nbk_noener[coult][nbat->comb_rule](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p);
+ }}
+ else if (out->nV == 1 || !(force_flags & GMX_FORCE_ENERGY))
+ {{
+ /* No energy groups */
+ out->Vvdw[0] = 0;
+ out->Vc[0] = 0;
+
+ p_nbk_ener[coult][nbat->comb_rule](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p,
+ out->Vvdw,
+ out->Vc);
+ }}
+ else
+ {{
+ /* Calculate energy group contributions */
+ int i;
+
+ for (i = 0; i < out->nVS; i++)
+ {{
+ out->VSvdw[i] = 0;
+ }}
+ for (i = 0; i < out->nVS; i++)
+ {{
+ out->VSc[i] = 0;
+ }}
+
+ p_nbk_energrp[coult][nbat->comb_rule](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p,
+ out->VSvdw,
+ out->VSc);
+
+ reduce_group_energies(nbat->nenergrp, nbat->neg_2log,
+ out->VSvdw, out->VSc,
+ out->Vvdw, out->Vc);
+ }}
+ }}
+
+ if (force_flags & GMX_FORCE_ENERGY)
+ {{
+ reduce_energies_over_lists(nbat, nnbl, Vvdw, Vc);
+ }}
+}}
+#else
+{{
+ gmx_incons("{5} called when such kernels "
+ " are not enabled.");
+}}
+#endif
+#undef GMX_SIMD_J_UNROLL_SIZE
--- /dev/null
+#include "typedefs.h"
+
+#ifdef __cplusplus
+extern "C" {{
+#endif
+#if 0
+}}
+#endif
+
+/*! \brief Run-time dispatcher for nbnxn kernel functions. */
+void
+{0}(nbnxn_pairlist_set_t *nbl_list,
+{1}const nbnxn_atomdata_t *nbat,
+{1}const interaction_const_t *ic,
+{1}int ewald_excl,
+{1}rvec *shift_vec,
+{1}int force_flags,
+{1}int clearF,
+{1}real *fshift,
+{1}real *Vc,
+{1}real *Vvdw);
+
+/* Need an #include guard so that sim_util.c can include all
+ * such files. */
+#ifndef _nbnxn_kernel_simd_include_h
+#define _nbnxn_kernel_simd_include_h
+/*! \brief Typedefs for declaring kernel functions. */
+typedef void (nbk_func_ener)(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc);
+typedef nbk_func_ener *p_nbk_func_ener;
+
+typedef void (nbk_func_noener)(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift);
+typedef nbk_func_noener *p_nbk_func_noener;
+#endif
+
+{2}
+
+#if 0
+{{
+#endif
+#ifdef __cplusplus
+}}
+#endif
#include "../nbnxn_consts.h"
#include "nbnxn_kernel_common.h"
+/*! \brief Typedefs for declaring lookup tables of kernel functions.
+ */
+typedef void (*p_nbk_func_ener)(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc);
+
+typedef void (*p_nbk_func_noener)(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift);
+
/* Analytical reaction-field kernels */
#define CALC_COUL_RF
#undef CALC_COUL_TAB
-typedef void (*p_nbk_func_ener)(const nbnxn_pairlist_t *nbl,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- rvec *shift_vec,
- real *f,
- real *fshift,
- real *Vvdw,
- real *Vc);
-
-typedef void (*p_nbk_func_noener)(const nbnxn_pairlist_t *nbl,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- rvec *shift_vec,
- real *f,
- real *fshift);
-
enum {
coultRF, coultTAB, coultTAB_TWIN, coultNR
};
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2012, The GROMACS development team,
- * check out http://www.gromacs.org for more information.
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
- * David van der Spoel, Berk Hess, Erik Lindahl, and including many
- * others, as listed in the AUTHORS file in the top-level source
- * directory and at http://www.gromacs.org.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-#ifndef _nbnxn_kernel_simd_2xnn_h
-#define _nbnxn_kernel_simd_2xnn_h
-
-#include "typedefs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Wrapper call for the non-bonded cluster vs cluster kernels.
- * These kernels determine 4xN cluster interactions for SIMD width 2*N
- * by packing 2*N j-atom variables in SIMD registers.
- */
-void
-nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t *nbl_list,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- int ewald_excl,
- rvec *shift_vec,
- int force_flags,
- int clearF,
- real *fshift,
- real *Vc,
- real *Vvdw);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2009, The GROMACS Development Team
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
- * David van der Spoel, Berk Hess, Erik Lindahl, and including many
- * others, as listed in the AUTHORS file in the top-level source
- * directory and at http://www.gromacs.org.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-
-/* This files includes all x86 SIMD kernel flavors.
- * Only the Electrostatics type and optionally the VdW cut-off check
- * need to be set before including this file.
- */
-
-/* Include the force+energy kernels */
-#define CALC_ENERGIES
-#define LJ_COMB_GEOM
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#undef LJ_COMB_GEOM
-#define LJ_COMB_LB
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#undef LJ_COMB_LB
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#undef CALC_ENERGIES
-
-/* Include the force+energygroups kernels */
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-#define LJ_COMB_GEOM
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#undef LJ_COMB_GEOM
-#define LJ_COMB_LB
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#undef LJ_COMB_LB
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#undef ENERGY_GROUPS
-#undef CALC_ENERGIES
-
-/* Include the force only kernels */
-#define LJ_COMB_GEOM
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#undef LJ_COMB_GEOM
-#define LJ_COMB_LB
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#undef LJ_COMB_LB
-#include "nbnxn_kernel_simd_2xnn_outer.h"
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2012, The GROMACS development team,
- * check out http://www.gromacs.org for more information.
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
- * David van der Spoel, Berk Hess, Erik Lindahl, and including many
- * others, as listed in the AUTHORS file in the top-level source
- * directory and at http://www.gromacs.org.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-#ifndef _nbnxn_kernel_simd_4xn_h
-#define _nbnxn_kernel_simd_4xn_h
-
-#include "typedefs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Wrapper call for the non-bonded cluster vs cluster kernels.
- * These kernels determine 4xN cluster interactions for SIMD width N.
- */
-void
-nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t *nbl_list,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- int ewald_excl,
- rvec *shift_vec,
- int force_flags,
- int clearF,
- real *fshift,
- real *Vc,
- real *Vvdw);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2009, The GROMACS Development Team
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
- * David van der Spoel, Berk Hess, Erik Lindahl, and including many
- * others, as listed in the AUTHORS file in the top-level source
- * directory and at http://www.gromacs.org.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-
-/* This files includes all x86 SIMD kernel flavors.
- * Only the Electrostatics type and optionally the VdW cut-off check
- * need to be set before including this file.
- */
-
-/* Include the force+energy kernels */
-#define CALC_ENERGIES
-#define LJ_COMB_GEOM
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#undef LJ_COMB_GEOM
-#define LJ_COMB_LB
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#undef LJ_COMB_LB
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#undef CALC_ENERGIES
-
-/* Include the force+energygroups kernels */
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-#define LJ_COMB_GEOM
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#undef LJ_COMB_GEOM
-#define LJ_COMB_LB
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#undef LJ_COMB_LB
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#undef ENERGY_GROUPS
-#undef CALC_ENERGIES
-
-/* Include the force only kernels */
-#define LJ_COMB_GEOM
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#undef LJ_COMB_GEOM
-#define LJ_COMB_LB
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#undef LJ_COMB_LB
-#include "nbnxn_kernel_simd_4xn_outer.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2012, The GROMACS development team,
- * check out http://www.gromacs.org for more information.
* Copyright (c) 2012,2013, by the GROMACS development team, led by
* David van der Spoel, Berk Hess, Erik Lindahl, and including many
* others, as listed in the AUTHORS file in the top-level source
* To help us fund GROMACS development, we humbly ask that you cite
* the research papers on the package. Check out http://www.gromacs.org.
*/
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <math.h>
-
#include "typedefs.h"
-#include "vec.h"
-#include "smalloc.h"
-#include "force.h"
-#include "gmx_omp_nthreads.h"
-#include "../nbnxn_consts.h"
-#include "nbnxn_kernel_common.h"
#ifdef GMX_NBNXN_SIMD_2XNN
-/* Include the full width SIMD macros */
+/* Include the full-width SIMD macros */
+
#include "gmx_simd_macros.h"
#include "gmx_simd_vec.h"
-
-#include "nbnxn_kernel_simd_2xnn.h"
-
#if !(GMX_SIMD_WIDTH_HERE == 8 || GMX_SIMD_WIDTH_HERE == 16)
#error "unsupported SIMD width"
#endif
-#define SUM_SIMD4(x) (x[0]+x[1]+x[2]+x[3])
-
-#define UNROLLI NBNXN_CPU_CLUSTER_I_SIZE
-#define UNROLLJ (GMX_SIMD_WIDTH_HERE/2)
-
-/* The stride of all the atom data arrays is equal to half the SIMD width */
-#define STRIDE (GMX_SIMD_WIDTH_HERE/2)
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+#include "../nbnxn_kernel_common.h"
+#include "gmx_omp_nthreads.h"
+#include "types/force_flags.h"
-#if GMX_SIMD_WIDTH_HERE == 8
-#define SUM_SIMD(x) (x[0]+x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7])
-#else
-#if GMX_SIMD_WIDTH_HERE == 16
-/* This is getting ridiculous, SIMD horizontal adds would help,
- * but this is not performance critical (only used to reduce energies)
+/*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels
*/
-#define SUM_SIMD(x) (x[0]+x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7]+x[8]+x[9]+x[10]+x[11]+x[12]+x[13]+x[14]+x[15])
-#else
-#error "unsupported kernel configuration"
-#endif
-#endif
-
-
-#include "nbnxn_kernel_simd_utils.h"
-
-static inline void
-gmx_load_simd_2xnn_interactions(int excl,
- gmx_exclfilter filter_S0,
- gmx_exclfilter filter_S2,
- gmx_mm_pb *interact_S0,
- gmx_mm_pb *interact_S2)
-{
- /* Load integer topology exclusion interaction mask */
- gmx_exclfilter mask_pr_S = gmx_load1_exclfilter(excl);
- *interact_S0 = gmx_checkbitmask_pb(mask_pr_S, filter_S0);
- *interact_S2 = gmx_checkbitmask_pb(mask_pr_S, filter_S2);
-}
-
-/* Include all flavors of the SSE or AVX 2x(N+N) kernel loops */
-
-/* Analytical reaction-field kernels */
-#define CALC_COUL_RF
-
-#include "nbnxn_kernel_simd_2xnn_includes.h"
-
-#undef CALC_COUL_RF
-
-/* Tabulated exclusion interaction electrostatics kernels */
-#define CALC_COUL_TAB
-
-/* Single cut-off: rcoulomb = rvdw */
-#include "nbnxn_kernel_simd_2xnn_includes.h"
-
-/* Twin cut-off: rcoulomb >= rvdw */
-#define VDW_CUTOFF_CHECK
-#include "nbnxn_kernel_simd_2xnn_includes.h"
-#undef VDW_CUTOFF_CHECK
-
-#undef CALC_COUL_TAB
-
-/* Analytical Ewald exclusion interaction electrostatics kernels */
-#define CALC_COUL_EWALD
-
-/* Single cut-off: rcoulomb = rvdw */
-#include "nbnxn_kernel_simd_2xnn_includes.h"
-
-/* Twin cut-off: rcoulomb >= rvdw */
-#define VDW_CUTOFF_CHECK
-#include "nbnxn_kernel_simd_2xnn_includes.h"
-#undef VDW_CUTOFF_CHECK
-
-#undef CALC_COUL_EWALD
-
-
-typedef void (*p_nbk_func_ener)(const nbnxn_pairlist_t *nbl,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- rvec *shift_vec,
- real *f,
- real *fshift,
- real *Vvdw,
- real *Vc);
-
-typedef void (*p_nbk_func_noener)(const nbnxn_pairlist_t *nbl,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- rvec *shift_vec,
- real *f,
- real *fshift);
-
enum {
coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR
};
-#define NBK_FN(elec, ljcomb) nbnxn_kernel_simd_2xnn_ ## elec ## _comb_ ## ljcomb ## _ener
+/* Declare and define the kernel function pointer lookup tables. */
static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] =
-{ { NBK_FN(rf, geom), NBK_FN(rf, lb), NBK_FN(rf, none) },
- { NBK_FN(tab, geom), NBK_FN(tab, lb), NBK_FN(tab, none) },
- { NBK_FN(tab_twin, geom), NBK_FN(tab_twin, lb), NBK_FN(tab_twin, none) },
- { NBK_FN(ewald, geom), NBK_FN(ewald, lb), NBK_FN(ewald, none) },
- { NBK_FN(ewald_twin, geom), NBK_FN(ewald_twin, lb), NBK_FN(ewald_twin, none) } };
-#undef NBK_FN
-
-#define NBK_FN(elec, ljcomb) nbnxn_kernel_simd_2xnn_ ## elec ## _comb_ ## ljcomb ## _energrp
+{
+ {
+ nbnxn_kernel_simd_2xnn_rf_comb_geom_ener,
+ nbnxn_kernel_simd_2xnn_rf_comb_lb_ener,
+ nbnxn_kernel_simd_2xnn_rf_comb_none_ener,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_tab_comb_geom_ener,
+ nbnxn_kernel_simd_2xnn_tab_comb_lb_ener,
+ nbnxn_kernel_simd_2xnn_tab_comb_none_ener,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener,
+ nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener,
+ nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener,
+ nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener,
+ nbnxn_kernel_simd_2xnn_ewald_comb_none_ener,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener,
+ nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener,
+ nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener,
+ },
+};
+
static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] =
-{ { NBK_FN(rf, geom), NBK_FN(rf, lb), NBK_FN(rf, none) },
- { NBK_FN(tab, geom), NBK_FN(tab, lb), NBK_FN(tab, none) },
- { NBK_FN(tab_twin, geom), NBK_FN(tab_twin, lb), NBK_FN(tab_twin, none) },
- { NBK_FN(ewald, geom), NBK_FN(ewald, lb), NBK_FN(ewald, none) },
- { NBK_FN(ewald_twin, geom), NBK_FN(ewald_twin, lb), NBK_FN(ewald_twin, none) } };
-#undef NBK_FN
-
-#define NBK_FN(elec, ljcomb) nbnxn_kernel_simd_2xnn_ ## elec ## _comb_ ## ljcomb ## _noener
+{
+ {
+ nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp,
+ nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp,
+ nbnxn_kernel_simd_2xnn_rf_comb_none_energrp,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp,
+ nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp,
+ nbnxn_kernel_simd_2xnn_tab_comb_none_energrp,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp,
+ nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp,
+ nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp,
+ nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp,
+ nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp,
+ nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp,
+ nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp,
+ },
+};
+
static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] =
-{ { NBK_FN(rf, geom), NBK_FN(rf, lb), NBK_FN(rf, none) },
- { NBK_FN(tab, geom), NBK_FN(tab, lb), NBK_FN(tab, none) },
- { NBK_FN(tab_twin, geom), NBK_FN(tab_twin, lb), NBK_FN(tab_twin, none) },
- { NBK_FN(ewald, geom), NBK_FN(ewald, lb), NBK_FN(ewald, none) },
- { NBK_FN(ewald_twin, geom), NBK_FN(ewald_twin, lb), NBK_FN(ewald_twin, none) } };
-#undef NBK_FN
+{
+ {
+ nbnxn_kernel_simd_2xnn_rf_comb_geom_noener,
+ nbnxn_kernel_simd_2xnn_rf_comb_lb_noener,
+ nbnxn_kernel_simd_2xnn_rf_comb_none_noener,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_tab_comb_geom_noener,
+ nbnxn_kernel_simd_2xnn_tab_comb_lb_noener,
+ nbnxn_kernel_simd_2xnn_tab_comb_none_noener,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener,
+ nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener,
+ nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener,
+ nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener,
+ nbnxn_kernel_simd_2xnn_ewald_comb_none_noener,
+ },
+ {
+ nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener,
+ nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener,
+ nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener,
+ },
+};
-static void reduce_group_energies(int ng, int ng_2log,
- const real *VSvdw, const real *VSc,
- real *Vvdw, real *Vc)
+static void
+reduce_group_energies(int ng, int ng_2log,
+ const real *VSvdw, const real *VSc,
+ real *Vvdw, real *Vc)
{
- const int unrollj = GMX_SIMD_WIDTH_HERE/2;
+ const int unrollj = GMX_SIMD_WIDTH_HERE/GMX_SIMD_J_UNROLL_SIZE;
const int unrollj_half = unrollj/2;
int ng_p2, i, j, j0, j1, c, s;
}
}
+#else /* GMX_NBNXN_SIMD_2XNN */
+
+#include "gmx_fatal.h"
+
#endif /* GMX_NBNXN_SIMD_2XNN */
void
}
#else
{
- gmx_incons("nbnxn_kernel_simd_2xnn called while GROMACS was configured without 2x(N+N) SIMD kernels enabled");
+ gmx_incons("nbnxn_kernel_simd_2xnn called when such kernels "
+ " are not enabled.");
}
#endif
+#undef GMX_SIMD_J_UNROLL_SIZE
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+#include "typedefs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+}
+#endif
+
+/*! \brief Run-time dispatcher for nbnxn kernel functions. */
+void
+nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t *nbl_list,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ int ewald_excl,
+ rvec *shift_vec,
+ int force_flags,
+ int clearF,
+ real *fshift,
+ real *Vc,
+ real *Vvdw);
+
+/* Need an #include guard so that sim_util.c can include all
+ * such files. */
+#ifndef _nbnxn_kernel_simd_include_h
+#define _nbnxn_kernel_simd_include_h
+/*! \brief Typedefs for declaring kernel functions. */
+typedef void (nbk_func_ener)(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc);
+typedef nbk_func_ener *p_nbk_func_ener;
+
+typedef void (nbk_func_noener)(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift);
+typedef nbk_func_noener *p_nbk_func_noener;
+#endif
+
+nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_none_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_none_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp;
+
+nbk_func_noener nbnxn_kernel_simd_2xnn_rf_comb_geom_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_rf_comb_lb_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_rf_comb_none_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_tab_comb_geom_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_tab_comb_lb_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_tab_comb_none_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_comb_none_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener;
+nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener;
+
+nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_geom_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_lb_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_none_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_geom_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_lb_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_none_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_none_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener;
+nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener;
+
+
+
+#if 0
+{
+#endif
+#ifdef __cplusplus
+}
+#endif
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+#include "gmx_simd_macros.h"
+#include "gmx_simd_vec.h"
+#include "../../nbnxn_consts.h"
+#ifdef CALC_COUL_EWALD
+#include "maths.h"
+#endif
+
+
+#define SUM_SIMD4(x) (x[0]+x[1]+x[2]+x[3])
+
+#define UNROLLI NBNXN_CPU_CLUSTER_I_SIZE
+#define UNROLLJ (GMX_SIMD_WIDTH_HERE/GMX_SIMD_J_UNROLL_SIZE)
+
+/* The stride of all the atom data arrays is equal to half the SIMD width */
+#define STRIDE (GMX_SIMD_WIDTH_HERE/GMX_SIMD_J_UNROLL_SIZE)
+
+#if GMX_SIMD_WIDTH_HERE == 8
+#define SUM_SIMD(x) (x[0]+x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7])
+#else
+#if GMX_SIMD_WIDTH_HERE == 16
+/* This is getting ridiculous, SIMD horizontal adds would help,
+ * but this is not performance critical (only used to reduce energies)
+ */
+#define SUM_SIMD(x) (x[0]+x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7]+x[8]+x[9]+x[10]+x[11]+x[12]+x[13]+x[14]+x[15])
+#else
+#error "unsupported kernel configuration"
+#endif
+#endif
+
+#include "../nbnxn_kernel_simd_utils.h"
+
+static inline void
+gmx_load_simd_2xnn_interactions(int excl,
+ gmx_exclfilter filter_S0,
+ gmx_exclfilter filter_S2,
+ gmx_mm_pb *interact_S0,
+ gmx_mm_pb *interact_S2)
+{
+ /* Load integer interaction mask */
+ gmx_exclfilter mask_pr_S = gmx_load1_exclfilter(excl);
+ *interact_S0 = gmx_checkbitmask_pb(mask_pr_S, filter_S0);
+ *interact_S2 = gmx_checkbitmask_pb(mask_pr_S, filter_S2);
+}
+
+/* All functionality defines are set here, except for:
+ * CALC_ENERGIES, ENERGY_GROUPS which are defined before.
+ * CHECK_EXCLS, which is set just before including the inner loop contents.
+ * The combination rule defines, LJ_COMB_GEOM or LJ_COMB_LB are currently
+ * set before calling the kernel function. We might want to move that
+ * to inside the n-loop and have a different combination rule for different
+ * ci's, as no combination rule gives a 50% performance hit for LJ.
+ */
+
+/* We always calculate shift forces, because it's cheap anyhow */
+#define CALC_SHIFTFORCES
+
+/* Assumes all LJ parameters are identical */
+/* #define FIX_LJ_C */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
int i, j;
real tmpa[2*GMX_SIMD_WIDTH_HERE], *tmp;
tmp = gmx_simd_align_real(tmpa);
- for (i = 0; i < UNROLLI; i+=2)
+ for (i = 0; i < UNROLLI; i += 2)
{
gmx_store_pr(tmp, i == 0 ? wco_S0 : wco_S2);
for (j = 0; j < 2*UNROLLJ; j++)
#else
(
#endif
- gmx_sub_pr(FrLJ12_S0, FrLJ6_S0)));
+ gmx_sub_pr(FrLJ12_S0, FrLJ6_S0)));
#else
fscal_S0 = gmx_mul_pr(rinvsq_S0, frcoul_S0);
#endif /* CALC_LJ */
#else
(
#endif
- gmx_sub_pr(FrLJ12_S2, FrLJ6_S2)));
+ gmx_sub_pr(FrLJ12_S2, FrLJ6_S2)));
#else
/* Atom 2 and 3 don't have LJ, so only add Coulomb forces */
fscal_S2 = gmx_mul_pr(rinvsq_S2, frcoul_S2);
*/
-/* All functionality defines are set here, except for:
- * CALC_ENERGIES, ENERGY_GROUPS which are defined before.
- * CHECK_EXCLS, which is set just before including the inner loop contents.
- * The combination rule defines, LJ_COMB_GEOM or LJ_COMB_LB are currently
- * set before calling the kernel function. We might want to move that
- * to inside the n-loop and have a different combination rule for different
- * ci's, as no combination rule gives a 50% performance hit for LJ.
- */
-
-/* We always calculate shift forces, because it's cheap anyhow */
-#define CALC_SHIFTFORCES
-
-/* Assumes all LJ parameters are identical */
-/* #define FIX_LJ_C */
-
-/* The NBK_FUNC_NAME... macros below generate the whole zoo of kernels names
- * with all combinations off electrostatics (coul), LJ combination rules (ljc)
- * and energy calculations (ene), depending on the defines set.
- */
-
-#define NBK_FUNC_NAME_C_LJC(base, coul, ljc, ene) base ## _ ## coul ## _comb_ ## ljc ## _ ## ene
-
-#if defined LJ_COMB_GEOM
-#define NBK_FUNC_NAME_C(base, coul, ene) NBK_FUNC_NAME_C_LJC(base, coul, geom, ene)
-#else
-#if defined LJ_COMB_LB
-#define NBK_FUNC_NAME_C(base, coul, ene) NBK_FUNC_NAME_C_LJC(base, coul, lb, ene)
-#else
-#define NBK_FUNC_NAME_C(base, coul, ene) NBK_FUNC_NAME_C_LJC(base, coul, none, ene)
-#endif
-#endif
-
-#ifdef CALC_COUL_RF
-#define NBK_FUNC_NAME(base, ene) NBK_FUNC_NAME_C(base, rf, ene)
-#endif
-#ifdef CALC_COUL_TAB
-#ifndef VDW_CUTOFF_CHECK
-#define NBK_FUNC_NAME(base, ene) NBK_FUNC_NAME_C(base, tab, ene)
-#else
-#define NBK_FUNC_NAME(base, ene) NBK_FUNC_NAME_C(base, tab_twin, ene)
-#endif
-#endif
-#ifdef CALC_COUL_EWALD
-#ifndef VDW_CUTOFF_CHECK
-#define NBK_FUNC_NAME(base, ene) NBK_FUNC_NAME_C(base, ewald, ene)
-#else
-#define NBK_FUNC_NAME(base, ene) NBK_FUNC_NAME_C(base, ewald_twin, ene)
-#endif
-#endif
-
-static void
-#ifndef CALC_ENERGIES
-NBK_FUNC_NAME(nbnxn_kernel_simd_2xnn, noener)
-#else
-#ifndef ENERGY_GROUPS
-NBK_FUNC_NAME(nbnxn_kernel_simd_2xnn, ener)
-#else
-NBK_FUNC_NAME(nbnxn_kernel_simd_2xnn, energrp)
-#endif
-#endif
-#undef NBK_FUNC_NAME
-#undef NBK_FUNC_NAME_C
-#undef NBK_FUNC_NAME_C_LJC
-(const nbnxn_pairlist_t *nbl,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- rvec *shift_vec,
- real *f
-#ifdef CALC_SHIFTFORCES
- ,
- real *fshift
-#endif
-#ifdef CALC_ENERGIES
- ,
- real *Vvdw,
- real *Vc
-#endif
-)
{
const nbnxn_ci_t *nbln;
const nbnxn_cj_t *l_cj;
unsigned *exclusion_filter;
gmx_exclfilter filter_S0, filter_S2;
- gmx_mm_pr zero_S = gmx_set1_pr(0);
+ gmx_mm_pr zero_S = gmx_set1_pr(0);
- gmx_mm_pr one_S = gmx_set1_pr(1.0);
- gmx_mm_pr iq_S0 = gmx_setzero_pr();
- gmx_mm_pr iq_S2 = gmx_setzero_pr();
- gmx_mm_pr mrc_3_S;
+ gmx_mm_pr one_S = gmx_set1_pr(1.0);
+ gmx_mm_pr iq_S0 = gmx_setzero_pr();
+ gmx_mm_pr iq_S2 = gmx_setzero_pr();
+ gmx_mm_pr mrc_3_S;
#ifdef CALC_ENERGIES
- gmx_mm_pr hrc_3_S, moh_rc_S;
+ gmx_mm_pr hrc_3_S, moh_rc_S;
#endif
#ifdef CALC_COUL_TAB
#ifndef TAB_FDV0
const real *tab_coul_V;
#endif
- int ti0_array[2*GMX_SIMD_WIDTH_HERE], *ti0;
- int ti2_array[2*GMX_SIMD_WIDTH_HERE], *ti2;
+ int ti0_array[2*GMX_SIMD_WIDTH_HERE], *ti0;
+ int ti2_array[2*GMX_SIMD_WIDTH_HERE], *ti2;
#ifdef CALC_ENERGIES
- gmx_mm_pr mhalfsp_S;
+ gmx_mm_pr mhalfsp_S;
#endif
#endif
printf("atom pairs %d\n", npair);
#endif
}
-
-
-#undef CALC_SHIFTFORCES
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_rf_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_rf_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_rf_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_rf_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_rf_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_rf_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_LB
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_rf_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_rf_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_rf_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_rf_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_rf_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_rf_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_rf_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_rf_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_LB
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2012, The GROMACS development team,
- * check out http://www.gromacs.org for more information.
* Copyright (c) 2012,2013, by the GROMACS development team, led by
* David van der Spoel, Berk Hess, Erik Lindahl, and including many
* others, as listed in the AUTHORS file in the top-level source
* To help us fund GROMACS development, we humbly ask that you cite
* the research papers on the package. Check out http://www.gromacs.org.
*/
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <math.h>
-
#include "typedefs.h"
-#include "vec.h"
-#include "smalloc.h"
-#include "force.h"
-#include "gmx_omp_nthreads.h"
-#include "../nbnxn_consts.h"
-#include "nbnxn_kernel_common.h"
#ifdef GMX_NBNXN_SIMD_4XN
#ifdef GMX_NBNXN_HALF_WIDTH_SIMD
#define GMX_USE_HALF_WIDTH_SIMD_HERE
#endif
+
#include "gmx_simd_macros.h"
#include "gmx_simd_vec.h"
-
-#include "nbnxn_kernel_simd_4xn.h"
-
#if !(GMX_SIMD_WIDTH_HERE == 2 || GMX_SIMD_WIDTH_HERE == 4 || GMX_SIMD_WIDTH_HERE == 8)
#error "unsupported SIMD width"
#endif
-#define SUM_SIMD4(x) (x[0]+x[1]+x[2]+x[3])
-
-#define UNROLLI NBNXN_CPU_CLUSTER_I_SIZE
-#define UNROLLJ GMX_SIMD_WIDTH_HERE
-
-/* The stride of all the atom data arrays is max(UNROLLI,UNROLLJ) */
-#if GMX_SIMD_WIDTH_HERE >= UNROLLI
-#define STRIDE GMX_SIMD_WIDTH_HERE
-#else
-#define STRIDE UNROLLI
-#endif
-
-#if GMX_SIMD_WIDTH_HERE == 2
-#define SUM_SIMD(x) (x[0]+x[1])
-#else
-#if GMX_SIMD_WIDTH_HERE == 4
-#define SUM_SIMD(x) SUM_SIMD4(x)
-#else
-#if GMX_SIMD_WIDTH_HERE == 8
-#define SUM_SIMD(x) (x[0]+x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7])
-#else
-#error "unsupported kernel configuration"
-#endif
-#endif
-#endif
-
-
-#include "nbnxn_kernel_simd_utils.h"
-
-static inline void
-gmx_load_simd_4xn_interactions(int excl,
- gmx_exclfilter filter_S0,
- gmx_exclfilter filter_S1,
- gmx_exclfilter filter_S2,
- gmx_exclfilter filter_S3,
- gmx_mm_pb *interact_S0,
- gmx_mm_pb *interact_S1,
- gmx_mm_pb *interact_S2,
- gmx_mm_pb *interact_S3)
-{
- /* Load integer interaction mask */
- gmx_exclfilter mask_pr_S = gmx_load1_exclfilter(excl);
- *interact_S0 = gmx_checkbitmask_pb(mask_pr_S, filter_S0);
- *interact_S1 = gmx_checkbitmask_pb(mask_pr_S, filter_S1);
- *interact_S2 = gmx_checkbitmask_pb(mask_pr_S, filter_S2);
- *interact_S3 = gmx_checkbitmask_pb(mask_pr_S, filter_S3);
-}
-
-/* Include all flavors of the SSE or AVX 4xN kernel loops */
-
-/* Analytical reaction-field kernels */
-#define CALC_COUL_RF
-
-#include "nbnxn_kernel_simd_4xn_includes.h"
-
-#undef CALC_COUL_RF
-
-/* Tabulated exclusion interaction electrostatics kernels */
-#define CALC_COUL_TAB
-
-/* Single cut-off: rcoulomb = rvdw */
-#include "nbnxn_kernel_simd_4xn_includes.h"
-
-/* Twin cut-off: rcoulomb >= rvdw */
-#define VDW_CUTOFF_CHECK
-#include "nbnxn_kernel_simd_4xn_includes.h"
-#undef VDW_CUTOFF_CHECK
-
-#undef CALC_COUL_TAB
-
-/* Analytical Ewald exclusion interaction electrostatics kernels */
-#define CALC_COUL_EWALD
-
-/* Single cut-off: rcoulomb = rvdw */
-#include "nbnxn_kernel_simd_4xn_includes.h"
-
-/* Twin cut-off: rcoulomb >= rvdw */
-#define VDW_CUTOFF_CHECK
-#include "nbnxn_kernel_simd_4xn_includes.h"
-#undef VDW_CUTOFF_CHECK
-
-#undef CALC_COUL_EWALD
-
-
-typedef void (*p_nbk_func_ener)(const nbnxn_pairlist_t *nbl,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- rvec *shift_vec,
- real *f,
- real *fshift,
- real *Vvdw,
- real *Vc);
-
-typedef void (*p_nbk_func_noener)(const nbnxn_pairlist_t *nbl,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- rvec *shift_vec,
- real *f,
- real *fshift);
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+#include "../nbnxn_kernel_common.h"
+#include "gmx_omp_nthreads.h"
+#include "types/force_flags.h"
+/*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels
+ */
enum {
coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR
};
-#define NBK_FN(elec, ljcomb) nbnxn_kernel_simd_4xn_ ## elec ## _comb_ ## ljcomb ## _ener
+/* Declare and define the kernel function pointer lookup tables. */
static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] =
-{ { NBK_FN(rf, geom), NBK_FN(rf, lb), NBK_FN(rf, none) },
- { NBK_FN(tab, geom), NBK_FN(tab, lb), NBK_FN(tab, none) },
- { NBK_FN(tab_twin, geom), NBK_FN(tab_twin, lb), NBK_FN(tab_twin, none) },
- { NBK_FN(ewald, geom), NBK_FN(ewald, lb), NBK_FN(ewald, none) },
- { NBK_FN(ewald_twin, geom), NBK_FN(ewald_twin, lb), NBK_FN(ewald_twin, none) } };
-#undef NBK_FN
-
-#define NBK_FN(elec, ljcomb) nbnxn_kernel_simd_4xn_ ## elec ## _comb_ ## ljcomb ## _energrp
+{
+ {
+ nbnxn_kernel_simd_4xn_rf_comb_geom_ener,
+ nbnxn_kernel_simd_4xn_rf_comb_lb_ener,
+ nbnxn_kernel_simd_4xn_rf_comb_none_ener,
+ },
+ {
+ nbnxn_kernel_simd_4xn_tab_comb_geom_ener,
+ nbnxn_kernel_simd_4xn_tab_comb_lb_ener,
+ nbnxn_kernel_simd_4xn_tab_comb_none_ener,
+ },
+ {
+ nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener,
+ nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener,
+ nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener,
+ },
+ {
+ nbnxn_kernel_simd_4xn_ewald_comb_geom_ener,
+ nbnxn_kernel_simd_4xn_ewald_comb_lb_ener,
+ nbnxn_kernel_simd_4xn_ewald_comb_none_ener,
+ },
+ {
+ nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener,
+ nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener,
+ nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener,
+ },
+};
+
static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] =
-{ { NBK_FN(rf, geom), NBK_FN(rf, lb), NBK_FN(rf, none) },
- { NBK_FN(tab, geom), NBK_FN(tab, lb), NBK_FN(tab, none) },
- { NBK_FN(tab_twin, geom), NBK_FN(tab_twin, lb), NBK_FN(tab_twin, none) },
- { NBK_FN(ewald, geom), NBK_FN(ewald, lb), NBK_FN(ewald, none) },
- { NBK_FN(ewald_twin, geom), NBK_FN(ewald_twin, lb), NBK_FN(ewald_twin, none) } };
-#undef NBK_FN
-
-#define NBK_FN(elec, ljcomb) nbnxn_kernel_simd_4xn_ ## elec ## _comb_ ## ljcomb ## _noener
+{
+ {
+ nbnxn_kernel_simd_4xn_rf_comb_geom_energrp,
+ nbnxn_kernel_simd_4xn_rf_comb_lb_energrp,
+ nbnxn_kernel_simd_4xn_rf_comb_none_energrp,
+ },
+ {
+ nbnxn_kernel_simd_4xn_tab_comb_geom_energrp,
+ nbnxn_kernel_simd_4xn_tab_comb_lb_energrp,
+ nbnxn_kernel_simd_4xn_tab_comb_none_energrp,
+ },
+ {
+ nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp,
+ nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp,
+ nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp,
+ },
+ {
+ nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp,
+ nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp,
+ nbnxn_kernel_simd_4xn_ewald_comb_none_energrp,
+ },
+ {
+ nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp,
+ nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp,
+ nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp,
+ },
+};
+
static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] =
-{ { NBK_FN(rf, geom), NBK_FN(rf, lb), NBK_FN(rf, none) },
- { NBK_FN(tab, geom), NBK_FN(tab, lb), NBK_FN(tab, none) },
- { NBK_FN(tab_twin, geom), NBK_FN(tab_twin, lb), NBK_FN(tab_twin, none) },
- { NBK_FN(ewald, geom), NBK_FN(ewald, lb), NBK_FN(ewald, none) },
- { NBK_FN(ewald_twin, geom), NBK_FN(ewald_twin, lb), NBK_FN(ewald_twin, none) } };
-#undef NBK_FN
+{
+ {
+ nbnxn_kernel_simd_4xn_rf_comb_geom_noener,
+ nbnxn_kernel_simd_4xn_rf_comb_lb_noener,
+ nbnxn_kernel_simd_4xn_rf_comb_none_noener,
+ },
+ {
+ nbnxn_kernel_simd_4xn_tab_comb_geom_noener,
+ nbnxn_kernel_simd_4xn_tab_comb_lb_noener,
+ nbnxn_kernel_simd_4xn_tab_comb_none_noener,
+ },
+ {
+ nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener,
+ nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener,
+ nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener,
+ },
+ {
+ nbnxn_kernel_simd_4xn_ewald_comb_geom_noener,
+ nbnxn_kernel_simd_4xn_ewald_comb_lb_noener,
+ nbnxn_kernel_simd_4xn_ewald_comb_none_noener,
+ },
+ {
+ nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener,
+ nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener,
+ nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener,
+ },
+};
-static void reduce_group_energies(int ng, int ng_2log,
- const real *VSvdw, const real *VSc,
- real *Vvdw, real *Vc)
+static void
+reduce_group_energies(int ng, int ng_2log,
+ const real *VSvdw, const real *VSc,
+ real *Vvdw, real *Vc)
{
- const int unrollj = GMX_SIMD_WIDTH_HERE;
+ const int unrollj = GMX_SIMD_WIDTH_HERE/GMX_SIMD_J_UNROLL_SIZE;
const int unrollj_half = unrollj/2;
int ng_p2, i, j, j0, j1, c, s;
}
}
+#else /* GMX_NBNXN_SIMD_4XN */
+
+#include "gmx_fatal.h"
+
#endif /* GMX_NBNXN_SIMD_4XN */
void
}
#else
{
- gmx_incons("nbnxn_kernel_simd_4xn called while GROMACS was configured without 4xN SIMD kernels enabled");
+ gmx_incons("nbnxn_kernel_simd_4xn called when such kernels "
+ " are not enabled.");
}
#endif
+#undef GMX_SIMD_J_UNROLL_SIZE
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+#include "typedefs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+}
+#endif
+
+/*! \brief Run-time dispatcher for nbnxn kernel functions. */
+void
+nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t *nbl_list,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ int ewald_excl,
+ rvec *shift_vec,
+ int force_flags,
+ int clearF,
+ real *fshift,
+ real *Vc,
+ real *Vvdw);
+
+/* Need an #include guard so that sim_util.c can include all
+ * such files. */
+#ifndef _nbnxn_kernel_simd_include_h
+#define _nbnxn_kernel_simd_include_h
+/*! \brief Typedefs for declaring kernel functions. */
+typedef void (nbk_func_ener)(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc);
+typedef nbk_func_ener *p_nbk_func_ener;
+
+typedef void (nbk_func_noener)(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift);
+typedef nbk_func_noener *p_nbk_func_noener;
+#endif
+
+nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_geom_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_lb_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_none_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_geom_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_lb_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_none_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_none_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp;
+
+nbk_func_noener nbnxn_kernel_simd_4xn_rf_comb_geom_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_rf_comb_lb_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_rf_comb_none_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_tab_comb_geom_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_tab_comb_lb_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_tab_comb_none_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_ewald_comb_geom_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_ewald_comb_lb_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_ewald_comb_none_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener;
+nbk_func_noener nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener;
+
+nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_geom_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_lb_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_none_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_geom_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_lb_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_none_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_geom_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_lb_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_none_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener;
+nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener;
+
+
+
+#if 0
+{
+#endif
+#ifdef __cplusplus
+}
+#endif
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+#include "gmx_simd_macros.h"
+#include "gmx_simd_vec.h"
+#include "../../nbnxn_consts.h"
+#ifdef CALC_COUL_EWALD
+#include "maths.h"
+#endif
+
+#define SUM_SIMD4(x) (x[0]+x[1]+x[2]+x[3])
+
+#define UNROLLI NBNXN_CPU_CLUSTER_I_SIZE
+#define UNROLLJ (GMX_SIMD_WIDTH_HERE/GMX_SIMD_J_UNROLL_SIZE)
+
+/* The stride of all the atom data arrays is max(UNROLLI,unrollj) */
+#if GMX_SIMD_WIDTH_HERE >= UNROLLI
+#define STRIDE (GMX_SIMD_WIDTH_HERE/GMX_SIMD_J_UNROLL_SIZE)
+#else
+#define STRIDE (UNROLLI)
+#endif
+
+#if GMX_SIMD_WIDTH_HERE == 2
+#define SUM_SIMD(x) (x[0]+x[1])
+#else
+#if GMX_SIMD_WIDTH_HERE == 4
+#define SUM_SIMD(x) SUM_SIMD4(x)
+#else
+#if GMX_SIMD_WIDTH_HERE == 8
+#define SUM_SIMD(x) (x[0]+x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7])
+#else
+#error "unsupported kernel configuration"
+#endif
+#endif
+#endif
+
+#include "../nbnxn_kernel_simd_utils.h"
+
+static inline void
+gmx_load_simd_4xn_interactions(int excl,
+ gmx_exclfilter filter_S0,
+ gmx_exclfilter filter_S1,
+ gmx_exclfilter filter_S2,
+ gmx_exclfilter filter_S3,
+ gmx_mm_pb *interact_S0,
+ gmx_mm_pb *interact_S1,
+ gmx_mm_pb *interact_S2,
+ gmx_mm_pb *interact_S3)
+{
+ /* Load integer interaction mask */
+ gmx_exclfilter mask_pr_S = gmx_load1_exclfilter(excl);
+ *interact_S0 = gmx_checkbitmask_pb(mask_pr_S, filter_S0);
+ *interact_S1 = gmx_checkbitmask_pb(mask_pr_S, filter_S1);
+ *interact_S2 = gmx_checkbitmask_pb(mask_pr_S, filter_S2);
+ *interact_S3 = gmx_checkbitmask_pb(mask_pr_S, filter_S3);
+}
+
+/* All functionality defines are set here, except for:
+ * CALC_ENERGIES, ENERGY_GROUPS which are defined before.
+ * CHECK_EXCLS, which is set just before including the inner loop contents.
+ * The combination rule defines, LJ_COMB_GEOM or LJ_COMB_LB are currently
+ * set before calling the kernel function. We might want to move that
+ * to inside the n-loop and have a different combination rule for different
+ * ci's, as no combination rule gives a 50% performance hit for LJ.
+ */
+
+/* We always calculate shift forces, because it's cheap anyhow */
+#define CALC_SHIFTFORCES
+
+/* Assumes all LJ parameters are identical */
+/* #define FIX_LJ_C */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
#ifdef CALC_LJ
fscal_S0 = gmx_mul_pr(rinvsq_S0,
#ifdef CALC_COULOMB
- gmx_add_pr(frcoul_S0,
+ gmx_add_pr(frcoul_S0,
#else
- (
+ (
#endif
- gmx_sub_pr(FrLJ12_S0, FrLJ6_S0)));
+ gmx_sub_pr(FrLJ12_S0, FrLJ6_S0)));
fscal_S1 = gmx_mul_pr(rinvsq_S1,
#ifdef CALC_COULOMB
- gmx_add_pr(frcoul_S1,
+ gmx_add_pr(frcoul_S1,
#else
- (
+ (
#endif
- gmx_sub_pr(FrLJ12_S1, FrLJ6_S1)));
+ gmx_sub_pr(FrLJ12_S1, FrLJ6_S1)));
#else
fscal_S0 = gmx_mul_pr(rinvsq_S0, frcoul_S0);
fscal_S1 = gmx_mul_pr(rinvsq_S1, frcoul_S1);
#if defined CALC_LJ && !defined HALF_LJ
fscal_S2 = gmx_mul_pr(rinvsq_S2,
#ifdef CALC_COULOMB
- gmx_add_pr(frcoul_S2,
+ gmx_add_pr(frcoul_S2,
#else
- (
+ (
#endif
- gmx_sub_pr(FrLJ12_S2, FrLJ6_S2)));
+ gmx_sub_pr(FrLJ12_S2, FrLJ6_S2)));
fscal_S3 = gmx_mul_pr(rinvsq_S3,
#ifdef CALC_COULOMB
- gmx_add_pr(frcoul_S3,
+ gmx_add_pr(frcoul_S3,
#else
- (
+ (
#endif
- gmx_sub_pr(FrLJ12_S3, FrLJ6_S3)));
+ gmx_sub_pr(FrLJ12_S3, FrLJ6_S3)));
#else
/* Atom 2 and 3 don't have LJ, so only add Coulomb forces */
fscal_S2 = gmx_mul_pr(rinvsq_S2, frcoul_S2);
* the research papers on the package. Check out http://www.gromacs.org.
*/
-/* All functionality defines are set here, except for:
- * CALC_ENERGIES, ENERGY_GROUPS which are defined before.
- * CHECK_EXCLS, which is set just before including the inner loop contents.
- * The combination rule defines, LJ_COMB_GEOM or LJ_COMB_LB are currently
- * set before calling the kernel function. We might want to move that
- * to inside the n-loop and have a different combination rule for different
- * ci's, as no combination rule gives a 50% performance hit for LJ.
- */
-
-/* We always calculate shift forces, because it's cheap anyhow */
-#define CALC_SHIFTFORCES
-
-/* Assumes all LJ parameters are identical */
-/* #define FIX_LJ_C */
-
-/* The NBK_FUNC_NAME... macros below generate the whole zoo of kernels names
- * with all combinations off electrostatics (coul), LJ combination rules (ljc)
- * and energy calculations (ene), depending on the defines set.
- */
-
-#define NBK_FUNC_NAME_C_LJC(base, coul, ljc, ene) base ## _ ## coul ## _comb_ ## ljc ## _ ## ene
-
-#if defined LJ_COMB_GEOM
-#define NBK_FUNC_NAME_C(base, coul, ene) NBK_FUNC_NAME_C_LJC(base, coul, geom, ene)
-#else
-#if defined LJ_COMB_LB
-#define NBK_FUNC_NAME_C(base, coul, ene) NBK_FUNC_NAME_C_LJC(base, coul, lb, ene)
-#else
-#define NBK_FUNC_NAME_C(base, coul, ene) NBK_FUNC_NAME_C_LJC(base, coul, none, ene)
-#endif
-#endif
-
-#ifdef CALC_COUL_RF
-#define NBK_FUNC_NAME(base, ene) NBK_FUNC_NAME_C(base, rf, ene)
-#endif
-#ifdef CALC_COUL_TAB
-#ifndef VDW_CUTOFF_CHECK
-#define NBK_FUNC_NAME(base, ene) NBK_FUNC_NAME_C(base, tab, ene)
-#else
-#define NBK_FUNC_NAME(base, ene) NBK_FUNC_NAME_C(base, tab_twin, ene)
-#endif
-#endif
-#ifdef CALC_COUL_EWALD
-#ifndef VDW_CUTOFF_CHECK
-#define NBK_FUNC_NAME(base, ene) NBK_FUNC_NAME_C(base, ewald, ene)
-#else
-#define NBK_FUNC_NAME(base, ene) NBK_FUNC_NAME_C(base, ewald_twin, ene)
-#endif
-#endif
-
-static void
-#ifndef CALC_ENERGIES
-NBK_FUNC_NAME(nbnxn_kernel_simd_4xn, noener)
-#else
-#ifndef ENERGY_GROUPS
-NBK_FUNC_NAME(nbnxn_kernel_simd_4xn, ener)
-#else
-NBK_FUNC_NAME(nbnxn_kernel_simd_4xn, energrp)
-#endif
-#endif
-#undef NBK_FUNC_NAME
-#undef NBK_FUNC_NAME_C
-#undef NBK_FUNC_NAME_C_LJC
-(const nbnxn_pairlist_t *nbl,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- rvec *shift_vec,
- real *f
-#ifdef CALC_SHIFTFORCES
- ,
- real *fshift
-#endif
-#ifdef CALC_ENERGIES
- ,
- real *Vvdw,
- real *Vc
-#endif
-)
{
const nbnxn_ci_t *nbln;
const nbnxn_cj_t *l_cj;
/* Load i atom data */
sciy = scix + STRIDE;
sciz = sciy + STRIDE;
- ix_S0 = gmx_add_pr(gmx_load1_pr(x+scix), shX_S);
- ix_S1 = gmx_add_pr(gmx_load1_pr(x+scix+1), shX_S);
- ix_S2 = gmx_add_pr(gmx_load1_pr(x+scix+2), shX_S);
- ix_S3 = gmx_add_pr(gmx_load1_pr(x+scix+3), shX_S);
- iy_S0 = gmx_add_pr(gmx_load1_pr(x+sciy), shY_S);
- iy_S1 = gmx_add_pr(gmx_load1_pr(x+sciy+1), shY_S);
- iy_S2 = gmx_add_pr(gmx_load1_pr(x+sciy+2), shY_S);
- iy_S3 = gmx_add_pr(gmx_load1_pr(x+sciy+3), shY_S);
- iz_S0 = gmx_add_pr(gmx_load1_pr(x+sciz), shZ_S);
- iz_S1 = gmx_add_pr(gmx_load1_pr(x+sciz+1), shZ_S);
- iz_S2 = gmx_add_pr(gmx_load1_pr(x+sciz+2), shZ_S);
- iz_S3 = gmx_add_pr(gmx_load1_pr(x+sciz+3), shZ_S);
+ ix_S0 = gmx_add_pr(gmx_load1_pr(x+scix), shX_S);
+ ix_S1 = gmx_add_pr(gmx_load1_pr(x+scix+1), shX_S);
+ ix_S2 = gmx_add_pr(gmx_load1_pr(x+scix+2), shX_S);
+ ix_S3 = gmx_add_pr(gmx_load1_pr(x+scix+3), shX_S);
+ iy_S0 = gmx_add_pr(gmx_load1_pr(x+sciy), shY_S);
+ iy_S1 = gmx_add_pr(gmx_load1_pr(x+sciy+1), shY_S);
+ iy_S2 = gmx_add_pr(gmx_load1_pr(x+sciy+2), shY_S);
+ iy_S3 = gmx_add_pr(gmx_load1_pr(x+sciy+3), shY_S);
+ iz_S0 = gmx_add_pr(gmx_load1_pr(x+sciz), shZ_S);
+ iz_S1 = gmx_add_pr(gmx_load1_pr(x+sciz+1), shZ_S);
+ iz_S2 = gmx_add_pr(gmx_load1_pr(x+sciz+2), shZ_S);
+ iz_S3 = gmx_add_pr(gmx_load1_pr(x+sciz+3), shZ_S);
if (do_coul)
{
printf("atom pairs %d\n", npair);
#endif
}
-
-
-#if UNROLLJ == 4
-#undef gmx_mm_pr4
-#undef gmx_load_pr4
-#undef gmx_store_pr4
-#undef gmx_store_pr4
-#endif
-
-#undef CALC_SHIFTFORCES
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_rf_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_rf_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_rf_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_rf_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_rf_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_rf_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_rf_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_rf_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_rf_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_rf_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+#define LJ_COMB_LB
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_rf_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_rf_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_rf_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_rf_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_rf_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_rf_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_rf_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_rf_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define LJ_COMB_LB
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift,
+ real *Vvdw,
+ real *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
#include "nbnxn_atomdata.h"
#include "nbnxn_search.h"
#include "nbnxn_kernels/nbnxn_kernel_ref.h"
-#include "nbnxn_kernels/nbnxn_kernel_simd_4xn.h"
-#include "nbnxn_kernels/nbnxn_kernel_simd_2xnn.h"
+#include "nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.h"
+#include "nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.h"
#include "nbnxn_kernels/nbnxn_kernel_gpu_ref.h"
#ifdef GMX_LIB_MPI