]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: Add new names for intrinsics.
authorIlya Tocar <ilya.tocar@intel.com>
Thu, 29 Jan 2015 10:55:38 +0000 (10:55 +0000)
committerIlya Tocar <tocarip@gcc.gnu.org>
Thu, 29 Jan 2015 10:55:38 +0000 (13:55 +0300)
Backport from mainline
2015-01-16  Ilya Tocar  <ilya.tocar@intel.com>

Add new names for intrinsics.

gcc/
    * config/i386/avx2intrin.h (_mm256_bslli_epi128,
    _mm256_bsrli_epi128): New.
    * config/i386/emmintrin.h (_mm_bsrli_si128, _mm_bslli_si128): Ditto.

testsuite/
    * gcc.target/i386/sse-14.c: Test new intrinsic.
    * gcc.target/i386/sse-22.c: Ditto.

From-SVN: r220239

gcc/ChangeLog
gcc/config/i386/avx2intrin.h
gcc/config/i386/emmintrin.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/sse-14.c
gcc/testsuite/gcc.target/i386/sse-22.c

index dbc5b159dc7b54788450ed97d0d9eedd736a07ea..c2c1d025af673014e894f970c40e65200f4210e7 100644 (file)
@@ -1,3 +1,9 @@
+2015-01-29  Ilya Tocar  <ilya.tocar@intel.com>
+
+       * config/i386/avx2intrin.h (_mm256_bslli_epi128,
+       _mm256_bsrli_epi128): New.
+       * config/i386/emmintrin.h (_mm_bsrli_si128, _mm_bslli_si128): Ditto.
+
 2015-01-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
        * config/s390/s390.c (s390_memory_move_cost): Increase costs for
index d04c972ed8963a895878be16b982129170f55500..76233b524ffa8aacfe1d8fc2654f8134d2c20e7b 100644 (file)
@@ -646,6 +646,13 @@ _mm256_sign_epi32 (__m256i __X, __m256i __Y)
 }
 
 #ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_bslli_epi128 (__m256i __A, const int __N)
+{
+  return (__m256i)__builtin_ia32_pslldqi256 (__A, __N * 8);
+}
+
 extern __inline __m256i
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 _mm256_slli_si256 (__m256i __A, const int __N)
@@ -653,6 +660,8 @@ _mm256_slli_si256 (__m256i __A, const int __N)
   return (__m256i)__builtin_ia32_pslldqi256 (__A, __N * 8);
 }
 #else
+#define _mm256_bslli_epi128(A, N) \
+  ((__m256i)__builtin_ia32_pslldqi256 ((__m256i)(A), (int)(N) * 8))
 #define _mm256_slli_si256(A, N) \
   ((__m256i)__builtin_ia32_pslldqi256 ((__m256i)(A), (int)(N) * 8))
 #endif
@@ -728,6 +737,13 @@ _mm256_sra_epi32 (__m256i __A, __m128i __B)
 }
 
 #ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_bsrli_epi128 (__m256i __A, const int __N)
+{
+  return (__m256i)__builtin_ia32_psrldqi256 (__A, __N * 8);
+}
+
 extern __inline __m256i
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 _mm256_srli_si256 (__m256i __A, const int __N)
@@ -735,6 +751,8 @@ _mm256_srli_si256 (__m256i __A, const int __N)
   return (__m256i)__builtin_ia32_psrldqi256 (__A, __N * 8);
 }
 #else
+#define _mm256_bsrli_epi128(A, N) \
+  ((__m256i)__builtin_ia32_psrldqi256 ((__m256i)(A), (int)(N) * 8))
 #define _mm256_srli_si256(A, N) \
   ((__m256i)__builtin_ia32_psrldqi256 ((__m256i)(A), (int)(N) * 8))
 #endif
index a2bdf0edade1e3fe8bf852a8b1796ac73338cdcb..8eb5cabdee238f70108b6a9e50961a7cbb5194ae 100644 (file)
@@ -1160,6 +1160,18 @@ _mm_srai_epi32 (__m128i __A, int __B)
 }
 
 #ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_bsrli_si128 (__m128i __A, const int __N)
