-
- Downloads
"libcpp/directives.cc" did not exist on "99dee82307f1e163e150c9c810452979994047ce"
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.
Showing
- gcc/config/arm/arm-mve-builtins.cc 31 additions, 1 deletiongcc/config/arm/arm-mve-builtins.cc
- gcc/testsuite/gcc.target/arm/mve/pr108443-run.c 1 addition, 1 deletiongcc/testsuite/gcc.target/arm/mve/pr108443-run.c
- gcc/testsuite/gcc.target/arm/mve/pr108443.c 2 additions, 2 deletionsgcc/testsuite/gcc.target/arm/mve/pr108443.c
- gcc/testsuite/gcc.target/arm/mve/pr114801.c 39 additions, 0 deletionsgcc/testsuite/gcc.target/arm/mve/pr114801.c
Loading
Please register or sign in to comment