https://gcc.gnu.org/g:68df37647bdce7fc85c5f0f25629027800a4fcb5

commit r14-11241-g68df37647bdce7fc85c5f0f25629027800a4fcb5
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 d8b18b2b8ce9..ce66fb3e3d57 100644
--- a/gcc/config/rs6000/rs6000-builtin.cc
+++ b/gcc/config/rs6000/rs6000-builtin.cc
@@ -3548,7 +3548,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 3bc7fed69568..80f5fbb9e823 100644
--- a/gcc/config/rs6000/rs6000-builtins.def
+++ b/gcc/config/rs6000/rs6000-builtins.def
@@ -3885,11 +3885,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>, \

Reply via email to