implemented plain-C SIMD macros for reference
authorBerk Hess <hess@kth.se>
Fri, 12 Apr 2013 17:11:09 +0000 (19:11 +0200)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Wed, 24 Jul 2013 13:30:37 +0000 (15:30 +0200)
commiteb153417c0ef379795cacd7c884a3cb4f34862c1
tree6a48a824e1806ec5d3f5ea28a81f3f7c0f9b67a9
parent0d56607f70b727e33acc5cdb3c2aa521e0b103a8
implemented plain-C SIMD macros for reference

This is mainly code reorganization.
Adds reference plain-C, slow, arbitrary width SIMD for testing.
Adds FMA for gmx_calc_rsq_pr.
Adds generic SIMD acceleration (also AVX or double) for pme solve.
Moved SIMD vector operations to gmx_simd_vec.h
The math functions invsqrt, inv, pmecorrF and pmecorrV have been
copied from the x86 specific single/double files to generic files
using the SIMD macros from gmx_simd_macros.h.
Moved all architecture specific nbnxn_kernel_simd_utils code to
separate files for each SIMD architecture and replaced all macros
by inline functions.
The SIMD reference nbnxn 2xnn kernels now support 16-wide SIMD.
Adds FMA for in nbnxn kernels for calc_rsq and Coulomb forces.

Refs #1173

Change-Id: Ieda78cc3bcb499e8c17ef8ef539c49cbc2d6d74d
31 files changed:
include/gmx_simd_macros.h
include/gmx_simd_math_double.h [new file with mode: 0644]
include/gmx_simd_math_single.h [new file with mode: 0644]
include/gmx_simd_ref.h [new file with mode: 0644]
include/gmx_simd_vec.h [new file with mode: 0644]
include/gmx_x86_simd_double.h [deleted file]
include/gmx_x86_simd_single.h [deleted file]
include/types/nb_verlet.h
include/types/nbnxn_pairlist.h
src/gmxlib/bondfree.c
src/kernel/calc_verletbuf.c
src/mdlib/forcerec.c
src/mdlib/nbnxn_atomdata.c
src/mdlib/nbnxn_consts.h
src/mdlib/nbnxn_internal.h
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn.c
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn_inner.h
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_2xnn_outer.h
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn.c
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn_inner.h
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_4xn_outer.h
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_utils.h
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_utils_ref.h [new file with mode: 0644]
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_utils_x86_128d.h [new file with mode: 0644]
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_utils_x86_128s.h [new file with mode: 0644]
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_utils_x86_256d.h [new file with mode: 0644]
src/mdlib/nbnxn_kernels/nbnxn_kernel_simd_utils_x86_256s.h [new file with mode: 0644]
src/mdlib/nbnxn_search.c
src/mdlib/nbnxn_search_simd_2xnn.h
src/mdlib/nbnxn_search_simd_4xn.h
src/mdlib/pme.c