Use a constant instead of sizeof(int) for SSE2 immediate constant.
authorErik Lindahl <erik@kth.se>
Sun, 16 Mar 2014 09:13:11 +0000 (10:13 +0100)
committerErik Lindahl <erik@kth.se>
Sun, 16 Mar 2014 09:13:11 +0000 (10:13 +0100)
Apparently gcc-4.8.2 was not able to evaluate sizeof(int) to the
constant 4 at compile time, but thought it was either a 64-bit
value or a non-const value. Since the register sizes are fixed
we simply hardcode the value 4 bytes instead.

Change-Id: If739b733727b032eb7e5b7fa0a75e7cd51989a0b

src/gromacs/simd/impl_x86_sse2/impl_x86_sse2.h

index 5481de1186eb67cff96840b724ff3f0b6d69eb09..20f68f14dec31330d14c776a0c2d38a826dc4186 100644 (file)
 #define gmx_simd_cvt_f2i          _mm_cvtps_epi32
 #define gmx_simd_cvtt_f2i         _mm_cvttps_epi32
 #define gmx_simd_cvt_i2f          _mm_cvtepi32_ps
-#define gmx_simd_extract_fi(x, i)  _mm_cvtsi128_si32(_mm_srli_si128((x), sizeof(int) * (i)))
+#define gmx_simd_extract_fi(x, i)  _mm_cvtsi128_si32(_mm_srli_si128((x), 4 * (i)))
 /* Integer logical ops on gmx_simd_fint32_t */
 #define gmx_simd_slli_fi          _mm_slli_epi32
 #define gmx_simd_srli_fi          _mm_srli_epi32
 #define gmx_simd_cvt_d2i           _mm_cvtpd_epi32
 #define gmx_simd_cvtt_d2i          _mm_cvttpd_epi32
 #define gmx_simd_cvt_i2d           _mm_cvtepi32_pd
-#define gmx_simd_extract_di(x, i)   _mm_cvtsi128_si32(_mm_srli_si128((x), sizeof(int) * (i)))
+#define gmx_simd_extract_di(x, i)   _mm_cvtsi128_si32(_mm_srli_si128((x), 4 * (i)))
 /* Integer logical ops on gmx_simd_dint32_t */
 #define gmx_simd_slli_di           _mm_slli_epi32
 #define gmx_simd_srli_di           _mm_srli_epi32