Add Power/PowerPC VMX SIMD support
authorErik Lindahl <erik@kth.se>
Fri, 4 Jul 2014 11:36:13 +0000 (13:36 +0200)
committerMark Abraham <mark.j.abraham@gmail.com>
Thu, 18 Sep 2014 20:20:36 +0000 (22:20 +0200)
commitf1234c6422f448e3091d2bcd33053df2e1ad769e
tree35ba5e3e052a74495366bb40f7de72926cbd4498
parent3516886928cc7051705798824afcf32b84a7a3b6
Add Power/PowerPC VMX SIMD support

This adds the low-level SIMD implementation
for IBM VMX, which is present on Power 6 and
later (and PowerPC after PPC970). This will
not generate nbnxn kernels yet, so it is not
enabled by default. Unit tests pass on Power8,
where I also had to work around some vec_lvsl()
issues due to the new little-endian PowerPC
architecture. IBM has some quirks in their
implementation of fnmadd, which occasionally
returns negative zero when IEEE754 would expect
positive zero. This should not cause any problems
in normal Gromacs use, and to avoid problems in
SIMD-math I have changed some operations there to
use fmadd, with swapped signs of constants instead.
This might even save a cycle on some platforms.

Change-Id: I71a70b8807d5bfdba18da887adbcfc97ce3c8cc3
CMakeLists.txt
cmake/gmxTestSimd.cmake
src/config.h.cmakein
src/gromacs/gmxlib/gmx_cpuid.c
src/gromacs/legacyheaders/gmx_cpuid.h
src/gromacs/simd/impl_ibm_vmx/impl_ibm_vmx.h [new file with mode: 0644]
src/gromacs/simd/simd.h
src/gromacs/simd/simd_math.h