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

--- Comment #5 from liuhongt at gcc dot gnu.org ---
Author: liuhongt
Date: Mon Dec  9 04:16:24 2019
New Revision: 279107

URL: https://gcc.gnu.org/viewcvs?rev=279107&root=gcc&view=rev
Log:
Enable mask movement for VCOND_EXPR under avx512f for
128/256-bit vector when integer mask is available.

Changelog
gcc/
        PR target/92686
        * config/i386/sse.md
        (*<avx512>_cmp<mode>3<mask_scalar_merge_name><round_saeonly_name>,
        *<avx512>_cmp<mode>3<mask_scalar_merge_name>,
        *<avx512>_ucmp<mode>3<mask_scalar_merge_name>,
        *<avx512>_ucmp<mode>3<mask_scalar_merge_name>): New.
        * config/i386/i386.c (ix86_print_operand): New operand substitution.
        * config/i386/i386-expand.c (ix86_valid_mask_cmp_mode):
        New function.
        (ix86_expand_sse_cmp): Relax condition for integer mask from
        512-bit vector to all 128/256/512-bit vector. Delete code gen
        for avx512f compare patterns since we have generic pattern now.
        (ix86_expand_sse_movcc): Adjust condition and codegen for
        maskcmp.
        (ix86_expand_int_sse_cmp): Don't canonicalize the comparison
        when corresponding vector compare is available.

gcc/testsuite/
        * gcc.target/i386/pr92686.inc: New file.
        * gcc.target/i386/avx512bw-pr92686-vpcmp-1.c: New test.
        * gcc.target/i386/avx512bw-pr92686-vpcmp-intelasm-1.c: Ditto.
        * gcc.target/i386/avx512bw-pr92686-vpcmp-2.c: Ditto.
        * gcc.target/i386/avx512vl-pr92686-vpcmp-1.c: Ditto.
        * gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c: Ditto.
        * gcc.target/i386/avx512vl-pr92686-vpcmp-2.c: Ditto.
        * gcc.target/i386/avx512bw-pr92686-movcc-1.c: Ditto.
        * gcc.target/i386/avx512bw-pr92686-movcc-2.c: Ditto.
        * gcc.target/i386/avx512vl-pr92686-movcc-1.c: Ditto.
        * gcc.target/i386/avx512vl-pr92686-movcc-2.c: Ditto.
        * gcc.target/i386/avx512vl-pr88547-1.c: Adjust testcase.
        * gcc.target/i386/pr88547-1.c: Ditto.

Added:
    trunk/gcc/testsuite/gcc.target/i386/avx512bw-pr92686-movcc-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx512bw-pr92686-movcc-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512bw-pr92686-vpcmp-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx512bw-pr92686-vpcmp-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512bw-pr92686-vpcmp-intelasm-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vl-pr92686-movcc-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vl-pr92686-movcc-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vl-pr92686-vpcmp-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vl-pr92686-vpcmp-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c
    trunk/gcc/testsuite/gcc.target/i386/pr92686.inc
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386-expand.c
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/sse.md
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.target/i386/avx512vl-pr88547-1.c
    trunk/gcc/testsuite/gcc.target/i386/pr88547-1.c

Reply via email to