===================================================================
@@ -1241,22 +1241,21 @@ __attribute__ ((__gnu_inline__, __always
_mm_srlv_epi64 (__m128i __X, __m128i __Y)
{
return (__m128i) __builtin_ia32_psrlv2di ((__v2di)__X, (__v2di)__Y);
}
#ifdef __OPTIMIZE__
extern __inline __m128d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_i32gather_pd (double const *__base, __m128i __index, const int __scale)
{
- __v2df __zero = _mm_setzero_pd ();
- __v2df __mask = _mm_cmpeq_pd (__zero, __zero);
+ __v2df __mask = (__v2df)_mm_set1_epi64x (-1);
return (__m128d) __builtin_ia32_gathersiv2df (_mm_undefined_pd (),
__base,
(__v4si)__index,
__mask,
__scale);
}
extern __inline __m128d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
@@ -1267,22 +1266,21 @@ _mm_mask_i32gather_pd (__m128d __src, do
__base,
(__v4si)__index,
(__v2df)__mask,
__scale);
}
extern __inline __m256d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_i32gather_pd (double const *__base, __m128i __index, const int __scale)
{
- __v4df __zero = _mm256_setzero_pd ();
- __v4df __mask = _mm256_cmp_pd (__zero, __zero, _CMP_EQ_OQ);
+ __v4df __mask = (__v4df)_mm256_set1_epi64x (-1);
return (__m256d) __builtin_ia32_gathersiv4df (_mm256_undefined_pd (),
__base,
(__v4si)__index,
__mask,
__scale);
}
extern __inline __m256d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
@@ -1294,21 +1292,21 @@ _mm256_mask_i32gather_pd (__m256d __src,
(__v4si)__index,
(__v4df)__mask,
__scale);
}
extern __inline __m128d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_i64gather_pd (double const *__base, __m128i __index, const int __scale)
{
__v2df __src = _mm_setzero_pd ();
- __v2df __mask = _mm_cmpeq_pd (__src, __src);
+ __v2df __mask = (__v2df)_mm_set1_epi64x (-1);
return (__m128d) __builtin_ia32_gatherdiv2df (__src,
__base,
(__v2di)__index,
__mask,
__scale);
}
extern __inline __m128d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
@@ -1320,21 +1318,21 @@ _mm_mask_i64gather_pd (__m128d __src, do
(__v2di)__index,
(__v2df)__mask,
__scale);
}
extern __inline __m256d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_i64gather_pd (double const *__base, __m256i __index, const int __scale)
{
__v4df __src = _mm256_setzero_pd ();
- __v4df __mask = _mm256_cmp_pd (__src, __src, _CMP_EQ_OQ);
+ __v4df __mask = (__v4df)_mm256_set1_epi64x (-1);
return (__m256d) __builtin_ia32_gatherdiv4df (__src,
__base,
(__v4di)__index,
__mask,
__scale);
}
extern __inline __m256d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
@@ -1346,21 +1344,21 @@ _mm256_mask_i64gather_pd (__m256d __src,
(__v4di)__index,
(__v4df)__mask,
__scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_i32gather_ps (float const *__base, __m128i __index, const int __scale)
{
__v4sf __src = _mm_setzero_ps ();
- __v4sf __mask = _mm_cmpeq_ps (__src, __src);
+ __v4sf __mask = (__v4sf)_mm_set1_epi64x (-1);
return (__m128) __builtin_ia32_gathersiv4sf (__src,
__base,
(__v4si)__index,
__mask,
__scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
@@ -1372,21 +1370,21 @@ _mm_mask_i32gather_ps (__m128 __src, flo
(__v4si)__index,
(__v4sf)__mask,
__scale);
}
extern __inline __m256
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_i32gather_ps (float const *__base, __m256i __index, const int __scale)
{
__v8sf __src = _mm256_setzero_ps ();
- __v8sf __mask = _mm256_cmp_ps (__src, __src, _CMP_EQ_OQ);
+ __v8sf __mask = (__v8sf)_mm256_set1_epi64x (-1);
return (__m256) __builtin_ia32_gathersiv8sf (__src,
__base,
(__v8si)__index,
__mask,
__scale);
}
extern __inline __m256
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
@@ -1398,21 +1396,21 @@ _mm256_mask_i32gather_ps (__m256 __src,
(__v8si)__index,
(__v8sf)__mask,
__scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_i64gather_ps (float const *__base, __m128i __index, const int __scale)
{
__v4sf __src = _mm_setzero_ps ();
- __v4sf __mask = _mm_cmpeq_ps (__src, __src);
+ __v4sf __mask = (__v4sf)_mm_set1_epi64x (-1);
return (__m128) __builtin_ia32_gatherdiv4sf (__src,
__base,
(__v2di)__index,
__mask,
__scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
@@ -1424,21 +1422,21 @@ _mm_mask_i64gather_ps (__m128 __src, flo
(__v2di)__index,
(__v4sf)__mask,
__scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_i64gather_ps (float const *__base, __m256i __index, const int __scale)
{
__v4sf __src = _mm_setzero_ps ();
- __v4sf __mask = _mm_cmpeq_ps (__src, __src);
+ __v4sf __mask = (__v4sf)_mm_set1_epi64x (-1);
return (__m128) __builtin_ia32_gatherdiv4sf256 (__src,
__base,
(__v4di)__index,
__mask,
__scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
@@ -1665,126 +1663,119 @@ _mm256_mask_i64gather_epi32 (__m128i __s
__base,
(__v4di)__index,
(__v4si)__mask,
__scale);
}
#else /* __OPTIMIZE__ */
#define _mm_i32gather_pd(BASE, INDEX, SCALE) \
(__m128d) __builtin_ia32_gathersiv2df ((__v2df) _mm_setzero_pd (), \
(double const *)BASE, \
(__v4si)(__m128i)INDEX, \
- (__v2df)_mm_set1_pd( \
- (double)(long long int) -1), \
+ (__v2df)_mm_set1_epi64x (-1), \
(int)SCALE)
#define _mm_mask_i32gather_pd(SRC, BASE, INDEX, MASK, SCALE) \
(__m128d) __builtin_ia32_gathersiv2df ((__v2df)(__m128d)SRC, \
(double const *)BASE, \
(__v4si)(__m128i)INDEX, \
(__v2df)(__m128d)MASK, \
(int)SCALE)
#define _mm256_i32gather_pd(BASE, INDEX, SCALE) \
(__m256d) __builtin_ia32_gathersiv4df ((__v4df) _mm256_setzero_pd (), \
(double const *)BASE, \
(__v4si)(__m128i)INDEX, \
- (__v4df)_mm256_set1_pd( \
- (double)(long long int) -1), \
+ (__v4df)_mm256_set1_epi64x(-1),\
(int)SCALE)
#define _mm256_mask_i32gather_pd(SRC, BASE, INDEX, MASK, SCALE) \
(__m256d) __builtin_ia32_gathersiv4df ((__v4df)(__m256d)SRC, \
(double const *)BASE, \
(__v4si)(__m128i)INDEX, \
(__v4df)(__m256d)MASK, \
(int)SCALE)
#define _mm_i64gather_pd(BASE, INDEX, SCALE) \
(__m128d) __builtin_ia32_gatherdiv2df ((__v2df) _mm_setzero_pd (), \
(double const *)BASE, \
(__v2di)(__m128i)INDEX, \
- (__v2df)_mm_set1_pd( \
- (double)(long long int) -1), \
+ (__v2df)_mm_set1_epi64x (-1), \
(int)SCALE)
#define _mm_mask_i64gather_pd(SRC, BASE, INDEX, MASK, SCALE) \
(__m128d) __builtin_ia32_gatherdiv2df ((__v2df)(__m128d)SRC, \
(double const *)BASE, \
(__v2di)(__m128i)INDEX, \
(__v2df)(__m128d)MASK, \
(int)SCALE)
#define _mm256_i64gather_pd(BASE, INDEX, SCALE) \
(__m256d) __builtin_ia32_gatherdiv4df ((__v4df) _mm256_setzero_pd (), \
(double const *)BASE, \
(__v4di)(__m256i)INDEX, \
- (__v4df)_mm256_set1_pd( \
- (double)(long long int) -1), \
+ (__v4df)_mm256_set1_epi64x(-1),\
(int)SCALE)
#define _mm256_mask_i64gather_pd(SRC, BASE, INDEX, MASK, SCALE) \
(__m256d) __builtin_ia32_gatherdiv4df ((__v4df)(__m256d)SRC, \
(double const *)BASE, \
(__v4di)(__m256i)INDEX, \
(__v4df)(__m256d)MASK, \
(int)SCALE)
#define _mm_i32gather_ps(BASE, INDEX, SCALE) \
(__m128) __builtin_ia32_gathersiv4sf ((__v4sf) _mm_setzero_ps (), \
(float const *)BASE, \
(__v4si)(__m128i)INDEX, \
- _mm_set1_ps ((float)(int) -1), \
+ (__v4sf)_mm_set1_epi64x (-1), \
(int)SCALE)
#define _mm_mask_i32gather_ps(SRC, BASE, INDEX, MASK, SCALE) \
(__m128) __builtin_ia32_gathersiv4sf ((__v4sf)(__m128d)SRC, \
(float const *)BASE, \
(__v4si)(__m128i)INDEX, \
(__v4sf)(__m128d)MASK, \
(int)SCALE)
#define _mm256_i32gather_ps(BASE, INDEX, SCALE) \
(__m256) __builtin_ia32_gathersiv8sf ((__v8sf) _mm256_setzero_ps (), \
(float const *)BASE, \
(__v8si)(__m256i)INDEX, \
- (__v8sf)_mm256_set1_ps ( \
- (float)(int) -1), \
+ (__v8sf)_mm256_set1_epi64x(-1),\
(int)SCALE)
#define _mm256_mask_i32gather_ps(SRC, BASE, INDEX, MASK, SCALE) \
(__m256) __builtin_ia32_gathersiv8sf ((__v8sf)(__m256)SRC, \
(float const *)BASE, \
(__v8si)(__m256i)INDEX, \
(__v8sf)(__m256d)MASK, \
(int)SCALE)
#define _mm_i64gather_ps(BASE, INDEX, SCALE) \
(__m128) __builtin_ia32_gatherdiv4sf ((__v4sf) _mm_setzero_pd (), \
(float const *)BASE, \
(__v2di)(__m128i)INDEX, \
- (__v4sf)_mm_set1_ps ( \
- (float)(int) -1), \
+ (__v4sf)_mm_set1_epi64x (-1), \
(int)SCALE)
#define _mm_mask_i64gather_ps(SRC, BASE, INDEX, MASK, SCALE) \
(__m128) __builtin_ia32_gatherdiv4sf ((__v4sf)(__m128)SRC, \
(float const *)BASE, \
(__v2di)(__m128i)INDEX, \
(__v4sf)(__m128d)MASK, \
(int)SCALE)
#define _mm256_i64gather_ps(BASE, INDEX, SCALE) \
(__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf) _mm_setzero_ps (), \
(float const *)BASE, \
(__v4di)(__m256i)INDEX, \
- (__v4sf)_mm_set1_ps( \
- (float)(int) -1), \
+ (__v4sf)_mm_set1_epi64x (-1),\
(int)SCALE)
#define _mm256_mask_i64gather_ps(SRC, BASE, INDEX, MASK, SCALE) \
(__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf)(__m128)SRC, \
(float const *)BASE, \
(__v4di)(__m256i)INDEX, \
(__v4sf)(__m128)MASK, \
(int)SCALE)
#define _mm_i32gather_epi64(BASE, INDEX, SCALE) \