]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
avx512fintrin.h (_ktest_mask16_u8, [...]): Move to ...
authorJakub Jelinek <jakub@redhat.com>
Thu, 26 Jan 2017 12:24:58 +0000 (13:24 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 26 Jan 2017 12:24:58 +0000 (13:24 +0100)
* config/i386/avx512fintrin.h (_ktest_mask16_u8,
_ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ...
* config/i386/avx512dqintrin.h (_ktest_mask16_u8,
_ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here.
* config/i386/i386-builtin.def (__builtin_ia32_ktestchi,
__builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use
OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F.
* config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator.
(kadd<mode>, ktest<mode>): Use it instead of SWI1248_AVX512BWDQ.
testsuite/
* gcc.target/i386/avx512f-kaddw-1.c: Renamed to ...
* gcc.target/i386/avx512dq-kaddw-1.c: ... this.  New test.  Replace
avx512f with avx512dq.
* gcc.target/i386/avx512f-ktestw-1.c: Renamed to ...
* gcc.target/i386/avx512dq-ktestw-1.c: ... this.  New test.  Replace
avx512f with avx512dq.
* gcc.target/i386/avx512f-ktestw-2.c: Renamed to ...
* gcc.target/i386/avx512dq-ktestw-2.c: ... this.  New test.  Replace
avx512f with avx512dq.

From-SVN: r244929

gcc/ChangeLog
gcc/config/i386/avx512dqintrin.h
gcc/config/i386/avx512fintrin.h
gcc/config/i386/i386-builtin.def
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/avx512dq-kaddw-1.c [moved from gcc/testsuite/gcc.target/i386/avx512f-kaddw-1.c with 80% similarity]
gcc/testsuite/gcc.target/i386/avx512dq-ktestw-1.c [moved from gcc/testsuite/gcc.target/i386/avx512f-ktestw-1.c with 84% similarity]
gcc/testsuite/gcc.target/i386/avx512dq-ktestw-2.c [moved from gcc/testsuite/gcc.target/i386/avx512f-ktestw-2.c with 67% similarity]

index eb0e70564150c03092d714a38433c6fdba94e815..c0d588b630c288f77cc3d8894ceb077601495b46 100644 (file)
@@ -1,3 +1,15 @@
+2017-01-26  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/i386/avx512fintrin.h (_ktest_mask16_u8,
+       _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ...
+       * config/i386/avx512dqintrin.h (_ktest_mask16_u8,
+       _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here.
+       * config/i386/i386-builtin.def (__builtin_ia32_ktestchi,
+       __builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use
+       OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F.
+       * config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator.
+       (kadd<mode>, ktest<mode>): Use it instead of SWI1248_AVX512BWDQ.
+
 2017-01-26  Marek Polacek  <polacek@redhat.com>
 
        PR c/79199
index 670e41e0b94021a5aa6ea0e5e2153953a3c5c4d5..88e8adb18c54baad7c89daae59a51f2f6bfe3693 100644 (file)
@@ -56,6 +56,28 @@ _ktestc_mask8_u8 (__mmask8 __A, __mmask8 __B)
   return (unsigned char) __builtin_ia32_ktestcqi (__A, __B);
 }
 
+extern __inline unsigned char
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_ktest_mask16_u8  (__mmask16 __A,  __mmask16 __B, unsigned char *__CF)
+{
+  *__CF = (unsigned char) __builtin_ia32_ktestchi (__A, __B);
+  return (unsigned char) __builtin_ia32_ktestzhi (__A, __B);
+}
+
+extern __inline unsigned char
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_ktestz_mask16_u8 (__mmask16 __A, __mmask16 __B)
+{
+  return (unsigned char) __builtin_ia32_ktestzhi (__A, __B);
+}
+
+extern __inline unsigned char
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_ktestc_mask16_u8 (__mmask16 __A, __mmask16 __B)
+{
+  return (unsigned char) __builtin_ia32_ktestchi (__A, __B);
+}
+
 extern __inline unsigned char
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 _kortest_mask8_u8  (__mmask8 __A,  __mmask8 __B, unsigned char *__CF)
@@ -85,6 +107,13 @@ _kadd_mask8 (__mmask8 __A, __mmask8 __B)
   return (__mmask8) __builtin_ia32_kaddqi ((__mmask8) __A, (__mmask8) __B);
 }
 
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_kadd_mask16 (__mmask16 __A, __mmask16 __B)
+{
+  return (__mmask16) __builtin_ia32_kaddhi ((__mmask16) __A, (__mmask16) __B);
+}
+
 extern __inline unsigned int
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 _cvtmask8_u32 (__mmask8 __A)
index 6c11453287ac5edb7092aeca962905ccc5ce04c7..68c3d6a105ae4fca9b35925a376096b5047651d3 100644 (file)
@@ -10006,28 +10006,6 @@ _mm512_maskz_expandloadu_epi32 (__mmask16 __U, void const *__P)
 #define _kxnor_mask16 _mm512_kxnor
 #define _kxor_mask16 _mm512_kxor
 
-extern __inline unsigned char
-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_ktest_mask16_u8  (__mmask16 __A,  __mmask16 __B, unsigned char *__CF)
-{
-  *__CF = (unsigned char) __builtin_ia32_ktestchi (__A, __B);
-  return (unsigned char) __builtin_ia32_ktestzhi (__A, __B);
-}
-
-extern __inline unsigned char
-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_ktestz_mask16_u8 (__mmask16 __A, __mmask16 __B)
-{
-  return (unsigned char) __builtin_ia32_ktestzhi (__A, __B);
-}
-
-extern __inline unsigned char
-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_ktestc_mask16_u8 (__mmask16 __A, __mmask16 __B)
-{
-  return (unsigned char) __builtin_ia32_ktestchi (__A, __B);
-}
-
 extern __inline unsigned char
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 _kortest_mask16_u8  (__mmask16 __A,  __mmask16 __B, unsigned char *__CF)
@@ -10052,13 +10030,6 @@ _kortestc_mask16_u8 (__mmask16 __A, __mmask16 __B)
                                                    (__mmask16) __B);
 }
 
-extern __inline __mmask16
-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_kadd_mask16 (__mmask16 __A, __mmask16 __B)
-{
-  return (__mmask16) __builtin_ia32_kaddhi ((__mmask16) __A, (__mmask16) __B);
-}
-
 extern __inline unsigned int
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 _cvtmask16_u32 (__mmask16 __A)
index 137aa3e10665ec94bafbff73ce1a722234836736..a8fe0a510a464083b892d27bf4a827ef7949bc56 100644 (file)
@@ -1466,8 +1466,8 @@ BDESC (OPTION_MASK_ISA_AVX512BW, CODE_FOR_kiorsi, "__builtin_ia32_korsi", IX86_B
 BDESC (OPTION_MASK_ISA_AVX512BW, CODE_FOR_kiordi, "__builtin_ia32_kordi", IX86_BUILTIN_KOR64, UNKNOWN, (int) UDI_FTYPE_UDI_UDI)
 BDESC (OPTION_MASK_ISA_AVX512DQ, CODE_FOR_ktestqi, "__builtin_ia32_ktestcqi", IX86_BUILTIN_KTESTC8, UNKNOWN, (int) UQI_FTYPE_UQI_UQI)
 BDESC (OPTION_MASK_ISA_AVX512DQ, CODE_FOR_ktestqi, "__builtin_ia32_ktestzqi", IX86_BUILTIN_KTESTZ8, UNKNOWN, (int) UQI_FTYPE_UQI_UQI)
-BDESC (OPTION_MASK_ISA_AVX512F, CODE_FOR_ktesthi, "__builtin_ia32_ktestchi", IX86_BUILTIN_KTESTC16, UNKNOWN, (int) UHI_FTYPE_UHI_UHI)
-BDESC (OPTION_MASK_ISA_AVX512F, CODE_FOR_ktesthi, "__builtin_ia32_ktestzhi", IX86_BUILTIN_KTESTZ16, UNKNOWN, (int) UHI_FTYPE_UHI_UHI)
+BDESC (OPTION_MASK_ISA_AVX512DQ, CODE_FOR_ktesthi, "__builtin_ia32_ktestchi", IX86_BUILTIN_KTESTC16, UNKNOWN, (int) UHI_FTYPE_UHI_UHI)
+BDESC (OPTION_MASK_ISA_AVX512DQ, CODE_FOR_ktesthi, "__builtin_ia32_ktestzhi", IX86_BUILTIN_KTESTZ16, UNKNOWN, (int) UHI_FTYPE_UHI_UHI)
 BDESC (OPTION_MASK_ISA_AVX512BW, CODE_FOR_ktestsi, "__builtin_ia32_ktestcsi", IX86_BUILTIN_KTESTC32, UNKNOWN, (int) USI_FTYPE_USI_USI)
 BDESC (OPTION_MASK_ISA_AVX512BW, CODE_FOR_ktestsi, "__builtin_ia32_ktestzsi", IX86_BUILTIN_KTESTZ32, UNKNOWN, (int) USI_FTYPE_USI_USI)
 BDESC (OPTION_MASK_ISA_AVX512BW, CODE_FOR_ktestdi, "__builtin_ia32_ktestcdi", IX86_BUILTIN_KTESTC64, UNKNOWN, (int) UDI_FTYPE_UDI_UDI)
@@ -1495,7 +1495,7 @@ BDESC (OPTION_MASK_ISA_AVX512F, CODE_FOR_kmovw, "__builtin_ia32_kmovw", IX86_BUI
 BDESC (OPTION_MASK_ISA_AVX512BW, CODE_FOR_kmovd, "__builtin_ia32_kmovd", IX86_BUILTIN_KMOV32, UNKNOWN, (int) USI_FTYPE_USI)
 BDESC (OPTION_MASK_ISA_AVX512BW, CODE_FOR_kmovq, "__builtin_ia32_kmovq", IX86_BUILTIN_KMOV64, UNKNOWN, (int) UDI_FTYPE_UDI)
 BDESC (OPTION_MASK_ISA_AVX512DQ, CODE_FOR_kaddqi, "__builtin_ia32_kaddqi", IX86_BUILTIN_KADD8, UNKNOWN, (int) UQI_FTYPE_UQI_UQI)
-BDESC (OPTION_MASK_ISA_AVX512F, CODE_FOR_kaddhi, "__builtin_ia32_kaddhi", IX86_BUILTIN_KADD16, UNKNOWN, (int) UHI_FTYPE_UHI_UHI)
+BDESC (OPTION_MASK_ISA_AVX512DQ, CODE_FOR_kaddhi, "__builtin_ia32_kaddhi", IX86_BUILTIN_KADD16, UNKNOWN, (int) UHI_FTYPE_UHI_UHI)
 BDESC (OPTION_MASK_ISA_AVX512BW, CODE_FOR_kaddsi, "__builtin_ia32_kaddsi", IX86_BUILTIN_KADD32, UNKNOWN, (int) USI_FTYPE_USI_USI)
 BDESC (OPTION_MASK_ISA_AVX512BW, CODE_FOR_kadddi, "__builtin_ia32_kadddi", IX86_BUILTIN_KADD64, UNKNOWN, (int) UDI_FTYPE_UDI_UDI)
 
index 0d074f851a2f0eff1cdfd9a19e37d0d508173275..a19c8f2bc2e05d6ff80750f703047907c8ef88ad 100644 (file)
 (define_mode_iterator SWI1248_AVX512BW
   [QI HI (SI "TARGET_AVX512BW") (DI "TARGET_AVX512BW")])
 
+;; All integer modes with AVX512BW/DQ, even HImode requires DQ.
+(define_mode_iterator SWI1248_AVX512BWDQ2
+  [(QI "TARGET_AVX512DQ") (HI "TARGET_AVX512DQ")
+   (SI "TARGET_AVX512BW") (DI "TARGET_AVX512BW")])
+
 (define_expand "kmov<mskmodesuffix>"
   [(set (match_operand:SWI1248_AVX512BWDQ 0 "nonimmediate_operand")
        (match_operand:SWI1248_AVX512BWDQ 1 "nonimmediate_operand"))]
           (const_string "<MODE>")))])
 
 (define_insn "kadd<mode>"
-  [(set (match_operand:SWI1248_AVX512BWDQ 0 "register_operand" "=k")
-       (plus:SWI1248_AVX512BWDQ
-         (match_operand:SWI1248_AVX512BWDQ 1 "register_operand" "k")
-         (match_operand:SWI1248_AVX512BWDQ 2 "register_operand" "k")))
+  [(set (match_operand:SWI1248_AVX512BWDQ2 0 "register_operand" "=k")
+       (plus:SWI1248_AVX512BWDQ2
+         (match_operand:SWI1248_AVX512BWDQ2 1 "register_operand" "k")
+         (match_operand:SWI1248_AVX512BWDQ2 2 "register_operand" "k")))
    (unspec [(const_int 0)] UNSPEC_MASKOP)]
   "TARGET_AVX512F"
   "kadd<mskmodesuffix>\t{%2, %1, %0|%0, %1, %2}"
 (define_insn "ktest<mode>"
   [(set (reg:CC FLAGS_REG)
        (unspec:CC
-         [(match_operand:SWI1248_AVX512BWDQ 0 "register_operand" "k")
-          (match_operand:SWI1248_AVX512BWDQ 1 "register_operand" "k")]
+         [(match_operand:SWI1248_AVX512BWDQ2 0 "register_operand" "k")
+          (match_operand:SWI1248_AVX512BWDQ2 1 "register_operand" "k")]
          UNSPEC_KTEST))]
   "TARGET_AVX512F"
   "ktest<mskmodesuffix>\t{%1, %0|%0, %1}"
index 6b5ecb417ddafed385a83dbb7f3b98ae98c0dd8b..4054dd0a11ab37fbacf37131f48e46749d67b955 100644 (file)
@@ -1,3 +1,15 @@
+2017-01-26  Jakub Jelinek  <jakub@redhat.com>
+
+       * gcc.target/i386/avx512f-kaddw-1.c: Renamed to ...
+       * gcc.target/i386/avx512dq-kaddw-1.c: ... this.  New test.  Replace
+       avx512f with avx512dq.
+       * gcc.target/i386/avx512f-ktestw-1.c: Renamed to ...
+       * gcc.target/i386/avx512dq-ktestw-1.c: ... this.  New test.  Replace
+       avx512f with avx512dq.
+       * gcc.target/i386/avx512f-ktestw-2.c: Renamed to ...
+       * gcc.target/i386/avx512dq-ktestw-2.c: ... this.  New test.  Replace
+       avx512f with avx512dq.
+
 2017-01-26  Marek Polacek  <polacek@redhat.com>
 
        PR c/79199
similarity index 80%
rename from gcc/testsuite/gcc.target/i386/avx512f-kaddw-1.c
rename to gcc/testsuite/gcc.target/i386/avx512dq-kaddw-1.c
index 957a39540fb55b9346ffe0226c38748c07d5b30d..86d92b997a95dec7211353b4ba369b3e7f57f792 100644 (file)
@@ -1,11 +1,11 @@
 /* { dg-do compile } */
-/* { dg-options "-mavx512f -O2" } */
+/* { dg-options "-mavx512dq -O2" } */
 /* { dg-final { scan-assembler-times "kaddw\[ \\t\]+\[^\{\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
 
 #include <immintrin.h>
 
 void
-avx512f_test ()
+avx512dq_test ()
 {
   __mmask16 k = _kadd_mask16 (11, 12);
   asm volatile ("" : "+k" (k));
similarity index 84%
rename from gcc/testsuite/gcc.target/i386/avx512f-ktestw-1.c
rename to gcc/testsuite/gcc.target/i386/avx512dq-ktestw-1.c
index f6151d1671d231438af59ecdf46f6d900d1b8c19..5394604814f0b2bab6905583a8e708004ec33254 100644 (file)
@@ -1,11 +1,11 @@
 /* { dg-do compile } */
-/* { dg-options "-O0 -mavx512f" } */
+/* { dg-options "-O0 -mavx512dq" } */
 /* { dg-final { scan-assembler-times "ktestw\[ \\t\]+\[^\{\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 2 } } */
 
 #include <immintrin.h>
 
 void
-avx512f_test () {
+avx512dq_test () {
   volatile __mmask16 k1;
   __mmask16 k2;
 
similarity index 67%
rename from gcc/testsuite/gcc.target/i386/avx512f-ktestw-2.c
rename to gcc/testsuite/gcc.target/i386/avx512dq-ktestw-2.c
index 6602c7a157441a1f9db9f99b445fc7794816f7d7..fcc0cf47eb0187357790cb9827af91c1d35a6fff 100644 (file)
@@ -1,11 +1,11 @@
 /* { dg-do run } */
-/* { dg-options "-O2 -mavx512f" } */
-/* { dg-require-effective-target avx512f } */
+/* { dg-options "-O2 -mavx512dq" } */
+/* { dg-require-effective-target avx512dq } */
 
-#include "avx512f-check.h"
+#include "avx512dq-check.h"
 
 void
-avx512f_test ()
+avx512dq_test ()
 {
   volatile __mmask16 k1, k2;
   unsigned char r1, r2;