Merge branch release-2016
[alexxy/gromacs.git] / src / gromacs / simd / impl_arm_neon_asimd / impl_arm_neon_asimd_simd_double.h
index 5e43352fc8dd4de744cad27fe48f33993c3f4cf4..77cf7559a8e99c896d725d0d70fbf171d2679d35 100644 (file)
@@ -535,7 +535,7 @@ static inline SimdDInt32 gmx_simdcall
 operator<<(SimdDInt32 a, int n)
 {
     return {
-               vshl_n_s32(a.simdInternal_, n)
+               vshl_s32(a.simdInternal_, vdup_n_s32(n >= 32 ? 32 : n))
     };
 }
 
@@ -543,7 +543,7 @@ static inline SimdDInt32 gmx_simdcall
 operator>>(SimdDInt32 a, int n)
 {
     return {
-               vshr_n_s32(a.simdInternal_, n)
+               vshl_s32(a.simdInternal_, vdup_n_s32(n >= 32 ? -32 : -n))
     };
 }