https://gcc.gnu.org/g:4e508cbb938a8936bc6aefd7823b55107aa4a7f9
commit r12-10929-g4e508cbb938a8936bc6aefd7823b55107aa4a7f9 Author: Peter Bergner <berg...@linux.ibm.com> Date: Thu Jan 16 10:49:45 2025 -0600 rs6000: Fix loop limit for built-in constant checking The loop checking for built-in constant operand restrictions was missing some operands due to the loop limit being too small. Fixing that exposed a testsuite failure which is caused by a typo in the pmxvi4ger8pp definition where we had made the PMASK field too small. 2025-01-16 Peter Bergner <berg...@linux.ibm.com> gcc/ * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin): Use correct array size for the loop limit. * config/rs6000/rs6000-builtins.def: Fix field size for PMASK operand. (cherry picked from commit 1a2d63a78f99b7fdc2eff5bf9065682d5bbbaaca) Diff: --- gcc/config/rs6000/rs6000-builtin.cc | 2 +- gcc/config/rs6000/rs6000-builtins.def | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/config/rs6000/rs6000-builtin.cc b/gcc/config/rs6000/rs6000-builtin.cc index f01f3aded362..d467db29e8e3 100644 --- a/gcc/config/rs6000/rs6000-builtin.cc +++ b/gcc/config/rs6000/rs6000-builtin.cc @@ -3584,7 +3584,7 @@ rs6000_expand_builtin (tree exp, rtx target, rtx /* subtarget */, } /* Check for restricted constant arguments. */ - for (int i = 0; i < 2; i++) + for (size_t i = 0; i < ARRAY_SIZE (bifaddr->restr); i++) { switch (bifaddr->restr[i]) { diff --git a/gcc/config/rs6000/rs6000-builtins.def b/gcc/config/rs6000/rs6000-builtins.def index d2c0565dc623..eca7ad2f5fae 100644 --- a/gcc/config/rs6000/rs6000-builtins.def +++ b/gcc/config/rs6000/rs6000-builtins.def @@ -3861,11 +3861,11 @@ PMXVI4GER8_INTERNAL mma_pmxvi4ger8 {mma} void __builtin_mma_pmxvi4ger8pp (v512 *, vuc, vuc, const int<4>, \ - const int<4>, const int<4>); + const int<4>, const int<8>); PMXVI4GER8PP nothing {mma,quad,mmaint} v512 __builtin_mma_pmxvi4ger8pp_internal (v512, vuc, vuc, const int<4>, \ - const int<4>, const int<4>); + const int<4>, const int<8>); PMXVI4GER8PP_INTERNAL mma_pmxvi4ger8pp {mma,quad} void __builtin_mma_pmxvi8ger4 (v512 *, vuc, vuc, const int<4>, \