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

--- Comment #41 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Christophe Lyon <cl...@gcc.gnu.org>:

https://gcc.gnu.org/g:2089009210a1774c37e527ead8bbcaaa1a7a9d2d

commit r15-6246-g2089009210a1774c37e527ead8bbcaaa1a7a9d2d
Author: Christophe Lyon <christophe.l...@linaro.org>
Date:   Sun Nov 24 18:08:48 2024 +0000

    arm: [MVE intrinsics] Fix support for predicate constants [PR
target/114801]

    In this PR, we have to handle a case where MVE predicates are supplied
    as a const_int, where individual predicates have illegal boolean
    values (such as 0xc for a 4-bit boolean predicate).  To avoid the ICE,
    fix the constant (any non-zero value is converted to all 1s) and emit
    a warning.

    On MVE, V8BI and V4BI multi-bit masks are interpreted byte-by-byte at
    instruction level, but end-users should describe lanes rather than
    bytes (so all bytes of a true-predicated lane should be '1'), see the
    section on MVE intrinsics in the Arm ACLE specification.

    Since force_lowpart_subreg cannot handle const_int (because they have VOID
mode),
    use gen_lowpart on them, force_lowpart_subreg otherwise.

    2024-11-20  Christophe Lyon  <christophe.l...@linaro.org>
                Jakub Jelinek  <ja...@redhat.com>

            PR target/114801
            gcc/
            * config/arm/arm-mve-builtins.cc
            (function_expander::add_input_operand): Handle CONST_INT
            predicates.

            gcc/testsuite/
            * gcc.target/arm/mve/pr108443.c: Update predicate constant.
            * gcc.target/arm/mve/pr108443-run.c: Likewise.
            * gcc.target/arm/mve/pr114801.c: New test.

Reply via email to