aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIlya Tocar <ilya.tocar@intel.com>2014-12-08 11:48:01 +0000
committerIlya Tocar <tocarip@gcc.gnu.org>2014-12-08 14:48:01 +0300
commit28adf6e75ec45da4aa5da5f54fdc51e5ea2836c0 (patch)
tree8765bcbddf2ceb1c0bdaa34782bdfa20e1433e55 /gcc
parent9f9f61155a4836aa57e19405a95852172670b8ef (diff)
downloadgcc-28adf6e75ec45da4aa5da5f54fdc51e5ea2836c0.zip
gcc-28adf6e75ec45da4aa5da5f54fdc51e5ea2836c0.tar.gz
gcc-28adf6e75ec45da4aa5da5f54fdc51e5ea2836c0.tar.bz2
Enable non-const v64qi permutations.
gcc/ * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Handle v64qi. * config/i386/sse.md (VEC_PERM_AVX2): Add v64qi. From-SVN: r218483
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c4
-rw-r--r--gcc/config/i386/sse.md2
3 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 15f5f26..f22bba8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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.
(expand_vec_perm_vpermi2_vpshub2): New.
(ix86_expand_vec_perm_const_1): Use it.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 88dd9f4..1e1716e 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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;
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 734e6b4..cfbe40c 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -10691,7 +10691,7 @@
(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")