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

--- Comment #3 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:322db86f4b4df1261308e8a02e69018d9cea98e9

commit r10-6229-g322db86f4b4df1261308e8a02e69018d9cea98e9
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Sun Jan 26 12:10:48 2020 +0100

    i386: Fix up *avx_vperm_broadcast_v4df [PR93430]

    Apparently my recent patch which moved the *avx_vperm_broadcast* and
    *vpermil* patterns before vpermpd broke the following testcase, the
    define_insn_and_split matched always but the splitter condition only split
    it if not -mavx2 for V4DFmode, basically relying on the vpermpd pattern to
    come first.

    The following patch fixes it by moving that part of SPLIT-CONDITION into
    CONDITION, so that when it is not met, we just don't match the pattern
    and thus match the later vpermpd pattern in that case.
    Except, for { 0, 0, 0, 0 } permutation, there is actually no reason to do
    that, vbroadcastsd from memory seems to be slightly cheaper than vpermpd
$0.

    2020-01-26  Jakub Jelinek  <ja...@redhat.com>

        PR target/93430
        * config/i386/sse.md (*avx_vperm_broadcast_<mode>): Disallow for
        TARGET_AVX2 and V4DFmode not in the split condition, but in the
        pattern condition, though allow { 0, 0, 0, 0 } broadcast always.

        * gcc.dg/pr93430.c: New test.
        * gcc.target/i386/avx2-pr93430.c: New test.

Reply via email to