simd: revamp the (templated) decr3Hsimd() subroutine
authorGilles Gouaillardet <gilles@rist.or.jp>
Thu, 1 Oct 2020 21:11:39 +0000 (21:11 +0000)
committerArtem Zhmurov <zhmurov@gmail.com>
Thu, 1 Oct 2020 21:11:39 +0000 (21:11 +0000)
commit79d2011fa6854aaf19bcf1a10dcae3e42a60f6f6
tree2118d0ea740e72df12badca4019977f6425a0112
parent347001fcb09d4b7a57a5cfe59a676cfb1cd62ecd
simd: revamp the (templated) decr3Hsimd() subroutine

decr3Hsimd<stride>(m, a0, a1, a2) replaces three decrHsimd():

- decrHsimd(m, a0);
- decrHsimd(m + stride, a1);
- decrHsimd(m + 2*stride, a2);

providing a given architecture the opportunity to perform additional optimizations.

A simple wrapper is added to each architecture where
GMX_SIMD_HAVE_HSIMD_UTIL_{FLOAT,DOUBLE} is 1.

Refs !567
24 files changed:
src/gromacs/nbnxm/kernels_simd_2xmm/kernel_inner.h
src/gromacs/simd/impl_arm_neon/impl_arm_neon_definitions.h
src/gromacs/simd/impl_arm_neon_asimd/impl_arm_neon_asimd_definitions.h
src/gromacs/simd/impl_ibm_vmx/impl_ibm_vmx_definitions.h
src/gromacs/simd/impl_ibm_vsx/impl_ibm_vsx_definitions.h
src/gromacs/simd/impl_reference/impl_reference_definitions.h
src/gromacs/simd/impl_reference/impl_reference_util_double.h
src/gromacs/simd/impl_reference/impl_reference_util_float.h
src/gromacs/simd/impl_x86_avx2_128/impl_x86_avx2_128_definitions.h
src/gromacs/simd/impl_x86_avx2_256/impl_x86_avx2_256_definitions.h
src/gromacs/simd/impl_x86_avx_128_fma/impl_x86_avx_128_fma_definitions.h
src/gromacs/simd/impl_x86_avx_256/impl_x86_avx_256_definitions.h
src/gromacs/simd/impl_x86_avx_256/impl_x86_avx_256_util_float.h
src/gromacs/simd/impl_x86_avx_512/impl_x86_avx_512_definitions.h
src/gromacs/simd/impl_x86_avx_512/impl_x86_avx_512_util_double.h
src/gromacs/simd/impl_x86_avx_512/impl_x86_avx_512_util_float.h
src/gromacs/simd/impl_x86_avx_512_knl/impl_x86_avx_512_knl_definitions.h
src/gromacs/simd/impl_x86_mic/impl_x86_mic_definitions.h
src/gromacs/simd/impl_x86_mic/impl_x86_mic_util_double.h
src/gromacs/simd/impl_x86_mic/impl_x86_mic_util_float.h
src/gromacs/simd/impl_x86_sse2/impl_x86_sse2_definitions.h
src/gromacs/simd/impl_x86_sse4_1/impl_x86_sse4_1_definitions.h
src/gromacs/simd/simd.h
src/gromacs/simd/tests/simd_floatingpoint_util.cpp