This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix ICE in vcond expansion with -mavx512f -mno-avx512bw (PR target/69820)
- From: Kirill Yukhin <kirill dot yukhin at gmail dot com>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: Uros Bizjak <ubizjak at gmail dot com>, gcc-patches at gcc dot gnu dot org
- Date: Fri, 19 Feb 2016 16:20:20 +0300
- Subject: Re: [PATCH] Fix ICE in vcond expansion with -mavx512f -mno-avx512bw (PR target/69820)
- Authentication-results: sourceware.org; auth=none
- References: <20160215210030 dot GG3017 at tucnak dot redhat dot com>
Hi Jakub!
On 15 Feb 22:00, Jakub Jelinek wrote:
> Hi!
>
> We ICE on the following testcase, because vcondv32hiv32hi pattern
> really needs avx512bw, but it is enabled for avx512f.
> As VI_512 iterator is only used in vcond* patterns which need the
> avx512bw ISA for the V64QI and V32HI modes, I've changed that iterator.
> Or do you prefer to keep that iterator as is (so it will be unused)
> and another one with these conditions? If yes, how should it be called.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux.
Patch is ok for trunk and branches.
> 2016-02-15 Jakub Jelinek <jakub@redhat.com>
>
> PR target/69820
> * config/i386/sse.md (VI_512): Only include V64QImode and V32HImode
> if TARGET_AVX512BW.
>
> * gcc.target/i386/pr69820.c: New test.
>
> --- gcc/config/i386/sse.md.jj 2016-02-03 23:36:39.000000000 +0100
> +++ gcc/config/i386/sse.md 2016-02-15 17:07:40.694352994 +0100
> @@ -522,7 +522,10 @@ (define_mode_iterator VI_128 [V16QI V8HI
> (define_mode_iterator VI_256 [V32QI V16HI V8SI V4DI])
>
> ;; All 512bit vector integer modes
> -(define_mode_iterator VI_512 [V64QI V32HI V16SI V8DI])
> +(define_mode_iterator VI_512
> + [(V64QI "TARGET_AVX512BW")
> + (V32HI "TARGET_AVX512BW")
> + V16SI V8DI])
>
> ;; Various 128bit vector integer mode combinations
> (define_mode_iterator VI12_128 [V16QI V8HI])
> --- gcc/testsuite/gcc.target/i386/pr69820.c.jj 2016-02-15 17:13:57.397220839 +0100
> +++ gcc/testsuite/gcc.target/i386/pr69820.c 2016-02-15 17:13:28.000000000 +0100
> @@ -0,0 +1,14 @@
> +/* PR target/69820 */
> +/* { dg-do compile } */
> +/* { dg-options "-O3 -mavx512f -mno-avx512bw" } */
> +
> +int a[100], b[100];
> +short c[100];
> +
> +void
> +foo ()
> +{
> + int i;
> + for (i = 0; i < 100; ++i)
> + b[i] = a[i] * (_Bool) c[i];
> +}
>
> Jakub
--
Thanks, K