Require template parameter for load function
authorRoland Schulz <roland.schulz@intel.com>
Fri, 6 Oct 2017 23:36:50 +0000 (16:36 -0700)
committerRoland Schulz <roland.schulz@intel.com>
Wed, 11 Oct 2017 23:22:14 +0000 (01:22 +0200)
commit67348ea211b634765bfcb79765a1d038f972ed76
tree7367f3d6b176f43a7a12fd0379c36a825bf10093
parent800cb1ea2e81c773a5cb4f212fa89c0775bda7fa
Require template parameter for load function

The implicit conversion from load(float*) to both float
and SimdFloat caused multiple issues. The primary ones:
- Extra complexity in the implementation of traits, ArrayRef, SimdReference
- required compiler tests for ambiguity
- SimdReal x = f(load(m)) //confusing broadcast if f is scalar function
- x = s*load(m) //error-prone scalar multiply if s is scalar

New syntax in templated function is load<T>(m) and in non-templated function
load<SimdReal>(m). While this is slightly longer by itself, it is clearer
and doesn't require to store values in tempories (no ambigious overload errors).

Also avoids the need for the load proxies.

Change-Id: I8109e9365e956aaea428ec338b6a810444e03d77
25 files changed:
src/gromacs/ewald/pme-solve.cpp
src/gromacs/listed-forces/bonded.cpp
src/gromacs/listed-forces/pairs.cpp
src/gromacs/mdlib/clincs.cpp
src/gromacs/mdlib/csettle.cpp
src/gromacs/mdlib/nbnxn_atomdata.cpp
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_outer.h
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_common.h
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_inner.h
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_outer.h
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_prune.cpp
src/gromacs/mdlib/nbnxn_search_simd_2xnn.h
src/gromacs/mdlib/nbnxn_search_simd_4xn.h
src/gromacs/pbcutil/pbc-simd.h
src/gromacs/simd/simd.h
src/gromacs/simd/simd_math.h
src/gromacs/simd/tests/CMakeLists.txt
src/gromacs/simd/tests/bootstrap_loadstore.cpp
src/gromacs/simd/tests/scalar.cpp
src/gromacs/simd/tests/simd.cpp
src/gromacs/simd/tests/simd_ambiguous.cpp [deleted file]
src/gromacs/simd/tests/simd_floatingpoint.cpp
src/gromacs/simd/tests/simd_floatingpoint_util.cpp
src/gromacs/simd/tests/simd_integer.cpp
src/gromacs/tables/tests/splinetable.cpp