Rebase and update patch:

    Fix ICE: Don't generate integer mask comparison for 128/256-bits
vector when op_true/op_false are NULL or constm1_rtx/const0_rtx
[PR98537]

    in ix86_expand_sse_cmp/ix86_expand_int_sse_cmp

    gcc/ChangeLog:

            PR target/98537
            * config/i386/i386-expand.c (ix86_expand_sse_cmp): Don't
            generate integer mask comparison for 128/256-bits vector when
            op_true/op_false is NULL_RTX or CONSTM1_RTX/CONST0_RTX. Also
            delete redundant !maskcmp condition.
            (ix86_expand_int_vec_cmp): Ditto but no redundant deletion
            here.
            (ix86_expand_sse_movcc): Delete definition of maskcmp, add the
            condition directly to if (maskcmp), add extra check for
            cmpmode, it should be MODE_INT.
            (ix86_expand_fp_vec_cmp): Pass NULL to ix86_expand_sse_cmp's
            parameters op_true/op_false.
            (ix86_use_mask_cmp_p): New.

    gcc/testsuite/ChangeLog:

            PR target/98537
            * g++.target/i386/avx512bw-pr98537-1.C: New test.
            * g++.target/i386/avx512vl-pr98537-1.C: New test.
            * g++.target/i386/avx512vl-pr98537-2.C: New test.
            * gcc.target/i386/avx512vl-pr88547-1.c: Adjust testcase,
            integer mask comparison should not be generated.
            * gcc.target/i386/avx512vl-pr92686-vpcmp-1.c: This test is
            used to guard code generation of integer mask comparison, but
            for vector comparison to vector dest, integer mask comparison
            is disliked, so detele this useless test.
            * gcc.target/i386/avx512vl-pr92686-vpcmp-2.c: Ditto.
            * gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c: Ditto.



-- 
BR,
Hongtao

Attachment: 0001-Fix-ICE-Don-t-generate-integer-mask-comparision-for-.patch
Description: Binary data

Reply via email to