https://gcc.gnu.org/g:d964bf62dfeeb413f2af87994b677c85aef6408d

commit d964bf62dfeeb413f2af87994b677c85aef6408d
Author: Michael Meissner <meiss...@linux.ibm.com>
Date:   Wed Jul 31 12:23:55 2024 -0400

    Add power5+ to arch flags.
    
    2024-07-31  Michael Meissner  <meiss...@linux.ibm.com>
    
    gcc/
    
            * config/rs6000/rs6000-arch.def (ARCH_MASK_POWER5X): Add power5+
            support.
            * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Use arch
            masks for power4, power5, power5+, and power6.
            * config/rs6000/rs6000.cc (get_arch_flags): Add support for setting 
arch
            flags for non power* processors.  Add support for power5+.
            (report_architecture_mismatch): Improve error message.

Diff:
---
 gcc/config/rs6000/rs6000-arch.def |  1 +
 gcc/config/rs6000/rs6000-c.cc     |  8 ++++----
 gcc/config/rs6000/rs6000.cc       | 20 +++++++++++++++++---
 3 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/gcc/config/rs6000/rs6000-arch.def 
b/gcc/config/rs6000/rs6000-arch.def
index 6725736076da..e5b6e9581331 100644
--- a/gcc/config/rs6000/rs6000-arch.def
+++ b/gcc/config/rs6000/rs6000-arch.def
@@ -39,6 +39,7 @@
 
 ARCH_EXPAND(POWER4,  "power4")
 ARCH_EXPAND(POWER5,  "power5")
+ARCH_EXPAND(POWER5X, "power5+")
 ARCH_EXPAND(POWER6,  "power6")
 ARCH_EXPAND(POWER7,  "power7")
 ARCH_EXPAND(POWER8,  "power8")
diff --git a/gcc/config/rs6000/rs6000-c.cc b/gcc/config/rs6000/rs6000-c.cc
index a8a6a956874f..d7b1625f0867 100644
--- a/gcc/config/rs6000/rs6000-c.cc
+++ b/gcc/config/rs6000/rs6000-c.cc
@@ -420,13 +420,13 @@ rs6000_target_modify_macros (bool define_p, HOST_WIDE_INT 
flags,
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PPCGR");
   if ((flags & OPTION_MASK_POWERPC64) != 0)
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PPC64");
-  if ((flags & OPTION_MASK_MFCRF) != 0)
+  if ((arch_flags & ARCH_MASK_POWER4) != 0)
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR4");
-  if ((flags & OPTION_MASK_POPCNTB) != 0)
+  if ((arch_flags & ARCH_MASK_POWER5) != 0)
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR5");
-  if ((flags & OPTION_MASK_FPRND) != 0)
+  if ((arch_flags & ARCH_MASK_POWER5X) != 0)
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR5X");
-  if ((flags & OPTION_MASK_CMPB) != 0)
+  if ((arch_flags & ARCH_MASK_POWER6) != 0)
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR6");
   if ((arch_flags & ARCH_MASK_POWER7) != 0)
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR7");
diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index 19adc66cc801..ec1cf85de12f 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -1856,6 +1856,8 @@ get_arch_flags (int cpu_index)
 
       case PROCESSOR_POWER5:
        ret |= ARCH_MASK_POWER5;
+       if (TARGET_FPRND)
+         ret |= ARCH_MASK_POWER5X;
        /* fall through.  */
 
       case PROCESSOR_POWER4:
@@ -1863,6 +1865,18 @@ get_arch_flags (int cpu_index)
        break;
 
       default:
+       /* For other processors, set the arch flags based on the ISA bits.  */
+       if (TARGET_MFCRF)
+         ret |= ARCH_MASK_POWER4;
+
+       if (TARGET_POPCNTB)
+         ret |= ARCH_MASK_POWER5;
+
+       if (TARGET_FPRND)
+         ret |= ARCH_MASK_POWER5X;
+
+       if (TARGET_CMPB)
+         ret |= ARCH_MASK_POWER6;
        break;
       }
 
@@ -25359,19 +25373,19 @@ report_architecture_mismatch (void)
       OPTION_MASK_P9_VECTOR | OPTION_MASK_P9_MISC | OPTION_MASK_P9_MINMAX
       | OPTION_MASK_MODULO,
       ARCH_MASK_POWER9,
-      "cpu=power9"
+      "-mcpu=power9"
     },
 
     {
       OPTION_MASK_P8_VECTOR | OPTION_MASK_CRYPTO,
       ARCH_MASK_POWER8,
-      "cpu=power8"
+      "-mcpu=power8"
     },
 
     {
       OPTION_MASK_VSX | OPTION_MASK_POPCNTD,
       ARCH_MASK_POWER7,
-      "cpu=power7"
+      "-mcpu=power7"
     },
   };

Reply via email to