+{
+  return (__m128i)__builtin_ia32_psrldqi128 (__A, __N * 8);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_bslli_si128 (__m128i __A, const int __N)
+{
+  return (__m128i)__builtin_ia32_pslldqi128 (__A, __N * 8);
+}
+
 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_srli_si128 (__m128i __A, const int __N)
 {
@@ -1172,6 +1184,10 @@ _mm_slli_si128 (__m128i __A, const int __N)
   return (__m128i)__builtin_ia32_pslldqi128 (__A, __N * 8);
 }
 #else
+#define _mm_bsrli_si128(A, N) \
+  ((__m128i)__builtin_ia32_psrldqi128 ((__m128i)(A), (int)(N) * 8))
+#define _mm_bslli_si128(A, N) \
+  ((__m128i)__builtin_ia32_pslldqi128 ((__m128i)(A), (int)(N) * 8))
 #define _mm_srli_si128(A, N) \
   ((__m128i)__builtin_ia32_psrldqi128 ((__m128i)(A), (int)(N) * 8))
 #define _mm_slli_si128(A, N) \
index 90d8fa65b6d9cc5059672dbc90d1e3f20edf34ac..c0122c32e378e89ec80056f28bdc1404c1c469f9 100644 (file)
@@ -1,3 +1,8 @@
+2015-01-29  Ilya Tocar  <ilya.tocar@intel.com>
+
+       * gcc.target/i386/sse-14.c: Test new intrinsic.
+       * gcc.target/i386/sse-22.c: Ditto.
+
 2015-01-27  Paul Thomas  <pault@gcc.gnu.org>
 
        Backport from mainline
index d9a5feddaeab1c896561a599b37d0e874176dcab..ca0745e52326eedc6ced5698b03f6287d263bd57 100644 (file)
@@ -600,6 +600,8 @@ test_2 (_mm_alignr_pi8, __m64, __m64, __m64, 1)
 
 /* emmintrin.h */
 test_2 (_mm_shuffle_pd, __m128d, __m128d, __m128d, 1)
+test_1 (_mm_bsrli_si128, __m128i, __m128i, 1)
+test_1 (_mm_bslli_si128, __m128i, __m128i, 1)
 test_1 (_mm_srli_si128, __m128i, __m128i, 1)
 test_1 (_mm_slli_si128, __m128i, __m128i, 1)
 test_1 (_mm_extract_epi16, int, __m128i, 1)
index e9f227a2a81a21453299432a46828f429a5f0528..e6a1d31e46db4c0eedb722ec120ee1456d4a82ff 100644 (file)
@@ -137,6 +137,8 @@ test_1 (_mm_prefetch, void, void *, _MM_HINT_NTA)
 #endif
 #include <emmintrin.h>
 test_2 (_mm_shuffle_pd, __m128d, __m128d, __m128d, 1)
+test_1 (_mm_bsrli_si128, __m128i, __m128i, 1)
+test_1 (_mm_bslli_si128, __m128i, __m128i, 1)
 test_1 (_mm_srli_si128, __m128i, __m128i, 1)
 test_1 (_mm_slli_si128, __m128i, __m128i, 1)
 test_1 (_mm_extract_epi16, int, __m128i, 1)
@@ -268,6 +270,8 @@ test_2 ( _mm256_blend_epi16, __m256i, __m256i, __m256i, 1)
 test_1 ( _mm256_shuffle_epi32, __m256i, __m256i, 1)
 test_1 ( _mm256_shufflehi_epi16, __m256i, __m256i, 1)
 test_1 ( _mm256_shufflelo_epi16, __m256i, __m256i, 1)
+test_1 ( _mm256_bslli_epi128, __m256i, __m256i, 8)
+test_1 ( _mm256_bsrli_epi128, __m256i, __m256i, 8)
 test_1 ( _mm256_slli_si256, __m256i, __m256i, 8)
 test_1 ( _mm256_srli_si256, __m256i, __m256i, 8)
 test_2 ( _mm_blend_epi32, __m128i, __m128i, __m128i, 1)