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

--- Comment #14 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Eric Botcazou <ebotca...@gcc.gnu.org>:

https://gcc.gnu.org/g:a21bd7faba67997a6da457dbda16f15bca1a9156

commit r13-6893-ga21bd7faba67997a6da457dbda16f15bca1a9156
Author: Eric Botcazou <ebotca...@adacore.com>
Date:   Tue Mar 28 10:13:24 2023 +0200

    Fix PR target/109140

    This is a regression present on the mainline and 12 branch at -O2, but the
    issue is related to vectorization so was present at -O3 in earlier
versions.

    The vcondu expander that was added for VIS 3 more than a decade ago does
not
    fully work, because it does not filter out the unsigned condition codes
(the
    instruction is an UNSPEC that accepts only signed condition codes).

    While I was at it, I also added the missing vcond and vcondu expanders for
    the new comparison instructions that were added in VIS 4.

    gcc/
            PR target/109140
            * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
            on operand #3 to get the final condition code.  Use std::swap.
            * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
            (fucmp<gcond:code>8<P:mode>_vis): Move around.
            (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
            (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.

    gcc/testsuite/
            * gcc.target/sparc/20230328-1.c: New test.
            * gcc.target/sparc/20230328-2.c: Likewise.
            * gcc.target/sparc/20230328-3.c: Likewise.
            * gcc.target/sparc/20230328-4.c: Likewise.

Reply via email to