https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80355

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:50b5877925ef5ae8e9f913d6d2b5ce0204ebc588

commit r12-2837-g50b5877925ef5ae8e9f913d6d2b5ce0204ebc588
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Tue Aug 10 12:38:00 2021 +0200

    i386: Allow some V32HImode and V64QImode permutations even without AVX512BW
[PR80355]

    When working on the PR, I've noticed we generate terrible code for
    V32HImode or V64QImode permutations for -mavx512f -mno-avx512bw.
    Generally we can't do much with such permutations, but since PR68655
    we can handle at least some, those expressible using V16SImode or V8DImode
    permutations, but that wasn't reachable, because
ix86_vectorize_vec_perm_const
    didn't even try, it said without TARGET_AVX512BW it can't do anything, and
    with it can do everything, no d.testing_p attempts.

    This patch makes it try it for TARGET_AVX512F && !TARGET_AVX512BW.

    The first hunk is to avoid ICE, expand_vec_perm_even_odd_1 asserts d->vmode
    isn't V32HImode because expand_vec_perm_1 for AVX512BW handles already
    all permutations, but when we let it through without !TARGET_AVX512BW,
    expand_vec_perm_1 doesn't handle it.

    If we want, that hunk can be dropped if we implement in
    expand_vec_perm_even_odd_1 and its helper the even permutation as
    vpmovdw + vpmovdw + vinserti64x4 and odd permutation as
    vpsrld $16 + vpsrld $16 + vpmovdw + vpmovdw + vinserti64x4.

    2021-08-10  Jakub Jelinek  <ja...@redhat.com>

            PR target/80355
            * config/i386/i386-expand.c (expand_vec_perm_even_odd): Return
false
            for V32HImode if !TARGET_AVX512BW.
            (ix86_vectorize_vec_perm_const) <case E_V32HImode, case
E_V64QImode>:
            If !TARGET_AVX512BW and TARGET_AVX512F and d.testing_p, don't fail
            early, but actually check the permutation.

            * gcc.target/i386/avx512f-pr80355-2.c: New test.

Reply via email to