Commit 0b192937 by Ulrich Drepper Committed by Ulrich Drepper

avxintrin.h (_mm256_undefined_si256): Define.

2014-03-24  Ulrich Drepper  <drepper@gmail.com>

        * config/i386/avxintrin.h (_mm256_undefined_si256): Define.
        (_mm256_undefined_ps): Define.
        (_mm256_undefined_pd): Define.
        * config/i386/emmintrin.h (_mm_undefined_si128): Define.
        (_mm_undefined_pd): Define.
        * config/i386/xmmintrin.h (_mm_undefined_ps): Define.
        * config/i386/avx512fintrin.h (_mm512_undefined_si512): Define.
        (_mm512_undefined_ps): Define.
        (_mm512_undefined_pd): Define.
        Use _mm*_undefined_*.
        * config/i386/avx2intrin.h: Use _mm*_undefined_*.

From-SVN: r208793
parent d0f27fb6
2014-03-24 Ulrich Drepper <drepper@gmail.com>
* config/i386/avxintrin.h (_mm256_undefined_si256): Define.
(_mm256_undefined_ps): Define.
(_mm256_undefined_pd): Define.
* config/i386/emmintrin.h (_mm_undefined_si128): Define.
(_mm_undefined_pd): Define.
* config/i386/xmmintrin.h (_mm_undefined_ps): Define.
* config/i386/avx512fintrin.h (_mm512_undefined_si512): Define.
(_mm512_undefined_ps): Define.
(_mm512_undefined_pd): Define.
Use _mm*_undefined_*.
* config/i386/avx2intrin.h: Use _mm*_undefined_*.
2014-03-24 Alex Velenko <Alex.Velenko@arm.com> 2014-03-24 Alex Velenko <Alex.Velenko@arm.com>
* config/aarch64/aarch64-simd-builtins.def (lshr): DI mode excluded. * config/aarch64/aarch64-simd-builtins.def (lshr): DI mode excluded.
......
...@@ -1233,10 +1233,10 @@ extern __inline __m128d ...@@ -1233,10 +1233,10 @@ extern __inline __m128d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_i32gather_pd (double const *base, __m128i index, const int scale) _mm_i32gather_pd (double const *base, __m128i index, const int scale)
{ {
__v2df src = _mm_setzero_pd (); __v2df zero = _mm_setzero_pd ();
__v2df mask = _mm_cmpeq_pd (src, src); __v2df mask = _mm_cmpeq_pd (zero, zero);
return (__m128d) __builtin_ia32_gathersiv2df (src, return (__m128d) __builtin_ia32_gathersiv2df (_mm_undefined_pd (),
base, base,
(__v4si)index, (__v4si)index,
mask, mask,
...@@ -1259,10 +1259,10 @@ extern __inline __m256d ...@@ -1259,10 +1259,10 @@ extern __inline __m256d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_i32gather_pd (double const *base, __m128i index, const int scale) _mm256_i32gather_pd (double const *base, __m128i index, const int scale)
{ {
__v4df src = _mm256_setzero_pd (); __v4df zero = _mm256_setzero_pd ();
__v4df mask = _mm256_cmp_pd (src, src, _CMP_EQ_OQ); __v4df mask = _mm256_cmp_pd (zero, zero, _CMP_EQ_OQ);
return (__m256d) __builtin_ia32_gathersiv4df (src, return (__m256d) __builtin_ia32_gathersiv4df (_mm256_undefined_pd (),
base, base,
(__v4si)index, (__v4si)index,
mask, mask,
......
...@@ -1168,6 +1168,27 @@ _mm256_movemask_ps (__m256 __A) ...@@ -1168,6 +1168,27 @@ _mm256_movemask_ps (__m256 __A)
} }
extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm256_undefined_pd (void)
{
__m256d __Y = __Y;
return __Y;
}
extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm256_undefined_ps (void)
{
__m256 __Y = __Y;
return __Y;
}
extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm256_undefined_si256 (void)
{
__m256i __Y = __Y;
return __Y;
}
extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm256_setzero_pd (void) _mm256_setzero_pd (void)
{ {
return __extension__ (__m256d){ 0.0, 0.0, 0.0, 0.0 }; return __extension__ (__m256d){ 0.0, 0.0, 0.0, 0.0 };
......
...@@ -86,6 +86,14 @@ _mm_setr_pd (double __W, double __X) ...@@ -86,6 +86,14 @@ _mm_setr_pd (double __W, double __X)
return __extension__ (__m128d){ __W, __X }; return __extension__ (__m128d){ __W, __X };
} }
/* Create an undefined vector. */
extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_undefined_pd (void)
{
__m128d __Y = __Y;
return __Y;
}
/* Create a vector of zeros. */ /* Create a vector of zeros. */
extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_setzero_pd (void) _mm_setzero_pd (void)
...@@ -728,6 +736,14 @@ _mm_move_epi64 (__m128i __A) ...@@ -728,6 +736,14 @@ _mm_move_epi64 (__m128i __A)
return (__m128i)__builtin_ia32_movq128 ((__v2di) __A); return (__m128i)__builtin_ia32_movq128 ((__v2di) __A);
} }
/* Create an undefined vector. */
extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_undefined_si128 (void)
{
__m128i __Y = __Y;
return __Y;
}
/* Create a vector of zeros. */ /* Create a vector of zeros. */
extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_setzero_si128 (void) _mm_setzero_si128 (void)
......
...@@ -102,6 +102,14 @@ typedef float __v4sf __attribute__ ((__vector_size__ (16))); ...@@ -102,6 +102,14 @@ typedef float __v4sf __attribute__ ((__vector_size__ (16)));
#define _MM_FLUSH_ZERO_ON 0x8000 #define _MM_FLUSH_ZERO_ON 0x8000
#define _MM_FLUSH_ZERO_OFF 0x0000 #define _MM_FLUSH_ZERO_OFF 0x0000
/* Create an undefined vector. */
extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_undefined_ps (void)
{
__m128 __Y = __Y;
return __Y;
}
/* Create a vector of zeros. */ /* Create a vector of zeros. */
extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_setzero_ps (void) _mm_setzero_ps (void)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment