Enable SIMD register calling convention with gmx_simdcall
[alexxy/gromacs.git] / src / gromacs / simd / impl_x86_avx_256 / impl_x86_avx_256.h
index 1b08ec28ec5a8ddb32e8cf23b40a815fcfd3abd1..d787708b4c0f6e44cd68ed55b727f8190774a02b 100644 (file)
 /*********************************************************
  * SIMD SINGLE PRECISION IMPLEMENTATION HELPER FUNCTIONS *
  *********************************************************/
-static gmx_inline __m256
+static gmx_inline __m256 gmx_simdcall
 gmx_simd_get_exponent_f_avx_256(__m256 x)
 {
     const __m256  expmask      = _mm256_castsi256_ps(_mm256_set1_epi32(0x7F800000));
@@ -363,7 +363,7 @@ gmx_simd_get_exponent_f_avx_256(__m256 x)
     return _mm256_cvtepi32_ps(iexp256);
 }
 
-static gmx_inline __m256
+static gmx_inline __m256 gmx_simdcall
 gmx_simd_get_mantissa_f_avx_256(__m256 x)
 {
     const __m256 mantmask   = _mm256_castsi256_ps(_mm256_set1_epi32(0x007FFFFF));
@@ -373,7 +373,7 @@ gmx_simd_get_mantissa_f_avx_256(__m256 x)
     return _mm256_or_ps(x, one);
 }
 
-static gmx_inline __m256
+static gmx_inline __m256 gmx_simdcall
 gmx_simd_set_exponent_f_avx_256(__m256 x)
 {
     const __m128i expbias      = _mm_set1_epi32(127);
@@ -390,7 +390,7 @@ gmx_simd_set_exponent_f_avx_256(__m256 x)
     return _mm256_castsi256_ps(iexp256);
 }
 
-static gmx_inline float
+static gmx_inline float gmx_simdcall
 gmx_simd_reduce_f_avx_256(__m256 a)
 {
     float  f;
@@ -408,7 +408,7 @@ gmx_simd_reduce_f_avx_256(__m256 a)
 /*********************************************************
  * SIMD DOUBLE PRECISION IMPLEMENTATION HELPER FUNCTIONS *
  *********************************************************/
-static gmx_inline __m256d
+static gmx_inline __m256d gmx_simdcall
 gmx_simd_get_exponent_d_avx_256(__m256d x)
 {
     const __m256d expmask      = _mm256_castsi256_pd( _mm256_set1_epi64x(0x7FF0000000000000LL));
@@ -428,7 +428,7 @@ gmx_simd_get_exponent_d_avx_256(__m256d x)
     return _mm256_cvtepi32_pd(iexp128a);
 }
 
-static gmx_inline __m256d
+static gmx_inline __m256d gmx_simdcall
 gmx_simd_get_mantissa_d_avx_256(__m256d x)
 {
     const __m256d mantmask   = _mm256_castsi256_pd(_mm256_set1_epi64x(0x000FFFFFFFFFFFFFLL));
@@ -438,7 +438,7 @@ gmx_simd_get_mantissa_d_avx_256(__m256d x)
     return _mm256_or_pd(x, one);
 }
 
-static gmx_inline __m256d
+static gmx_inline __m256d gmx_simdcall
 gmx_simd_set_exponent_d_avx_256(__m256d x)
 {
     const __m128i expbias      = _mm_set1_epi32(1023);
@@ -453,7 +453,7 @@ gmx_simd_set_exponent_d_avx_256(__m256d x)
     return _mm256_castsi256_pd(_mm256_insertf128_si256(_mm256_castsi128_si256(iexp128a), iexp128b, 0x1));
 }
 
-static gmx_inline double
+static gmx_inline double gmx_simdcall
 gmx_simd_reduce_d_avx_256(__m256d a)
 {
     double  f;
@@ -466,7 +466,7 @@ gmx_simd_reduce_d_avx_256(__m256d a)
     return f;
 }
 
-static gmx_inline gmx_simd_dibool_t
+static gmx_inline gmx_simd_dibool_t gmx_simdcall
 gmx_simd_cvt_db2dib_avx_256(gmx_simd_dbool_t a)
 {
     __m128i a1 = _mm256_extractf128_si256(_mm256_castpd_si256(a), 0x1);
@@ -476,7 +476,7 @@ gmx_simd_cvt_db2dib_avx_256(gmx_simd_dbool_t a)
     return _mm_blend_epi16(a0, a1, 0xF0);
 }
 
-static gmx_inline gmx_simd_dbool_t
+static gmx_inline gmx_simd_dbool_t gmx_simdcall
 gmx_simd_cvt_dib2db_avx_256(gmx_simd_dibool_t a)
 {
     __m128i a1 = _mm_shuffle_epi32(a, _MM_SHUFFLE(3, 3, 2, 2));
@@ -484,14 +484,14 @@ gmx_simd_cvt_dib2db_avx_256(gmx_simd_dibool_t a)
     return _mm256_castsi256_pd(_mm256_insertf128_si256(_mm256_castsi128_si256(a0), a1, 0x1));
 }
 
-static gmx_inline void
+static gmx_inline void gmx_simdcall
 gmx_simd_cvt_f2dd_avx_256(__m256 f, __m256d *d0, __m256d *d1)
 {
     *d0 = _mm256_cvtps_pd(_mm256_castps256_ps128(f));
     *d1 = _mm256_cvtps_pd(_mm256_extractf128_ps(f, 0x1));
 }
 
-static gmx_inline __m256
+static gmx_inline __m256 gmx_simdcall
 gmx_simd_cvt_dd2f_avx_256(__m256d d0, __m256d d1)
 {
     __m128 f0 = _mm256_cvtpd_ps(d0);
@@ -500,7 +500,7 @@ gmx_simd_cvt_dd2f_avx_256(__m256d d0, __m256d d1)
 }
 
 /* SIMD4 reduce helper */
-static gmx_inline float
+static gmx_inline float gmx_simdcall
 gmx_simd4_reduce_f_avx_256(__m128 a)
 {
     float f;
@@ -511,7 +511,7 @@ gmx_simd4_reduce_f_avx_256(__m128 a)
 }
 
 /* SIMD4 Dotproduct helper function */
-static gmx_inline float
+static gmx_inline float gmx_simdcall
 gmx_simd4_dotproduct3_f_avx_256(__m128 a, __m128 b)
 {
     float  f;
@@ -523,7 +523,7 @@ gmx_simd4_dotproduct3_f_avx_256(__m128 a, __m128 b)
     return f;
 }
 
-static gmx_inline double
+static gmx_inline double gmx_simdcall
 gmx_simd4_dotproduct3_d_avx_256(__m256d a, __m256d b)
 {
     double  d;