Split up Verlet SIMD kernels for faster compilation
authorMark Abraham <mark.j.abraham@gmail.com>
Mon, 25 Feb 2013 20:00:44 +0000 (21:00 +0100)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Sun, 25 Aug 2013 12:19:41 +0000 (14:19 +0200)
Each kernel is now defined in a seperate compilation unit, and the
files for the kernel functions, the kernel dispatcher function, and
their definitions are all generated by Python script. See its comments
for details. The generation is done by developers and the results
stored in the repo, to avoid CMake-time dependencies. The source for
the file generation is separated from the results of the generation.

On a 48-core AMD machine using GCC 4.7 for an SSE2 build (i.e. 4xN
Verlet kernels), the time for "make mdrun -j" went from 73 s to 34 s.

On a more recent 8-core Intel machine using GCC 4.6.4 for AVX_256
build (both 2xNN and 4xN), the time for "make mdrun -j" went from
81 s to 63 s.

On 16 cores of a POWER7 BlueGene/Q front-end node, time to compile
release-4-6 stays about the same (around 160s).

Also unwound some include file dependencies and removed repeated
definitions of some supporting structures and functions.

Change-Id: I0da1faf351defbe68d5ca43febcabddd93e21f0d

114 files changed:
include/gmx_math_x86_avx_256_double.h
include/gmx_math_x86_avx_256_single.h
src/mdlib/CMakeLists.txt
src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/make_verlet_simd_kernel_files.py [new file with mode: 0755]
src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_2xnn_kernel.c.pre [new file with mode: 0644]
src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_4xn_kernel.c.pre [new file with mode: 0644]
src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.c.pre [new file with mode: 0644]
src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.h.pre [new file with mode: 0644]
src/mdlib/nbnxn_kernels/nbnxn_kernel_ref.c
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn.h [deleted file]
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn_includes.h [deleted file]
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn.h [deleted file]
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn_includes.h [deleted file]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.c [moved from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn.c with 59% similarity]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.h [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_common.h [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_inner.h [moved from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn_inner.h with 99% similarity]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_outer.h [moved from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn_outer.h with 86% similarity]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.c [moved from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn.c with 58% similarity]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.h [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_common.h [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_inner.h [moved from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn_inner.h with 98% similarity]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_outer.h [moved from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn_outer.h with 86% similarity]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp.c [new file with mode: 0644]
src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener.c [new file with mode: 0644]
src/mdlib/sim_util.c

index eaccd6819fd17e973fef1938bacc751929f11526..9cd400acc0c53461266c2e642bea02f4a3a2e318 100644 (file)
@@ -35,9 +35,9 @@
 #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
index bbc49ba313a79b0f48b8245a71ac9cb948afcf05..b68625db4fe5116c5df7ef07cbf00ae9e7bf250a 100644 (file)
@@ -35,8 +35,9 @@
 #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
index f6edbc1eee0fc8600f01713192177926e670eeca..c035b159ef4b10669cf5f7a93d78f0cec82529ce 100644 (file)
@@ -34,7 +34,7 @@
 #
 # 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)
diff --git a/src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/make_verlet_simd_kernel_files.py b/src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/make_verlet_simd_kernel_files.py
new file mode 100755 (executable)
index 0000000..8210540
--- /dev/null
@@ -0,0 +1,255 @@
+#!/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()
diff --git a/src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_2xnn_kernel.c.pre b/src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_2xnn_kernel.c.pre
new file mode 100644 (file)
index 0000000..788d262
--- /dev/null
@@ -0,0 +1,47 @@
+/* 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} */
diff --git a/src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_4xn_kernel.c.pre b/src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_4xn_kernel.c.pre
new file mode 100644 (file)
index 0000000..f630984
--- /dev/null
@@ -0,0 +1,47 @@
+/* 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} */
diff --git a/src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.c.pre b/src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.c.pre
new file mode 100644 (file)
index 0000000..46dced1
--- /dev/null
@@ -0,0 +1,224 @@
+#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
diff --git a/src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.h.pre b/src/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.h.pre
new file mode 100644 (file)
index 0000000..898942d
--- /dev/null
@@ -0,0 +1,54 @@
+#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
index 187c124498e7e49283109ce5bf60e25ed1ad7f00..c3af1b98cbab215772b036cd3fdd005e4b3c9aaf 100644 (file)
 #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
 };
diff --git a/src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn.h b/src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn.h
deleted file mode 100644 (file)
index 638ab80..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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
diff --git a/src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn_includes.h b/src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn_includes.h
deleted file mode 100644 (file)
index 7c356f1..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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"
diff --git a/src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn.h b/src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn.h
deleted file mode 100644 (file)
index 05432d9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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
diff --git a/src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn_includes.h b/src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn_includes.h
deleted file mode 100644 (file)
index 450c742..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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"
similarity index 59%
rename from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn.c
rename to src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.c
index bcd222965eaf37f47d529962fa7178923abe555a..8f0cfe81874f37182a7e1d5781f0e0e987f46f3a 100644 (file)
@@ -1,9 +1,6 @@
 /*
  * 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;
 
@@ -221,6 +194,10 @@ static void reduce_group_energies(int ng, int ng_2log,
     }
 }
 
+#else /* GMX_NBNXN_SIMD_2XNN */
+
+#include "gmx_fatal.h"
+
 #endif /* GMX_NBNXN_SIMD_2XNN */
 
 void
@@ -364,6 +341,8 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t       *nbl_list,
 }
 #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
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.h b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.h
new file mode 100644 (file)
index 0000000..8624d19
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * 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
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_common.h b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_common.h
new file mode 100644 (file)
index 0000000..e03e901
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener.c
new file mode 100644 (file)
index 0000000..f5c1ea8
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp.c
new file mode 100644 (file)
index 0000000..2b0415b
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener.c
new file mode 100644 (file)
index 0000000..642d284
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener.c
new file mode 100644 (file)
index 0000000..db88c94
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp.c
new file mode 100644 (file)
index 0000000..572e576
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener.c
new file mode 100644 (file)
index 0000000..0659a2b
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_ener.c
new file mode 100644 (file)
index 0000000..eca15ae
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp.c
new file mode 100644 (file)
index 0000000..c044483
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_noener.c
new file mode 100644 (file)
index 0000000..272551d
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener.c
new file mode 100644 (file)
index 0000000..a0f6643
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp.c
new file mode 100644 (file)
index 0000000..c8e8931
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener.c
new file mode 100644 (file)
index 0000000..c2177b1
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener.c
new file mode 100644 (file)
index 0000000..e75151b
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp.c
new file mode 100644 (file)
index 0000000..0c0a825
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener.c
new file mode 100644 (file)
index 0000000..835e7f8
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener.c
new file mode 100644 (file)
index 0000000..4616039
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp.c
new file mode 100644 (file)
index 0000000..87f0ff8
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener.c
new file mode 100644 (file)
index 0000000..286385e
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
similarity index 99%
rename from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn_inner.h
rename to src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_inner.h
index 6211c2fd7d9ceba43e262d3f4cdb0e08ab80c83c..a5afe2f2501de180af075724aea77371d10892a5 100644 (file)
         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);
similarity index 86%
rename from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn_outer.h
rename to src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_outer.h
index 188506b4168f3fd9a32f7c8a3d78a7c7f9d6dae0..4e018211d6f4bcdabb27ff98fbb6560237d4b5ee 100644 (file)
  */
 
 
-/* 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;
@@ -191,14 +113,14 @@ NBK_FUNC_NAME(nbnxn_kernel_simd_2xnn, energrp)
     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
@@ -208,10 +130,10 @@ NBK_FUNC_NAME(nbnxn_kernel_simd_2xnn, energrp)
 #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
 
@@ -675,6 +597,3 @@ NBK_FUNC_NAME(nbnxn_kernel_simd_2xnn, energrp)
     printf("atom pairs %d\n", npair);
 #endif
 }
-
-
-#undef CALC_SHIFTFORCES
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_ener.c
new file mode 100644 (file)
index 0000000..19f3e81
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp.c
new file mode 100644 (file)
index 0000000..5a1718e
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_noener.c
new file mode 100644 (file)
index 0000000..a2768b7
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_ener.c
new file mode 100644 (file)
index 0000000..2b6a6d7
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c
new file mode 100644 (file)
index 0000000..a3b98d2
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_noener.c
new file mode 100644 (file)
index 0000000..10d460b
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_ener.c
new file mode 100644 (file)
index 0000000..baf7918
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_energrp.c
new file mode 100644 (file)
index 0000000..a3d9de2
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_noener.c
new file mode 100644 (file)
index 0000000..efd89d9
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_ener.c
new file mode 100644 (file)
index 0000000..67ebf63
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp.c
new file mode 100644 (file)
index 0000000..fe40275
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_noener.c
new file mode 100644 (file)
index 0000000..d42d091
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_ener.c
new file mode 100644 (file)
index 0000000..c281f2c
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp.c
new file mode 100644 (file)
index 0000000..cba5d68
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_noener.c
new file mode 100644 (file)
index 0000000..2e2d0de
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_ener.c
new file mode 100644 (file)
index 0000000..2b3af26
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_energrp.c
new file mode 100644 (file)
index 0000000..8f9fe05
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_noener.c
new file mode 100644 (file)
index 0000000..d3c95a8
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener.c
new file mode 100644 (file)
index 0000000..31706db
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp.c
new file mode 100644 (file)
index 0000000..1a89699
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener.c
new file mode 100644 (file)
index 0000000..6af2df8
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener.c
new file mode 100644 (file)
index 0000000..ec19823
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp.c
new file mode 100644 (file)
index 0000000..ee7c2e8
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener.c
new file mode 100644 (file)
index 0000000..da0c5c3
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener.c
new file mode 100644 (file)
index 0000000..589b03b
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp.c
new file mode 100644 (file)
index 0000000..6ee3649
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener.c b/src/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener.c
new file mode 100644 (file)
index 0000000..21275db
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
similarity index 58%
rename from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn.c
rename to src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.c
index fdf11e8a943107ec98b66bbb8e668ef744a40c80..191e7619a41e3499f2f6add58a599aceea327b48 100644 (file)
@@ -1,9 +1,6 @@
 /*
  * 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;
 
@@ -234,6 +196,10 @@ static void reduce_group_energies(int ng, int ng_2log,
     }
 }
 
+#else /* GMX_NBNXN_SIMD_4XN */
+
+#include "gmx_fatal.h"
+
 #endif /* GMX_NBNXN_SIMD_4XN */
 
 void
@@ -377,6 +343,8 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t       *nbl_list,
 }
 #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
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.h b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.h
new file mode 100644 (file)
index 0000000..65014dc
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * 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
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_common.h b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_common.h
new file mode 100644 (file)
index 0000000..4dd896c
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_ener.c
new file mode 100644 (file)
index 0000000..030ab16
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp.c
new file mode 100644 (file)
index 0000000..3591a32
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_noener.c
new file mode 100644 (file)
index 0000000..0f8daba
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_ener.c
new file mode 100644 (file)
index 0000000..7dcc3f1
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp.c
new file mode 100644 (file)
index 0000000..0cc8c6e
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_noener.c
new file mode 100644 (file)
index 0000000..7e62064
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_ener.c
new file mode 100644 (file)
index 0000000..46a8dc8
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_energrp.c
new file mode 100644 (file)
index 0000000..387a9e5
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_noener.c
new file mode 100644 (file)
index 0000000..2df114c
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener.c
new file mode 100644 (file)
index 0000000..75283c0
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp.c
new file mode 100644 (file)
index 0000000..a543150
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener.c
new file mode 100644 (file)
index 0000000..0b401fb
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener.c
new file mode 100644 (file)
index 0000000..4de7755
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp.c
new file mode 100644 (file)
index 0000000..6b8e08e
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener.c
new file mode 100644 (file)
index 0000000..cfbf711
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener.c
new file mode 100644 (file)
index 0000000..5f37c9e
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp.c
new file mode 100644 (file)
index 0000000..cfbe095
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener.c
new file mode 100644 (file)
index 0000000..4a7bb08
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
similarity index 98%
rename from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn_inner.h
rename to src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_inner.h
index 82aadcff789e6db3fa0621a141db0fb45bd296ac..9465c463bf0bae2c440251294b65336c8a7e88d3 100644 (file)
 #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);
