"Hostname of the machine where the cache was generated.")
endif()
+########################################################################
+# Detect architecture before setting options so we can alter defaults
+########################################################################
+# Detect the architecture the compiler is targetting, detect
+# SIMD instructions possibilities on that hardware, suggest SIMD instruction set
+# to use if none is specified, and populate the cache option for CPU
+# SIMD.
+include(gmxDetectTargetArchitecture)
+gmx_detect_target_architecture()
+
########################################################################
# User input options #
########################################################################
set(CMAKE_PREFIX_PATH "" CACHE STRING "Extra locations to search for external libraries and tools (give directory without lib, bin, or include)")
-option(GMX_DOUBLE "Use double precision (much slower, use only if you really need it)" OFF)
+if(GMX_TARGET_FUJITSU_SPARC64)
+ # Fujitsu only has SIMD in double precision, so this will be faster
+ set(GMX_DOUBLE_DEFAULT ON)
+else()
+ set(GMX_DOUBLE_DEFAULT OFF)
+endif()
+option(GMX_DOUBLE "Use double precision (much slower, use only if you really need it)" ${GMX_DOUBLE_DEFAULT})
+option(GMX_RELAXED_DOUBLE_PRECISION "Accept single precision 1/sqrt(x) when using Fujitsu HPC-ACE SIMD" OFF)
+mark_as_advanced(GMX_RELAXED_DOUBLE_PRECISION)
+
option(GMX_MPI "Build a parallel (message-passing) version of GROMACS" OFF)
option(GMX_THREAD_MPI "Build a thread-MPI-based multithreaded version of GROMACS (not compatible with MPI)" ON)
gmx_dependent_option(
set(REQUIRED_CUDA_COMPUTE_CAPABILITY 2.0)
include(gmxManageGPU)
-# Detect the architecture the compiler is targetting, detect
-# SIMD instructions possibilities on that hardware, suggest SIMD instruction set
-# to use if none is specified, and populate the cache option for CPU
-# SIMD.
-include(gmxDetectTargetArchitecture)
-gmx_detect_target_architecture()
-
if(GMX_CPU_ACCELERATION)
# Stay compatible with old Jenkins command line options for specific SIMD acceleration
set(GMX_SIMD "${GMX_CPU_ACCELERATION}" CACHE STRING "SIMD instruction set level and compiler optimization" FORCE)
if(GMX_DOUBLE)
add_definitions(-DGMX_DOUBLE)
set(PKG_CFLAGS "${PKG_CFLAGS} -DGMX_DOUBLE")
+ if(GMX_RELAXED_DOUBLE_PRECISION)
+ add_definitions(-DGMX_RELAXED_DOUBLE_PRECISION)
+ endif()
endif()
if(GMX_SOFTWARE_INVSQRT)
set(PKG_CFLAGS "${PKG_CFLAGS} -DGMX_SOFTWARE_INVSQRT")
include(gmxManageBlueGene)
endif()
+if(GMX_TARGET_FUJITSU_SPARC64)
+ include(gmxManageFujitsuSparc64)
+endif()
+
########################################################################
#Process MPI settings
########################################################################
# the research papers on the package. Check out http://www.gromacs.org.
# the name of the target operating system
-set(CMAKE_SYSTEM_NAME Linux CACHE STRING "Cross-compiling for Fujitsu Sparc64")
+set(CMAKE_SYSTEM_NAME Linux CACHE STRING "Cross-compiling for Fujitsu Sparc64, with MPI")
+set(CMAKE_SYSTEM_PROCESSOR "s64fx")
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
# set the compiler
set(CMAKE_C_COMPILER mpifccpx)
set(CMAKE_CXX_COMPILER mpiFCCpx)
-set(CMAKE_C_COMPILER_ID "Fujitsu" CACHE STRING "Prevent CMake from adding GNU-specific linker flags (-rdynamic)" FORCE)
-set(CMAKE_C_FLAGS "-Kopenmp -Kfast,reduction,swp,simd=2,uxsimd -x500 -Xg -DGMX_RELAXED_DOUBLE_PRECISION -w" CACHE STRING "Fujitsu Sparc64 C Flags" FORCE)
-set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "Fujitsu Sparc64 C++ Flags" FORCE)
-set(GMX_SOFTWARE_INVSQRT OFF CACHE BOOL "Use native 1.0/sqrt(x) on Fujitsu Sparc64" FORCE)
+# Prevent CMake from adding GNU-specific linker flags (-rdynamic)
+set(CMAKE_C_COMPILER_ID "Fujitsu" CACHE STRING "Fujitsu C cross-compiler" FORCE)
+set(CMAKE_CXX_COMPILER_ID "Fujitsu" CACHE STRING "Fujitsu C++ cross-compiler" FORCE)
-set(GMX_THREAD_MPI OFF CACHE BOOL "Use real MPI instead" FORCE)
-set(GMX_MPI ON CACHE BOOL "Use MPI library" FORCE)
-set(GMX_DOUBLE ON CACHE BOOL "Use double by default on Fujitsu Sparc64 (due to HPC-ACE)" FORCE)
-set(GMX_GPU OFF CACHE BOOL "Cannot do GPU acceleration on Fujitsu Sparc64" FORCE)
-set(BUILD_SHARED_LIBS OFF CACHE BOOL "Use static linking by default on Fujitsu Sparc64" FORCE)
-
-set(GMX_SIMD "Sparc64_HPC_ACE" CACHE STRING "Enabling Sparc64 HPC-ACE SIMD when using Fujitsu Sparc64 toolchain")
+# FindOpenMP.cmake does not try -Kopenmp,but the package will try specific
+# flags based on the compier ID.
+set(OMP_FLAG_Fujitsu "-Kopenmp")
--- /dev/null
+#
+# This file is part of the GROMACS molecular simulation package.
+#
+# Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
+# Mark Abraham, David van der Spoel, Berk Hess, and 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.
+
+# the name of the target operating system
+set(CMAKE_SYSTEM_NAME Linux CACHE STRING "Cross-compiling for Fujitsu Sparc64")
+# Set the identification to the same value we would get on the nodes (uname -m)
+set(CMAKE_SYSTEM_PROCESSOR "s64fx")
+
+set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
+
+# set the compiler
+set(CMAKE_C_COMPILER fccpx)
+set(CMAKE_CXX_COMPILER FCCpx)
+
+# Prevent CMake from adding GNU-specific linker flags (-rdynamic)
+# A patch has been submitted to make CMake itself handle this in the future
+set(CMAKE_C_COMPILER_ID "Fujitsu" CACHE STRING "Fujitsu C cross-compiler" FORCE)
+set(CMAKE_CXX_COMPILER_ID "Fujitsu" CACHE STRING "Fujitsu C++ cross-compiler" FORCE)
+
+# FindOpenMP.cmake does not try -Kopenmp,but the package will try specific
+# flags based on the compier ID.
+set(OMP_FLAG_Fujitsu "-Kopenmp")
--- /dev/null
+int main()
+{
+#if defined (__FUJITSU) && ( defined(__sparc) || defined(__sparcv9) ) && ( defined(__LP64__) || defined(__arch64) )
+ return 0;
+#else
+#error This compiler is not targetting Fujitsu Sparc64
+#endif
+}
GMX_TEST_CXXFLAG(CXXFLAGS_WARN_EXTRA "-Wextra -Wno-missing-field-initializers -Wpointer-arith" GMXC_CXXFLAGS)
endif()
+ # Fujitsu compilers on PrimeHPC/Sparc64
+ if(${CMAKE_C_COMPILER_ID} MATCHES Fujitsu OR
+ (${CMAKE_C_COMPILER_ID} MATCHES unknown AND ${CMAKE_C_COMPILER} MATCHES ^fcc))
+ GMX_TEST_CFLAG(CFLAG_GNUCOMPAT "-Xg -w" GMXC_CFLAGS)
+ GMX_TEST_CFLAG(CFLAG_OPT "-Kfast,reduction,swp,simd=2,uxsimd,fsimple -x100" GMXC_CFLAGS)
+ endif()
+
+ if(${CMAKE_CXX_COMPILER_ID} MATCHES Fujitsu OR
+ (${CMAKE_CXX_COMPILER_ID} MATCHES unknown AND ${CMAKE_CXX_COMPILER} MATCHES ^FCC))
+ GMX_TEST_CXXFLAG(CXXFLAG_GNUCOMPAT "-Xg -w" GMXC_CXXFLAGS)
+ GMX_TEST_CXXFLAG(CXXFLAG_OPT "-Kfast,reduction,swp,simd=2,uxsimd,fsimple -x100" GMXC_CXXFLAGS)
+ endif()
+
# now actually set the flags:
if (NOT GMX_SKIP_DEFAULT_CFLAGS)
gmx_set_cmake_compiler_flags()
if(NOT DEFINED GMX_SIMD)
if(GMX_TARGET_BGQ)
set(${_suggested_simd} "IBM_QPX")
+ elseif(GMX_TARGET_FUJITSU_SPARC64)
+ # HPC-ACE is always present. In the future we
+ # should add detection for HPC-ACE2 here.
+ set(${_suggested_simd} "Sparc64_HPC_ACE")
elseif(GMX_TARGET_X86)
gmx_suggest_x86_simd(${_suggested_simd})
else()
try_compile(GMX_TARGET_MIC ${CMAKE_BINARY_DIR}
"${CMAKE_SOURCE_DIR}/cmake/TestMIC.c")
endif()
+ if (NOT DEFINED GMX_TARGET_FUJITSU_SPARC64)
+ try_compile(GMX_TARGET_FUJITSU_SPARC64 ${CMAKE_BINARY_DIR}
+ "${CMAKE_SOURCE_DIR}/cmake/TestFujitsuSparc64.c")
+ endif()
endfunction()
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
-# the name of the target operating system
-set(CMAKE_SYSTEM_NAME Linux CACHE STRING "Cross-compiling for Fujitsu Sparc64")
+# Managing configuration for Fujitsu PrimeHPC Sparc64
+# For now this is mainly used for K computer.
+message(STATUS "Configuring for Fujitsu Sparc64")
-set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
-
-# set the compiler
-set(CMAKE_C_COMPILER fccpx)
-set(CMAKE_CXX_COMPILER FCCpx)
-set(CMAKE_C_COMPILER_ID "Fujitsu" CACHE STRING "Prevent CMake from adding GNU-specific linker flags (-rdynamic)" FORCE)
+set(BUILD_SHARED_LIBS OFF CACHE BOOL "Use static linking by default on Fujitsu Sparc64" FORCE)
+set(GMX_GPU OFF CACHE BOOL "Cannot do GPU acceleration on Fujitsu Sparc64" FORCE)
-set(CMAKE_C_FLAGS "-Kopenmp -Kfast,reduction,swp,simd=2,uxsimd -x500 -Xg -DGMX_RELAXED_DOUBLE_PRECISION -w" CACHE STRING "Fujitsu Sparc64 C Flags" FORCE)
-set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "Fujitsu Sparc64 C++ Flags" FORCE)
set(GMX_SOFTWARE_INVSQRT OFF CACHE BOOL "Use native 1.0/sqrt(x) on Fujitsu Sparc64" FORCE)
+set(GMX_X11 OFF CACHE BOOL "X11 not compatible with Fujitsu Sparc64 cross-compile, disabled." FORCE)
-# By default CMake will use thread-mpi
-set(GMX_DOUBLE ON CACHE BOOL "Use double by default on Fujitsu Sparc64 (due to HPC-ACE)" FORCE)
-set(GMX_GPU OFF CACHE BOOL "Cannot do GPU acceleration on Fujitsu Sparc64" FORCE)
-set(BUILD_SHARED_LIBS OFF CACHE BOOL "Use static linking by default on Fujitsu Sparc64" FORCE)
-
-set(GMX_SIMD "Sparc64_HPC_ACE" CACHE STRING "Enabling Sparc64 HPC-ACE SIMD when using Fujitsu Sparc64 toolchain")
elseif(${GMX_SIMD} STREQUAL "SPARC64_HPC_ACE")
+ # Note that GMX_RELAXED_DOUBLE_PRECISION is enabled by default in the top-level CMakeLists.txt
+
set(GMX_SIMD_SPARC64_HPC_ACE 1)
set(SIMD_STATUS_MESSAGE "Enabling Sparc64 HPC-ACE SIMD instructions")
cmake .. -DCMAKE_C_COMPILER=mpicc \
-DCMAKE_CXX_COMPILER=mpicxx \
- -DCMAKE_TOOLCHAIN_FILE=Platform/BlueGeneQ-static-XL-CXX \
+ -DCMAKE_TOOLCHAIN_FILE=Platform/BlueGeneQ-static-XL-CXX.cmake \
-DCMAKE_PREFIX_PATH=/your/fftw/installation/prefix \
-DGMX_MPI=ON \
-DGMX_BUILD_MDRUN_ONLY=ON
This is the architecture of the K computer, which uses Fujitsu
`Sparc64VIIIfx` chips. On this platform, GROMACS @PROJECT_VERSION@ has
-accelerated group kernels, no accelerated Verlet kernels, and a custom
-build toolchain.
+accelerated group kernels using the HPC-ACE instructions, no
+accelerated Verlet kernels, and a custom build toolchain. Since this
+particular chip only does double precision SIMD, the default setup
+is to build Gromacs in double. Since most users only need single, we have added
+an option GMX_RELAXED_DOUBLE_PRECISION to accept single precision square root
+accuracy in the group kernels; unless you know that you really need 15 digits
+of accuracy in each individual force, we strongly recommend you use this. Note
+that all summation and other operations are still done in double.
+
+The recommended configuration is to use
+
+ cmake .. -DCMAKE_TOOLCHAIN_FILE=Toolchain-Fujitsu-Sparc64-mpi.cmake \
+ -DCMAKE_PREFIX_PATH=/your/fftw/installation/prefix \
+ -DCMAKE_INSTALL_PREFIX=/where/gromacs/should/be/installed \
+ -DGMX_MPI=ON \
+ -DGMX_BUILD_MDRUN_ONLY=ON \
+ -DGMX_RELAXED_DOUBLE_PRECISION=ON
+ make
+ make install
### Intel Xeon Phi ###
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#ifndef _kernelutil_sparc64_hpc_ace_double_h_
#define _kernelutil_sparc64_hpc_ace_double_h_
+/* Get gmx_simd_exp_d() */
+#include "gromacs/simd/simd.h"
+#include "gromacs/simd/simd_math.h"
+
/* Fujitsu header borrows the name from SSE2, since some instructions have aliases */
#include <emmintrin.h>
# 'cutoff' means the interaction is set to 0.0 outside the cutoff
#
-FileHeader = create_copyright_header('2012,2013')
+FileHeader = create_copyright_header('2012,2013,2014')
FileHeader += """/*
* Note: this file was generated by the GROMACS """+Arch+""" kernel generator.
*/
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
**************************/
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
**************************/
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* COULOMB ELECTROSTATICS */
velec = _fjsp_mul_v2r8(qq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* COULOMB ELECTROSTATICS */
velec = _fjsp_mul_v2r8(qq00,rinv00);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* COULOMB ELECTROSTATICS */
velec = _fjsp_mul_v2r8(qq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* COULOMB ELECTROSTATICS */
velec = _fjsp_mul_v2r8(qq00,rinv00);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
**************************/
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
**************************/
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* EWALD ELECTROSTATICS */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* EWALD ELECTROSTATICS */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* EWALD ELECTROSTATICS */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* EWALD ELECTROSTATICS */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* Analytical LJ-PME */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* Analytical LJ-PME */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
{
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
{
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* EWALD ELECTROSTATICS */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* EWALD ELECTROSTATICS */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* EWALD ELECTROSTATICS */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* EWALD ELECTROSTATICS */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* Analytical LJ-PME */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* Analytical LJ-PME */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* EWALD ELECTROSTATICS */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
**************************/
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
**************************/
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* GENERALIZED BORN AND COULOMB ELECTROSTATICS */
isaprod = _fjsp_mul_v2r8(isai0,isaj0);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* GENERALIZED BORN AND COULOMB ELECTROSTATICS */
isaprod = _fjsp_mul_v2r8(isai0,isaj0);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* Analytical LJ-PME */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(_fjsp_nmsub_v2r8(c12_00,_fjsp_mul_v2r8(sh_vdw_invrcut6,sh_vdw_invrcut6),vvdw12),one_twelfth,
_fjsp_mul_v2r8(_fjsp_sub_v2r8(vvdw6,_fjsp_madd_v2r8(c6grid_00,sh_lj_ewald,_fjsp_mul_v2r8(c6_00,sh_vdw_invrcut6))),one_sixth));
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* Analytical LJ-PME */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* Analytical LJ-PME */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_00,_fjsp_sub_v2r8(one,poly),c6_00),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_00,_fjsp_sub_v2r8(poly,one),c6_00),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_00,_fjsp_mul_v2r8(rinvsix,rinvsix));
vvdw = _fjsp_msub_v2r8(vvdw12,one_twelfth,_fjsp_mul_v2r8(vvdw6,one_sixth));
/* fvdw = vvdw12/r - (vvdw6/r + (C6grid * exponent * beta^6)/r) */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
- c6grid_00 = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A);
+ c6grid_00 = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset0+vdwjidx0A,
+ vdwgridparam+vdwioffset0+vdwjidx0B);
/* Analytical LJ-PME */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq00,rinvsq00),rinvsq00);
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq00);
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_00,_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_00,one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
{
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
{
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
**************************/
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
**************************/
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
velec = _fjsp_mul_v2r8(qq00,_fjsp_sub_v2r8(_fjsp_madd_v2r8(krf,rsq00,rinv00),crf));
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
felec = _fjsp_mul_v2r8(qq00,_fjsp_msub_v2r8(rinv00,rinvsq00,krf2));
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
velec = _fjsp_mul_v2r8(qq00,_fjsp_sub_v2r8(_fjsp_madd_v2r8(krf,rsq00,rinv00),crf));
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
felec = _fjsp_mul_v2r8(qq00,_fjsp_msub_v2r8(rinv00,rinvsq00,krf2));
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
{
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
{
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
velec = _fjsp_mul_v2r8(qq00,_fjsp_sub_v2r8(_fjsp_madd_v2r8(krf,rsq00,rinv00),crf));
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
felec = _fjsp_mul_v2r8(qq00,_fjsp_msub_v2r8(rinv00,rinvsq00,krf2));
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
velec = _fjsp_mul_v2r8(qq00,_fjsp_sub_v2r8(_fjsp_madd_v2r8(krf,rsq00,rinv00),crf));
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
felec = _fjsp_mul_v2r8(qq00,_fjsp_msub_v2r8(rinv00,rinvsq00,krf2));
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
r00 = _fjsp_mul_v2r8(rsq00,rinv00);
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* Calculate table index by multiplying r with table scale and truncate to integer */
rt = _fjsp_mul_v2r8(r00,vftabscale);
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
velec = _fjsp_mul_v2r8(qq00,_fjsp_sub_v2r8(_fjsp_madd_v2r8(krf,rsq00,rinv00),crf));
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
felec = _fjsp_mul_v2r8(qq00,_fjsp_msub_v2r8(rinv00,rinvsq00,krf2));
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
velec = _fjsp_mul_v2r8(qq00,_fjsp_sub_v2r8(_fjsp_madd_v2r8(krf,rsq00,rinv00),crf));
/* Compute parameters for interactions between i and j atoms */
qq00 = _fjsp_mul_v2r8(iq0,jq0);
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* REACTION-FIELD ELECTROSTATICS */
felec = _fjsp_mul_v2r8(qq00,_fjsp_msub_v2r8(rinv00,rinvsq00,krf2));
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
**************************/
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
**************************/
/* Compute parameters for interactions between i and j atoms */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,&c6_00,&c12_00);
+ gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset0+vdwjidx0A,
+ vdwparam+vdwioffset0+vdwjidx0B,&c6_00,&c12_00);
/* LENNARD-JONES DISPERSION/REPULSION */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
#include "../nb_kernel.h"
#include "types/simple.h"
-#include "vec.h"
+#include "gromacs/legacyheaders/vec.h"
#include "nrnb.h"
#include "kernelutil_sparc64_hpc_ace_double.h"
/* #define INNERFLOPS INNERFLOPS+1 */
/* #endif */
/* #if 'vdw' in INTERACTION_FLAGS[I][J] */
- /* #if ROUND == 'Loop' */
gmx_fjsp_load_2pair_swizzle_v2r8(vdwparam+vdwioffset{I}+vdwjidx{J}A,
vdwparam+vdwioffset{I}+vdwjidx{J}B,&c6_{I}{J},&c12_{I}{J});
- /* #if 'LJEwald' in KERNEL_VDW */
+ /* #if 'LJEwald' in KERNEL_VDW */
c6grid_{I}{J} = gmx_fjsp_load_2real_swizzle_v2r8(vdwgridparam+vdwioffset{I}+vdwjidx{J}A,
vdwgridparam+vdwioffset{I}+vdwjidx{J}B);
- /* #endif */
- /* #else */
- gmx_fjsp_load_1pair_swizzle_v2r8(vdwparam+vdwioffset{I}+vdwjidx{J}A,&c6_{I}{J},&c12_{I}{J});
-
- /* #if 'LJEwald' in KERNEL_VDW */
- c6grid_{I}{J} = gmx_fjsp_load_1real_swizzle_v2r8(vdwgridparam+vdwioffset{I}+vdwjidx{J}A);
- /* #endif */
/* #endif */
/* #endif */
/* #endif */
rinvsix = _fjsp_mul_v2r8(_fjsp_mul_v2r8(rinvsq{I}{J},rinvsq{I}{J}),rinvsq{I}{J});
ewcljrsq = _fjsp_mul_v2r8(ewclj2,rsq{I}{J});
ewclj6 = _fjsp_mul_v2r8(ewclj2,_fjsp_mul_v2r8(ewclj2,ewclj2));
- exponent = gmx_simd_exp_d(-ewcljrsq);
+ exponent = gmx_simd_exp_d(ewcljrsq);
/* poly = exp(-(beta*r)^2) * (1 + (beta*r)^2 + (beta*r)^4 /2) */
poly = _fjsp_mul_v2r8(exponent,_fjsp_madd_v2r8(_fjsp_mul_v2r8(ewcljrsq,ewcljrsq),one_half,_fjsp_sub_v2r8(one,ewcljrsq)));
/* #define INNERFLOPS INNERFLOPS+9 */
/* #if 'Potential' in KERNEL_VF or KERNEL_MOD_VDW=='PotentialSwitch' */
/* vvdw6 = [C6 - C6grid * (1-poly)]/r6 */
- vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(-c6grid_{I}{J},_fjsp_sub_v2r8(one,poly),c6_{I}{J}),rinvsix);
+ vvdw6 = _fjsp_mul_v2r8(_fjsp_madd_v2r8(c6grid_{I}{J},_fjsp_sub_v2r8(poly,one),c6_{I}{J}),rinvsix);
vvdw12 = _fjsp_mul_v2r8(c12_{I}{J},_fjsp_mul_v2r8(rinvsix,rinvsix));
/* #define INNERFLOPS INNERFLOPS+5 */
/* #if KERNEL_MOD_VDW=='PotentialShift' */
/* #endif */
/* #elif KERNEL_VF=='Force' */
/* f6A = 6 * C6grid * (1 - poly) */
- f6A = _fjsp_mul_v2r8(c6grid_{I}{J},_fjsp_msub_v2r8(one,poly));
+ f6A = _fjsp_mul_v2r8(c6grid_{I}{J},_fjsp_sub_v2r8(one,poly));
/* f6B = C6grid * exponent * beta^6 */
f6B = _fjsp_mul_v2r8(_fjsp_mul_v2r8(c6grid_{I}{J},one_sixth),_fjsp_mul_v2r8(exponent,ewclj6));
/* fvdw = 12*C12/r13 - ((6*C6 - f6A)/r6 + f6B)/r */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2014, by the GROMACS development team, led by
+ * Mark Abraham, David van der Spoel, Berk Hess, and 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 GMX_SIMD_IMPL_SPARC64_HPC_ACE_H
+#define GMX_SIMD_IMPL_SPARC64_HPC_ACE_H
+
+#include <math.h>
+/* Fujitsu header borrows the name from SSE2, since some instructions have aliases */
+#include <emmintrin.h>
+
+
+/* Sparc64 HPC-ACE SIMD instruction wrappers
+ *
+ * Please see documentation in gromacs/simd/simd.h for defines.
+ */
+
+/* Capability definitions for Sparc64 HPC-ACE */
+/* HPC-ACE is actually double-only on the register level, but we also implement
+ * a single-precision interface where we only offer single-precision accuracy
+ * in math functions - this can save quite a few cycles.
+ */
+#define GMX_SIMD_HAVE_FLOAT
+#define GMX_SIMD_HAVE_DOUBLE
+#define GMX_SIMD_HAVE_HARDWARE
+#undef GMX_SIMD_HAVE_LOADU
+#undef GMX_SIMD_HAVE_STOREU
+#define GMX_SIMD_HAVE_LOGICAL
+#define GMX_SIMD_HAVE_FMA
+#undef GMX_SIMD_HAVE_FRACTION
+#define GMX_SIMD_HAVE_FINT32
+#define GMX_SIMD_HAVE_FINT32_EXTRACT
+#define GMX_SIMD_HAVE_FINT32_LOGICAL
+#undef GMX_SIMD_HAVE_FINT32_ARITHMETICS
+#define GMX_SIMD_HAVE_DINT32
+#define GMX_SIMD_HAVE_DINT32_EXTRACT
+#define GMX_SIMD_HAVE_DINT32_LOGICAL
+#undef GMX_SIMD_HAVE_DINT32_ARITHMETICS
+#undef GMX_SIMD4_HAVE_FLOAT
+#undef GMX_SIMD4_HAVE_DOUBLE
+
+/* Implementation details */
+#define GMX_SIMD_FLOAT_WIDTH 2
+#define GMX_SIMD_DOUBLE_WIDTH 2
+#define GMX_SIMD_FINT32_WIDTH 2
+#define GMX_SIMD_DINT32_WIDTH 2
+#define GMX_SIMD_RSQRT_BITS 10
+#define GMX_SIMD_RCP_BITS 9
+
+/* HPC-ACE is a bit strange; some instructions like
+ * shifts only work on _integer_ versions of SIMD
+ * registers, but there are no intrinsics to load
+ * or convert, or even to cast. The only way to use
+ * them is to declare unions with the SIMD integer
+ * type. However, this will lead to extra load ops,
+ * and the normal real-to-int and int-to-real
+ * conversions work purely on the v2r8 fp regs.
+ * Since our most common usage is to convert and
+ * then extract the result for table lookups, we
+ * define the gmx_simd_fint32_t datatype to use
+ * the v2r8 rather than v2i8 SIMD type.
+ */
+
+/****************************************************
+ * SINGLE PRECISION SIMD IMPLEMENTATION *
+ ****************************************************/
+#define gmx_simd_float_t _fjsp_v2r8
+#define gmx_simd_load_f gmx_simd_load_f_sparc64_hpc_ace
+#define gmx_simd_load1_f(m) _fjsp_set_v2r8((*m), (*m))
+#define gmx_simd_set1_f(a) _fjsp_set_v2r8(a, a)
+#define gmx_simd_store_f gmx_simd_store_f_sparc64_hpc_ace
+#define gmx_simd_loadu_f gmx_simd_load_f
+/* No unaligned store of gmx_simd_float_t */
+#define gmx_simd_setzero_f _fjsp_setzero_v2r8
+#define gmx_simd_add_f _fjsp_add_v2r8
+#define gmx_simd_sub_f _fjsp_sub_v2r8
+#define gmx_simd_mul_f _fjsp_mul_v2r8
+#define gmx_simd_fmadd_f(a, b, c) _fjsp_madd_v2r8(a, b, c)
+#define gmx_simd_fmsub_f(a, b, c) _fjsp_msub_v2r8(a, b, c)
+#define gmx_simd_fnmadd_f(a, b, c) _fjsp_nmsub_v2r8(a, b, c)
+#define gmx_simd_fnmsub_f(a, b, c) _fjsp_nmadd_v2r8(a, b, c)
+#define gmx_simd_and_f _fjsp_and_v2r8
+#define gmx_simd_andnot_f _fjsp_andnot1_v2r8
+#define gmx_simd_or_f _fjsp_or_v2r8
+#define gmx_simd_xor_f _fjsp_xor_v2r8
+#define gmx_simd_rsqrt_f _fjsp_rsqrta_v2r8
+#define gmx_simd_rcp_f _fjsp_rcpa_v2r8
+#define gmx_simd_fabs_f(x) _fjsp_abs_v2r8(x)
+#define gmx_simd_fneg_f(x) _fjsp_neg_v2r8(x)
+#define gmx_simd_max_f _fjsp_max_v2r8
+#define gmx_simd_min_f _fjsp_min_v2r8
+#define gmx_simd_round_f(x) gmx_simd_round_d(x)
+#define gmx_simd_trunc_f(x) gmx_simd_trunc_d(x)
+#define gmx_simd_fraction_f(x) gmx_simd_sub_f(x, gmx_simd_trunc_f(x))
+#define gmx_simd_get_exponent_f gmx_simd_get_exponent_d_sparc64_hpc_ace
+#define gmx_simd_get_mantissa_f gmx_simd_get_mantissa_d_sparc64_hpc_ace
+#define gmx_simd_set_exponent_f gmx_simd_set_exponent_d_sparc64_hpc_ace
+/* integer datatype corresponding to float: gmx_simd_fint32_t */
+#define gmx_simd_fint32_t _fjsp_v2r8
+#define gmx_simd_load_fi(m) gmx_simd_load_di_sparc64_hpc_ace(m)
+#define gmx_simd_set1_fi(i) gmx_simd_set1_di_sparc64_hpc_ace(i)
+#define gmx_simd_store_fi(m, x) gmx_simd_store_di_sparc64_hpc_ace(m, x)
+#define gmx_simd_loadu_fi gmx_simd_load_fi
+/* No unaligned store of gmx_simd_fint32_t */
+#define gmx_simd_setzero_fi _fjsp_setzero_v2r8
+#define gmx_simd_cvt_f2i gmx_simd_cvt_d2i
+#define gmx_simd_cvtt_f2i _fjsp_dtox_v2r8
+#define gmx_simd_cvt_i2f _fjsp_xtod_v2r8
+#define gmx_simd_extract_fi gmx_simd_extract_di_sparc64_hpc_ace
+/* Integer logical ops on gmx_simd_fint32_t */
+/* Shifts are horrible since they require memory re-loads. */
+#define gmx_simd_slli_fi gmx_simd_slli_di_sparc64_hpc_ace
+#define gmx_simd_srli_fi gmx_simd_srli_di_sparc64_hpc_ace
+#define gmx_simd_and_fi _fjsp_and_v2r8
+#define gmx_simd_andnot_fi(a, b) _fjsp_andnot1_v2r8(a, b)
+#define gmx_simd_or_fi _fjsp_or_v2r8
+#define gmx_simd_xor_fi _fjsp_xor_v2r8
+/* No integer arithmetic ops on gmx_simd_fint32_t */
+/* Boolean & comparison operations on gmx_simd_float_t */
+#define gmx_simd_fbool_t _fjsp_v2r8
+#define gmx_simd_cmpeq_f _fjsp_cmpeq_v2r8
+#define gmx_simd_cmplt_f _fjsp_cmplt_v2r8
+#define gmx_simd_cmple_f _fjsp_cmple_v2r8
+#define gmx_simd_and_fb _fjsp_and_v2r8
+#define gmx_simd_or_fb _fjsp_or_v2r8
+#define gmx_simd_anytrue_fb gmx_simd_anytrue_d_sparc64_hpc_ace
+#define gmx_simd_blendzero_f _fjsp_and_v2r8
+#define gmx_simd_blendnotzero_f(a, sel) _fjsp_andnot1_v2r8(sel, a)
+#define gmx_simd_blendv_f(a, b, s) _fjsp_selmov_v2r8(b, a, s)
+#define gmx_simd_reduce_f(a) gmx_simd_reduce_d_sparc64_hpc_ace(a)
+/* No boolean & comparison operations on gmx_simd_fint32_t */
+/* No conversions between different booleans */
+
+/****************************************************
+ * DOUBLE PRECISION SIMD IMPLEMENTATION *
+ ****************************************************/
+#define gmx_simd_double_t _fjsp_v2r8
+#define gmx_simd_load_d _fjsp_load_v2r8
+#define gmx_simd_load1_d(m) _fjsp_set_v2r8((*m), (*m))
+#define gmx_simd_set1_d(a) _fjsp_set_v2r8(a, a)
+#define gmx_simd_store_d _fjsp_store_v2r8
+#define gmx_simd_loadu_d gmx_simd_load_d
+/* No unaligned store of gmx_simd_double_t */
+#define gmx_simd_setzero_d _fjsp_setzero_v2r8
+#define gmx_simd_add_d _fjsp_add_v2r8
+#define gmx_simd_sub_d _fjsp_sub_v2r8
+#define gmx_simd_mul_d _fjsp_mul_v2r8
+#define gmx_simd_fmadd_d(a, b, c) _fjsp_madd_v2r8(a, b, c)
+#define gmx_simd_fmsub_d(a, b, c) _fjsp_msub_v2r8(a, b, c)
+#define gmx_simd_fnmadd_d(a, b, c) _fjsp_nmsub_v2r8(a, b, c)
+#define gmx_simd_fnmsub_d(a, b, c) _fjsp_nmadd_v2r8(a, b, c)
+#define gmx_simd_and_d _fjsp_and_v2r8
+#define gmx_simd_andnot_d _fjsp_andnot1_v2r8
+#define gmx_simd_or_d _fjsp_or_v2r8
+#define gmx_simd_xor_d _fjsp_xor_v2r8
+#define gmx_simd_rsqrt_d(x) _fjsp_rsqrta_v2r8(x)
+#define gmx_simd_rcp_d(x) _fjsp_rcpa_v2r8(x)
+#define gmx_simd_fabs_d(x) _fjsp_abs_v2r8(x)
+#define gmx_simd_fneg_d(x) _fjsp_neg_v2r8(x)
+#define gmx_simd_max_d _fjsp_max_v2r8
+#define gmx_simd_min_d _fjsp_min_v2r8
+#define gmx_simd_round_d(x) gmx_simd_cvt_i2d(gmx_simd_cvt_d2i(x))
+#define gmx_simd_trunc_d(x) gmx_simd_cvt_i2d(gmx_simd_cvtt_d2i(x))
+#define gmx_simd_fraction_d(x) gmx_simd_sub_d(x, gmx_simd_trunc_d(x))
+#define gmx_simd_get_exponent_d gmx_simd_get_exponent_d_sparc64_hpc_ace
+#define gmx_simd_get_mantissa_d gmx_simd_get_mantissa_d_sparc64_hpc_ace
+#define gmx_simd_set_exponent_d gmx_simd_set_exponent_d_sparc64_hpc_ace
+/* integer datatype corresponding to double: gmx_simd_dint32_t */
+#define gmx_simd_dint32_t _fjsp_v2r8
+#define gmx_simd_load_di(m) gmx_simd_load_di_sparc64_hpc_ace(m)
+#define gmx_simd_set1_di(i) gmx_simd_set1_di_sparc64_hpc_ace(i)
+#define gmx_simd_store_di(m, x) gmx_simd_store_di_sparc64_hpc_ace(m, x)
+#define gmx_simd_loadu_di gmx_simd_load_di
+/* No unaligned store of gmx_simd_dint32_t */
+#define gmx_simd_setzero_di _fjsp_setzero_v2r8
+#define gmx_simd_cvt_d2i gmx_simd_cvt_d2i_sparc64_hpc_ace
+#define gmx_simd_cvtt_d2i _fjsp_dtox_v2r8
+#define gmx_simd_cvt_i2d _fjsp_xtod_v2r8
+#define gmx_simd_extract_di gmx_simd_extract_di_sparc64_hpc_ace
+/* Integer logical ops on gmx_simd_dint32_t */
+#define gmx_simd_slli_di gmx_simd_slli_di_sparc64_hpc_ace
+#define gmx_simd_srli_di gmx_simd_srli_di_sparc64_hpc_ace
+#define gmx_simd_and_di _fjsp_and_v2r8
+#define gmx_simd_andnot_di _fjsp_andnot1_v2r8
+#define gmx_simd_or_di _fjsp_or_v2r8
+#define gmx_simd_xor_di _fjsp_xor_v2r8
+/* Integer arithmetic ops on integer datatype corresponding to double */
+/* Boolean & comparison operations on gmx_simd_double_t */
+#define gmx_simd_dbool_t _fjsp_v2r8
+#define gmx_simd_cmpeq_d _fjsp_cmpeq_v2r8
+#define gmx_simd_cmplt_d _fjsp_cmplt_v2r8
+#define gmx_simd_cmple_d _fjsp_cmple_v2r8
+#define gmx_simd_and_db _fjsp_and_v2r8
+#define gmx_simd_or_db _fjsp_or_v2r8
+#define gmx_simd_anytrue_db gmx_simd_anytrue_d_sparc64_hpc_ace
+#define gmx_simd_blendzero_d _fjsp_and_v2r8
+#define gmx_simd_blendnotzero_d(a, sel) _fjsp_andnot1_v2r8(sel, a)
+#define gmx_simd_blendv_d(a, b, sel) _fjsp_selmov_v2r8(b, a, sel)
+#define gmx_simd_reduce_d(a) gmx_simd_reduce_d_sparc64_hpc_ace(a)
+
+/* No boolean & comparison operations on gmx_simd_dint32_t */
+/* Float/double conversion */
+#define gmx_simd_cvt_f2d(f) (f)
+#define gmx_simd_cvt_d2f(d) (d)
+
+
+/****************************************************
+ * SINGLE PRECISION IMPLEMENTATION HELPER FUNCTIONS *
+ ****************************************************/
+static gmx_inline gmx_simd_float_t
+gmx_simd_load_f_sparc64_hpc_ace(const float *m)
+{
+ /* We are not allowed to cast single-to-double registers, but we can
+ * masquerade the memory location as a variable of type _fjsp_v2r4.
+ */
+ const _fjsp_v2r4 *p = (const _fjsp_v2r4 *)m;
+ _fjsp_v2r4 simd;
+
+ simd = *p;
+ return _fjsp_stod_v2r8(simd);
+}
+
+static gmx_inline void
+gmx_simd_store_f_sparc64_hpc_ace(float *m, gmx_simd_float_t x)
+{
+ /* We are not allowed to cast single-to-double registers, but we can
+ * masquerade the memory location as a variable of type _fjsp_v2r4.
+ */
+ _fjsp_v2r4 *p = (_fjsp_v2r4 *)m;
+ *p = _fjsp_dtos_v2r4(x);
+}
+
+static gmx_inline gmx_simd_dint32_t
+gmx_simd_load_di_sparc64_hpc_ace(const int *m)
+{
+ union
+ {
+ _fjsp_v2r8 simd;
+ long long int i[2];
+ }
+ conv;
+
+ conv.i[0] = m[0];
+ conv.i[1] = m[1];
+
+ return _fjsp_load_v2r8( (double *) &(conv.simd) );
+}
+
+static gmx_inline void
+gmx_simd_store_di_sparc64_hpc_ace(int *m, gmx_simd_dint32_t x)
+{
+ union
+ {
+ _fjsp_v2r8 simd;
+ long long int i[2];
+ }
+ conv;
+
+ _fjsp_store_v2r8( (double *) &(conv.simd), x );
+
+ m[0] = conv.i[0];
+ m[1] = conv.i[1];
+}
+
+static gmx_inline gmx_simd_dint32_t
+gmx_simd_set1_di_sparc64_hpc_ace(int i)
+{
+ union
+ {
+ _fjsp_v2r8 simd;
+ long long int i[2];
+ }
+ conv;
+
+ conv.i[0] = i;
+ conv.i[1] = i;
+
+ return _fjsp_load_v2r8( (double *) &(conv.simd) );
+}
+
+static gmx_inline int
+gmx_simd_extract_di_sparc64_hpc_ace(gmx_simd_dint32_t x, int i)
+{
+ long long int res;
+ /* This conditional should be optimized away at compile time */
+ if (i == 0)
+ {
+ _fjsp_storel_v2r8((double *)&res, x);
+ }
+ else
+ {
+ _fjsp_storeh_v2r8((double *)&res, x);
+ }
+ return (int)res;
+}
+
+static gmx_inline gmx_simd_dint32_t
+gmx_simd_slli_di_sparc64_hpc_ace(gmx_simd_dint32_t x, int i)
+{
+ _fjsp_v2i8 ix = *((_fjsp_v2i8 *)&x);
+ ix = _fjsp_slli_v2i8(ix, i);
+ x = *((_fjsp_v2r8 *)&ix);
+ return x;
+}
+
+static gmx_inline gmx_simd_dint32_t
+gmx_simd_srli_di_sparc64_hpc_ace(gmx_simd_dint32_t x, int i)
+{
+ _fjsp_v2i8 ix = *((_fjsp_v2i8 *)&x);
+ ix = _fjsp_srli_v2i8(ix, i);
+ x = *((_fjsp_v2r8 *)&ix);
+ return x;
+}
+
+static gmx_inline gmx_simd_dint32_t
+gmx_simd_cvt_d2i_sparc64_hpc_ace(gmx_simd_double_t x)
+{
+ _fjsp_v2r8 signbit = _fjsp_set_v2r8(-0.0, -0.0);
+ _fjsp_v2r8 half = _fjsp_set_v2r8(0.5, 0.5);
+
+ x = _fjsp_add_v2r8(x, _fjsp_or_v2r8(_fjsp_and_v2r8(signbit, x), half));
+ return _fjsp_dtox_v2r8(x);
+}
+
+static gmx_inline int
+gmx_simd_anytrue_d_sparc64_hpc_ace(gmx_simd_dbool_t x)
+{
+ long long int i;
+ x = _fjsp_or_v2r8(x, _fjsp_unpackhi_v2r8(x, x));
+ _fjsp_storel_v2r8((double *)&i, x);
+ return (i != 0LL);
+}
+
+static gmx_inline double
+gmx_simd_reduce_d_sparc64_hpc_ace(gmx_simd_double_t x)
+{
+ double d;
+ x = _fjsp_add_v2r8(x, _fjsp_unpackhi_v2r8(x, x));
+ _fjsp_storel_v2r8(&d, x);
+ return d;
+}
+
+
+static gmx_inline gmx_simd_double_t
+gmx_simd_get_exponent_d_sparc64_hpc_ace(gmx_simd_double_t x)
+{
+ /* HPC-ACE cannot cast _fjsp_v2r8 to _fjsp_v4i4, so to perform shifts we
+ * would need to store and reload. Since we are only operating on two
+ * numbers it is likely more efficient to do the operations directly on
+ * normal registers.
+ */
+ const gmx_int64_t expmask = 0x7ff0000000000000LL;
+ const gmx_int64_t expbias = 1023LL;
+
+ union
+ {
+ _fjsp_v2r8 simd;
+ long long int i[2];
+ }
+ conv;
+
+ _fjsp_store_v2r8( (double *) &conv.simd, x);
+ conv.i[0] = ((conv.i[0] & expmask) >> 52) - expbias;
+ conv.i[1] = ((conv.i[1] & expmask) >> 52) - expbias;
+ x = _fjsp_load_v2r8( (double *) &conv.simd);
+ return _fjsp_xtod_v2r8(x);
+}
+
+static gmx_inline gmx_simd_double_t
+gmx_simd_get_mantissa_d_sparc64_hpc_ace(gmx_simd_double_t x)
+{
+ gmx_int64_t mantmask[2] = {0x000fffffffffffffLL, 0x000fffffffffffffLL};
+ gmx_simd_double_t one = _fjsp_set_v2r8(1.0, 1.0);
+
+ x = _fjsp_and_v2r8(x, _fjsp_load_v2r8((double *)mantmask));
+ return _fjsp_or_v2r8(x, one);
+}
+
+static gmx_inline gmx_simd_double_t
+gmx_simd_set_exponent_d_sparc64_hpc_ace(gmx_simd_double_t x)
+{
+ const gmx_int64_t expbias = 1023;
+ union
+ {
+ _fjsp_v2r8 simd;
+ long long int i[2];
+ }
+ conv;
+
+
+ _fjsp_store_v2r8( (double *) &conv.simd, gmx_simd_cvt_d2i_sparc64_hpc_ace(x));
+ conv.i[0] = (conv.i[0] + expbias) << 52;
+ conv.i[1] = (conv.i[1] + expbias) << 52;
+
+ return _fjsp_load_v2r8( (double *) &conv.simd);
+}
+
+
+/* No SIMD4 support, since both single & double are only 2-wide */
+
+#endif /* GMX_SIMD_IMPL_SPARC64_HPC_ACE_H */
# include "gromacs/simd/impl_x86_sse2/impl_x86_sse2.h"
#elif defined GMX_SIMD_IBM_QPX
# include "gromacs/simd/impl_ibm_qpx/impl_ibm_qpx.h"
+#elif defined GMX_SIMD_SPARC64_HPC_ACE
+# include "gromacs/simd/impl_sparc64_hpc_ace/impl_sparc64_hpc_ace.h"
#elif (defined GMX_SIMD_REFERENCE) || (defined DOXYGEN)
/* Plain C SIMD reference implementation, also serves as documentation.
* For now this code path will also be taken for Sparc64_HPC_ACE since we have
const gmx_simd_real_t rSimd_ExpDouble = setSimdRealFrom3R( 6.287393598732017379054414e+176,
8.794495252903116023030553e-140,
-3.637060701570496477655022e+202);
-// Magic FP numbers corresponding to specific bit patterns
-const gmx_simd_real_t rSimd_Bits1 = setSimdRealFrom1R(-1.07730874267432137e+236);
-const gmx_simd_real_t rSimd_Bits2 = setSimdRealFrom1R(-9.25596313493178307e+061);
-const gmx_simd_real_t rSimd_Bits3 = setSimdRealFrom1R(-8.57750588235293981e+003);
-const gmx_simd_real_t rSimd_Bits4 = setSimdRealFrom1R( 1.22416778341839096e-250);
-const gmx_simd_real_t rSimd_Bits5 = setSimdRealFrom1R(-1.15711777004554095e+294);
-const gmx_simd_real_t rSimd_Bits6 = setSimdRealFrom1R( 1.53063836115600621e-018);
-# else
-// Magic FP numbers corresponding to specific bit patterns
-const gmx_simd_real_t rSimd_Bits1 = setSimdRealFrom1R(-5.9654142337e+29);
-const gmx_simd_real_t rSimd_Bits2 = setSimdRealFrom1R(-1.0737417600e+08);
-const gmx_simd_real_t rSimd_Bits3 = setSimdRealFrom1R(-6.0235290527e+00);
-const gmx_simd_real_t rSimd_Bits4 = setSimdRealFrom1R( 1.0788832913e-31);
-const gmx_simd_real_t rSimd_Bits5 = setSimdRealFrom1R(-1.0508719529e+37);
-const gmx_simd_real_t rSimd_Bits6 = setSimdRealFrom1R( 1.1488970369e-02);
# endif
#endif // GMX_SIMD_HAVE_REAL
#ifdef GMX_SIMD_HAVE_INT32
const gmx_simd4_real_t rSimd_ExpDouble = setSimd4RealFrom3R( 6.287393598732017379054414e+176,
8.794495252903116023030553e-140,
-3.637060701570496477655022e+202);
-// Magic FP numbers corresponding to specific bit patterns
-const gmx_simd4_real_t rSimd4_Bits1 = setSimd4RealFrom1R(-1.07730874267432137e+236);
-const gmx_simd4_real_t rSimd4_Bits2 = setSimd4RealFrom1R(-9.25596313493178307e+061);
-const gmx_simd4_real_t rSimd4_Bits3 = setSimd4RealFrom1R(-8.57750588235293981e+003);
-const gmx_simd4_real_t rSimd4_Bits4 = setSimd4RealFrom1R( 1.22416778341839096e-250);
-const gmx_simd4_real_t rSimd4_Bits5 = setSimd4RealFrom1R(-1.15711777004554095e+294);
-const gmx_simd4_real_t rSimd4_Bits6 = setSimd4RealFrom1R( 1.53063836115600621e-018);
-# else
-const gmx_simd4_real_t rSimd4_Bits1 = setSimd4RealFrom1R(-5.9654142337e+29);
-const gmx_simd4_real_t rSimd4_Bits2 = setSimd4RealFrom1R(-1.0737417600e+08);
-const gmx_simd4_real_t rSimd4_Bits3 = setSimd4RealFrom1R(-6.0235290527e+00);
-const gmx_simd4_real_t rSimd4_Bits4 = setSimd4RealFrom1R( 1.0788832913e-31);
-const gmx_simd4_real_t rSimd4_Bits5 = setSimd4RealFrom1R(-1.0508719529e+37);
-const gmx_simd4_real_t rSimd4_Bits6 = setSimd4RealFrom1R( 1.1488970369e-02);
# endif
::std::vector<real>
}
#ifdef GMX_SIMD4_HAVE_LOGICAL
+/* 1.3333282470703125 has mantissa 0101010101010101 (followed by zeros)
+ * 1.79998779296875 has mantissa 1100110011001100 (followed by zeros)
+ * 1.26666259765625 has mantissa 0100010001000100 (followed by zeros)
+ * 1.8666534423828125 has mantissa 1101110111011101 (followed by zeros)
+ *
+ * Since all of them have the same exponent (2^0), the exponent will
+ * not change with AND or OR operations.
+ */
TEST_F(Simd4FloatingpointTest, gmxSimd4AndR)
{
- GMX_EXPECT_SIMD4_REAL_EQ(rSimd4_Bits3, gmx_simd4_and_r(rSimd4_Bits1, rSimd4_Bits2)); // Bits1 & Bits2 = Bits3
+ GMX_EXPECT_SIMD4_REAL_EQ(setSimd4RealFrom1R(1.26666259765625),
+ gmx_simd4_and_r(gmx_simd4_set1_r(1.3333282470703125),
+ gmx_simd4_set1_r(1.79998779296875)));
}
-TEST_F(Simd4FloatingpointTest, gmxSimd4AndnotR)
+TEST_F(Simd4FloatingpointTest, gmxSimd4OrR)
{
- GMX_EXPECT_SIMD4_REAL_EQ(rSimd4_Bits4, gmx_simd4_andnot_r(rSimd4_Bits1, rSimd4_Bits2)); // (~Bits1) & Bits2 = Bits3
+ GMX_EXPECT_SIMD4_REAL_EQ(setSimd4RealFrom1R(1.8666534423828125),
+ gmx_simd4_or_r(gmx_simd4_set1_r(1.3333282470703125),
+ gmx_simd4_set1_r(1.79998779296875)));
}
-TEST_F(Simd4FloatingpointTest, gmxSimd4OrR)
+TEST_F(Simd4FloatingpointTest, gmxSimd4XorR)
{
- GMX_EXPECT_SIMD4_REAL_EQ(rSimd4_Bits5, gmx_simd4_or_r(rSimd4_Bits1, rSimd4_Bits2)); // Bits1 | Bits2 = Bits3
+ /* Test xor by taking xor with a number and its negative. This should result
+ * in only the sign bit being set. We then use this bit change the sign of
+ * different numbers.
+ */
+ gmx_simd4_real_t signbit = gmx_simd4_xor_r(gmx_simd4_set1_r(1.5), gmx_simd4_set1_r(-1.5));
+ GMX_EXPECT_SIMD4_REAL_EQ(setSimd4RealFrom3R(-1, 2, -3), gmx_simd4_xor_r(signbit, setSimd4RealFrom3R(1, -2, 3)));
}
-TEST_F(Simd4FloatingpointTest, gmxSimd4XorR)
+TEST_F(Simd4FloatingpointTest, gmxSimd4AndnotR)
{
- GMX_EXPECT_SIMD4_REAL_EQ(rSimd4_Bits6, gmx_simd4_xor_r(rSimd4_Bits1, rSimd4_Bits2)); // Bits1 ^ Bits2 = Bits3
+ /* Use xor (which we already tested, so fix that first if both tests fail)
+ * to extract the sign bit, and then use andnot to take absolute values.
+ */
+ gmx_simd4_real_t signbit = gmx_simd4_xor_r(gmx_simd4_set1_r(1.5), gmx_simd4_set1_r(-1.5));
+ GMX_EXPECT_SIMD4_REAL_EQ(setSimd4RealFrom3R(1, 2, 3), gmx_simd4_andnot_r(signbit, setSimd4RealFrom3R(-1, 2, -3)));
}
+
#endif
TEST_F(Simd4FloatingpointTest, gmxSimd4MaxR)
}
#ifdef GMX_SIMD_HAVE_LOGICAL
+/* 1.3333282470703125 has mantissa 0101010101010101 (followed by zeros)
+ * 1.79998779296875 has mantissa 1100110011001100 (followed by zeros)
+ * 1.26666259765625 has mantissa 0100010001000100 (followed by zeros)
+ * 1.8666534423828125 has mantissa 1101110111011101 (followed by zeros)
+ *
+ * Since all of them have the same exponent (2^0), the exponent will
+ * not change with AND or OR operations.
+ */
TEST_F(SimdFloatingpointTest, gmxSimdAndR)
{
- GMX_EXPECT_SIMD_REAL_EQ(rSimd_Bits3, gmx_simd_and_r(rSimd_Bits1, rSimd_Bits2)); // Bits1 & Bits2 = Bits3
+ GMX_EXPECT_SIMD_REAL_EQ(setSimdRealFrom1R(1.26666259765625),
+ gmx_simd_and_r(gmx_simd_set1_r(1.3333282470703125),
+ gmx_simd_set1_r(1.79998779296875)));
}
-TEST_F(SimdFloatingpointTest, gmxSimdAndnotR)
+TEST_F(SimdFloatingpointTest, gmxSimdOrR)
{
- GMX_EXPECT_SIMD_REAL_EQ(rSimd_Bits4, gmx_simd_andnot_r(rSimd_Bits1, rSimd_Bits2)); // (~Bits1) & Bits2 = Bits3
+ GMX_EXPECT_SIMD_REAL_EQ(setSimdRealFrom1R(1.8666534423828125),
+ gmx_simd_or_r(gmx_simd_set1_r(1.3333282470703125),
+ gmx_simd_set1_r(1.79998779296875)));
}
-TEST_F(SimdFloatingpointTest, gmxSimdOrR)
+TEST_F(SimdFloatingpointTest, gmxSimdXorR)
{
- GMX_EXPECT_SIMD_REAL_EQ(rSimd_Bits5, gmx_simd_or_r(rSimd_Bits1, rSimd_Bits2)); // Bits1 | Bits2 = Bits3
+ /* Test xor by taking xor with a number and its negative. This should result
+ * in only the sign bit being set. We then use this bit change the sign of
+ * different numbers.
+ */
+ gmx_simd_real_t signbit = gmx_simd_xor_r(gmx_simd_set1_r(1.5), gmx_simd_set1_r(-1.5));
+ GMX_EXPECT_SIMD_REAL_EQ(setSimdRealFrom3R(-1, 2, -3), gmx_simd_xor_r(signbit, setSimdRealFrom3R(1, -2, 3)));
}
-TEST_F(SimdFloatingpointTest, gmxSimdXorR)
+TEST_F(SimdFloatingpointTest, gmxSimdAndnotR)
{
- GMX_EXPECT_SIMD_REAL_EQ(rSimd_Bits6, gmx_simd_xor_r(rSimd_Bits1, rSimd_Bits2)); // Bits1 ^ Bits2 = Bits3
+ /* Use xor (which we already tested, so fix that first if both tests fail)
+ * to extract the sign bit, and then use andnot to take absolute values.
+ */
+ gmx_simd_real_t signbit = gmx_simd_xor_r(gmx_simd_set1_r(1.5), gmx_simd_set1_r(-1.5));
+ GMX_EXPECT_SIMD_REAL_EQ(setSimdRealFrom3R(1, 2, 3), gmx_simd_andnot_r(signbit, setSimdRealFrom3R(-1, 2, -3)));
}
+
#endif
TEST_F(SimdFloatingpointTest, gmxSimdMaxR)