Sort all includes in src/gromacs
[alexxy/gromacs.git] / src / gromacs / simd / impl_x86_avx_256 / impl_x86_avx_256.h
index d787708b4c0f6e44cd68ed55b727f8190774a02b..999b417d6899ce2fdf1da590f279546262a1b193 100644 (file)
 #ifndef GMX_SIMD_IMPL_X86_AVX_256_H
 #define GMX_SIMD_IMPL_X86_AVX_256_H
 
+#include "config.h"
+
 #include <math.h>
+
 #include <immintrin.h>
 
 /* It is cleaner to start the AVX implementation from scratch rather than
 #define gmx_simd_xor_f             _mm256_xor_ps
 #define gmx_simd_rsqrt_f           _mm256_rsqrt_ps
 #define gmx_simd_rcp_f             _mm256_rcp_ps
-#define gmx_simd_fabs_f(x)         _mm256_andnot_ps(_mm256_set1_ps(-0.0), x)
-#define gmx_simd_fneg_f(x)         _mm256_xor_ps(x, _mm256_set1_ps(-0.0))
+#define gmx_simd_fabs_f(x)         _mm256_andnot_ps(_mm256_set1_ps(GMX_FLOAT_NEGZERO), x)
+#define gmx_simd_fneg_f(x)         _mm256_xor_ps(x, _mm256_set1_ps(GMX_FLOAT_NEGZERO))
 #define gmx_simd_max_f             _mm256_max_ps
 #define gmx_simd_min_f             _mm256_min_ps
 #define gmx_simd_round_f(x)        _mm256_round_ps(x, _MM_FROUND_NINT)
 #define gmx_simd_set_exponent_f    gmx_simd_set_exponent_f_avx_256
 /* integer datatype corresponding to float: gmx_simd_fint32_t */
 #define gmx_simd_fint32_t          __m256i
-#define gmx_simd_load_fi(m)        _mm256_castps_si256(_mm256_load_ps((const float *)m))
+#define gmx_simd_load_fi(m)        _mm256_load_si256((__m256i const*)m)
 #define gmx_simd_set1_fi           _mm256_set1_epi32
-#define gmx_simd_store_fi(m, x)     _mm256_store_ps((float *)m, _mm256_castsi256_ps(x))
-#define gmx_simd_loadu_fi(m)       _mm256_castps_si256(_mm256_loadu_ps((const float *)m))
-#define gmx_simd_storeu_fi(m, x)    _mm256_storeu_ps((float *)m, _mm256_castsi256_ps(x))
+#define gmx_simd_store_fi(m, x)    _mm256_store_si256((__m256i *)m, x)
+#define gmx_simd_loadu_fi(m)       _mm256_loadu_si256((__m256i const*)m)
+#define gmx_simd_storeu_fi(m, x)   _mm256_storeu_si256((__m256i *)m, x)
 #define gmx_simd_setzero_fi        _mm256_setzero_si256
 #define gmx_simd_cvt_f2i           _mm256_cvtps_epi32
 #define gmx_simd_cvtt_f2i          _mm256_cvttps_epi32