aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-expr.cc
diff options
context:
space:
mode:
authorChristophe Lyon <christophe.lyon@linaro.org>2024-11-24 18:08:48 +0000
committerChristophe Lyon <christophe.lyon@linaro.org>2024-12-13 14:25:36 +0000
commit2089009210a1774c37e527ead8bbcaaa1a7a9d2d (patch)
treefee4abba8f1270a49d40412531dbce5be7829c44 /gcc/fortran/trans-expr.cc
parent4f4e13dd235bba9c706948a3ecb3e530dd68aad1 (diff)
downloadgcc-2089009210a1774c37e527ead8bbcaaa1a7a9d2d.zip
gcc-2089009210a1774c37e527ead8bbcaaa1a7a9d2d.tar.gz
gcc-2089009210a1774c37e527ead8bbcaaa1a7a9d2d.tar.bz2
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.lyon@linaro.org> Jakub Jelinek <jakub@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.
Diffstat (limited to 'gcc/fortran/trans-expr.cc')
0 files changed, 0 insertions, 0 deletions