similarity index 86%
rename from src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn_outer.h
rename to src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_outer.h
index 9b77eda0c5f7847915326cbfb6de96af19bcc873..884577547b49a7aaa56770a6406e55c698dc43d0 100644 (file)
  * 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;
@@ -534,18 +456,18 @@ NBK_FUNC_NAME(nbnxn_kernel_simd_4xn, energrp)
         /* 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)
         {
@@ -727,13 +649,3 @@ NBK_FUNC_NAME(nbnxn_kernel_simd_4xn, energrp)
     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
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_ener.c
new file mode 100644 (file)
index 0000000..ebf5a5b
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_energrp.c
new file mode 100644 (file)
index 0000000..87a426e
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_noener.c
new file mode 100644 (file)
index 0000000..080752f
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_ener.c
new file mode 100644 (file)
index 0000000..e66eece
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c
new file mode 100644 (file)
index 0000000..87ef2ae
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_noener.c
new file mode 100644 (file)
index 0000000..2759ca8
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_ener.c
new file mode 100644 (file)
index 0000000..dc28a3e
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_energrp.c
new file mode 100644 (file)
index 0000000..317457a
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_noener.c
new file mode 100644 (file)
index 0000000..be4d769
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_ener.c
new file mode 100644 (file)
index 0000000..8b7b853
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_energrp.c
new file mode 100644 (file)
index 0000000..ae55404
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_noener.c
new file mode 100644 (file)
index 0000000..c08ada2
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_ener.c
new file mode 100644 (file)
index 0000000..2688a08
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_energrp.c
new file mode 100644 (file)
index 0000000..eb4e47e
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_noener.c
new file mode 100644 (file)
index 0000000..6a2e563
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_ener.c
new file mode 100644 (file)
index 0000000..73a1f80
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_energrp.c
new file mode 100644 (file)
index 0000000..e83fb5c
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_noener.c
new file mode 100644 (file)
index 0000000..b7bfb5c
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener.c
new file mode 100644 (file)
index 0000000..4e6817b
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp.c
new file mode 100644 (file)
index 0000000..b0df2db
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener.c
new file mode 100644 (file)
index 0000000..79c3d14
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener.c
new file mode 100644 (file)
index 0000000..dcaf78f
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp.c
new file mode 100644 (file)
index 0000000..d689208
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener.c
new file mode 100644 (file)
index 0000000..0509083
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener.c
new file mode 100644 (file)
index 0000000..25bebac
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp.c
new file mode 100644 (file)
index 0000000..24f1b3d
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 */
diff --git a/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener.c b/src/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener.c
new file mode 100644 (file)
index 0000000..0fc081c
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * 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 */
index 6ae65b32ac041bf175deea2183b47873d5c4f517..fa04b6fc97b6e2d371a2ff111d7cee89c31314db 100644 (file)
@@ -93,8 +93,8 @@
 #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