From 28adf6e75ec45da4aa5da5f54fdc51e5ea2836c0 Mon Sep 17 00:00:00 2001 From: Ilya Tocar Date: Mon, 8 Dec 2014 11:48:01 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 4 ++++ gcc/config/i386/sse.md | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) 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 + * 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 + * 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" [(match_operand:VEC_PERM_AVX2 0 "register_operand") -- 2.7.4