Enable non-const v64qi permutations.
authorIlya Tocar <ilya.tocar@intel.com>
Mon, 8 Dec 2014 11:48:01 +0000 (11:48 +0000)
committerIlya Tocar <tocarip@gcc.gnu.org>
Mon, 8 Dec 2014 11:48:01 +0000 (14:48 +0300)
gcc/
* config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Handle v64qi.
* config/i386/sse.md (VEC_PERM_AVX2): Add v64qi.

From-SVN: r218483

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/sse.md

index 15f5f26a52c99c4b456efb111a1a562ed9e7beea..f22bba83a8628c011f40aae556b0b1245af73766 100644 (file)
@@ -1,3 +1,8 @@
+2014-12-08  Ilya Tocar  <ilya.tocar@intel.com>
+
+       * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Handle v64qi.
+       * config/i386/sse.md (VEC_PERM_AVX2): Add v64qi.
+
 2014-12-08  Ilya Tocar  <ilya.tocar@intel.com>
 
        * config/i386/i386.c (expand_vec_perm_broadcast_1): Handle v64qi.
index 88dd9f4a9dda85c6e07784391ed91066604ddcaf..1e1716e70702d9af28aca8e29f1b274683d9f892 100644 (file)
@@ -21835,6 +21835,10 @@ ix86_expand_vec_perm_vpermi2 (rtx target, rtx op0, rtx mask, rtx op1,
       if (TARGET_AVX512VL && TARGET_AVX512BW)
        gen = gen_avx512vl_vpermi2varv16hi3;
       break;
+    case V64QImode:
+      if (TARGET_AVX512VBMI)
+       gen = gen_avx512bw_vpermi2varv64qi3;
+      break;
     case V32HImode:
       if (TARGET_AVX512BW)
        gen = gen_avx512bw_vpermi2varv32hi3;
index 734e6b46b9ac030909ae50c971dfa46c4c5e7d05..cfbe40cd6dc28acdbb5b9af2a662bf4847e7054e 100644 (file)
    (V8SF "TARGET_AVX2") (V4DF "TARGET_AVX2")
    (V16SF "TARGET_AVX512F") (V8DF "TARGET_AVX512F")
    (V16SI "TARGET_AVX512F") (V8DI "TARGET_AVX512F")
-   (V32HI "TARGET_AVX512BW")])
+   (V32HI "TARGET_AVX512BW") (V64QI "TARGET_AVX512VBMI")])
 
 (define_expand "vec_perm<mode>"
   [(match_operand:VEC_PERM_AVX2 0 "register_operand")