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.