https://gcc.gnu.org/g:4001e93682384f195628f5c2609b52332558c7c8

commit 4001e93682384f195628f5c2609b52332558c7c8
Author: Michael Meissner <meiss...@linux.ibm.com>
Date:   Thu Nov 14 13:52:47 2024 -0500

    Change TARGET_POPCNTB to TARGET_POWER5.
    
    This patch changes TARGET_POPCNTB to TARGET_POWER5 and OPTION_MASK_POPCNTB 
to
    OPTION_MASK_POWER5.  The -mpopcntb switch is not being changed, just the 
name of
    the macros used to determine if the PowerPC processor supports ISA 2.2 
(Power5).
    
    2024-11-14  Michael Meissner  <meiss...@linux.ibm.com>
    
    gcc/
    
            * gcc/config/rs6000/rs6000-builtin.cc (rs6000_builtin_is_supported):
            Change TARGET_POPCNTB to TARGET_POWER5.  Change OPTION_MASK_POPCNTB 
to
            OPTION_MASK_POWER5.
            * gcc/config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): 
Likewise.
            * gcc/config/rs6000/rs6000-cpus.def (ISA_2_2_MASKS): Likewise.
            (POWERPC_MASKS): Likewise.
            (476 cpu definition): Likewise.
            (476fp cpu definition): Likewise.
            (a2 cpu definition): Likewise.
            (power5 cpu definition): Likewise.
            (power5+ cpu definition): Likewise.
            (power6 cpu definition): Likewise.
            (power6x cpu definition): Likewise.
            * gcc/config/rs6000/rs6000.cc (rs6000_option_override_internal):
            Likewise.
            (rs6000_emit_popcount): Update comment.
            (rs6000_emit_parity): Likewise.
            (rs6000_opt_masks): Change TARGET_POPCNTB to TARGET_POWER5.  Change
            OPTION_MASK_POPCNTB to OPTION_MASK_POWER5.
            * gcc/config/rs6000/rs6000.h (TARGET_FCFID): Likewise.
            (TARGET_EXTRA_BUILTINS): Likewise.
            (TARGET_FRE): Likewise.
            (TARGET_FRSQRTES): Likewise.
            * gcc/config/rs6000/rs6000.md (enabled attribute): Likewise.
            (popcount<mode>2): Likewise.
            (popcntb<mode>): Likewise.
            (popcntd<mode>): Likewise.
            (parity<mode>2): Likewise.
            * gcc/config/rs6000/rs6000.md (-mpopcntb): Likewise.

Diff:
---
 gcc/config/rs6000/rs6000-builtin.cc |  2 +-
 gcc/config/rs6000/rs6000-c.cc       |  2 +-
 gcc/config/rs6000/rs6000-cpus.def   | 18 +++++++++---------
 gcc/config/rs6000/rs6000.cc         | 10 +++++-----
 gcc/config/rs6000/rs6000.h          |  8 ++++----
 gcc/config/rs6000/rs6000.md         | 12 ++++++------
 gcc/config/rs6000/rs6000.opt        |  6 ++++--
 7 files changed, 30 insertions(+), 28 deletions(-)

diff --git a/gcc/config/rs6000/rs6000-builtin.cc 
b/gcc/config/rs6000/rs6000-builtin.cc
index 9bdbae1ecf94..98a0545030cd 100644
--- a/gcc/config/rs6000/rs6000-builtin.cc
+++ b/gcc/config/rs6000/rs6000-builtin.cc
@@ -155,7 +155,7 @@ rs6000_builtin_is_supported (enum rs6000_gen_builtins 
fncode)
     case ENB_ALWAYS:
       return true;
     case ENB_P5:
-      return TARGET_POPCNTB;
+      return TARGET_POWER5;
     case ENB_P6:
       return TARGET_CMPB;
     case ENB_P6_64:
diff --git a/gcc/config/rs6000/rs6000-c.cc b/gcc/config/rs6000/rs6000-c.cc
index 4dc80e598fa4..da3a9c2d8406 100644
--- a/gcc/config/rs6000/rs6000-c.cc
+++ b/gcc/config/rs6000/rs6000-c.cc
@@ -422,7 +422,7 @@ rs6000_target_modify_macros (bool define_p, HOST_WIDE_INT 
flags)
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PPC64");
   if ((flags & OPTION_MASK_MFCRF) != 0)
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR4");
-  if ((flags & OPTION_MASK_POPCNTB) != 0)
+  if ((flags & OPTION_MASK_POWER5) != 0)
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR5");
   if ((flags & OPTION_MASK_FPRND) != 0)
     rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR5X");
diff --git a/gcc/config/rs6000/rs6000-cpus.def 
b/gcc/config/rs6000/rs6000-cpus.def
index 84fac8bdac1d..d600f123d6a7 100644
--- a/gcc/config/rs6000/rs6000-cpus.def
+++ b/gcc/config/rs6000/rs6000-cpus.def
@@ -21,7 +21,7 @@
 /* ISA masks.  */
 #ifndef ISA_2_1_MASKS
 #define ISA_2_1_MASKS          OPTION_MASK_MFCRF
-#define ISA_2_2_MASKS          (ISA_2_1_MASKS | OPTION_MASK_POPCNTB)
+#define ISA_2_2_MASKS          (ISA_2_1_MASKS | OPTION_MASK_POWER5)
 #define ISA_2_4_MASKS          (ISA_2_2_MASKS | OPTION_MASK_FPRND)
 
   /* For ISA 2.05, don't add ALTIVEC, since in general it isn't a win on
@@ -143,7 +143,7 @@
                                 | OPTION_MASK_P9_VECTOR                \
                                 | OPTION_MASK_PCREL                    \
                                 | OPTION_MASK_PCREL_OPT                \
-                                | OPTION_MASK_POPCNTB                  \
+                                | OPTION_MASK_POWER5                   \
                                 | OPTION_MASK_POPCNTD                  \
                                 | OPTION_MASK_POWERPC64                \
                                 | OPTION_MASK_PPC_GFXOPT               \
@@ -184,11 +184,11 @@ RS6000_CPU ("464", PROCESSOR_PPC440, 
OPTION_MASK_SOFT_FLOAT
            | OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
 RS6000_CPU ("464fp", PROCESSOR_PPC440, OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
 RS6000_CPU ("476", PROCESSOR_PPC476, OPTION_MASK_SOFT_FLOAT
-           | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB
+           | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POWER5
            | OPTION_MASK_FPRND | OPTION_MASK_CMPB | OPTION_MASK_MULHW
            | OPTION_MASK_DLMZB)
 RS6000_CPU ("476fp", PROCESSOR_PPC476, OPTION_MASK_PPC_GFXOPT
-           | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB | OPTION_MASK_FPRND
+           | OPTION_MASK_MFCRF | OPTION_MASK_POWER5 | OPTION_MASK_FPRND
            | OPTION_MASK_CMPB | OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
 RS6000_CPU ("505", PROCESSOR_MPCCORE, 0)
 RS6000_CPU ("601", PROCESSOR_PPC601, OPTION_MASK_MULTIPLE)
@@ -209,7 +209,7 @@ RS6000_CPU ("823", PROCESSOR_MPCCORE, 
OPTION_MASK_SOFT_FLOAT)
 RS6000_CPU ("8540", PROCESSOR_PPC8540, MASK_STRICT_ALIGN | OPTION_MASK_ISEL)
 RS6000_CPU ("8548", PROCESSOR_PPC8548, MASK_STRICT_ALIGN | OPTION_MASK_ISEL)
 RS6000_CPU ("a2", PROCESSOR_PPCA2, OPTION_MASK_PPC_GFXOPT | MASK_POWERPC64
-           | OPTION_MASK_POPCNTB | OPTION_MASK_CMPB
+           | OPTION_MASK_POWER5 | OPTION_MASK_CMPB
            | OPTION_MASK_NO_UPDATE)
 RS6000_CPU ("e300c2", PROCESSOR_PPCE300C2, OPTION_MASK_SOFT_FLOAT)
 RS6000_CPU ("e300c3", PROCESSOR_PPCE300C3, 0)
@@ -236,16 +236,16 @@ RS6000_CPU ("power3", PROCESSOR_PPC630, 
OPTION_MASK_PPC_GFXOPT | MASK_POWERPC64)
 RS6000_CPU ("power4", PROCESSOR_POWER4, MASK_POWERPC64 | OPTION_MASK_PPC_GPOPT
            | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF)
 RS6000_CPU ("power5", PROCESSOR_POWER5, MASK_POWERPC64 | OPTION_MASK_PPC_GPOPT
-           | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB)
+           | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POWER5)
 RS6000_CPU ("power5+", PROCESSOR_POWER5, MASK_POWERPC64 | OPTION_MASK_PPC_GPOPT
-           | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB
+           | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POWER5
            | OPTION_MASK_FPRND)
 RS6000_CPU ("power6", PROCESSOR_POWER6, MASK_POWERPC64 | OPTION_MASK_PPC_GPOPT
-           | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB
+           | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POWER5
            | OPTION_MASK_FPRND | OPTION_MASK_CMPB | OPTION_MASK_DFP
            | OPTION_MASK_RECIP_PRECISION)
 RS6000_CPU ("power6x", PROCESSOR_POWER6, MASK_POWERPC64 | OPTION_MASK_PPC_GPOPT
-           | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB
+           | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POWER5
            | OPTION_MASK_FPRND | OPTION_MASK_CMPB | OPTION_MASK_DFP
            | OPTION_MASK_RECIP_PRECISION)
 RS6000_CPU ("power7", PROCESSOR_POWER7, MASK_POWERPC64 | ISA_2_6_MASKS_SERVER)
diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index 950fd947fda3..8adac6fbc572 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -3924,7 +3924,7 @@ rs6000_option_override_internal (bool global_init_p)
     rs6000_isa_flags |= (ISA_2_5_MASKS_EMBEDDED & ~ignore_masks);
   else if (TARGET_FPRND)
     rs6000_isa_flags |= (ISA_2_4_MASKS & ~ignore_masks);
-  else if (TARGET_POPCNTB)
+  else if (TARGET_POWER5)
     rs6000_isa_flags |= (ISA_2_2_MASKS & ~ignore_masks);
   else if (TARGET_ALTIVEC)
     rs6000_isa_flags |= (OPTION_MASK_PPC_GFXOPT & ~ignore_masks);
@@ -23208,8 +23208,8 @@ rs6000_emit_swsqrt (rtx dst, rtx src, bool recip)
   return;
 }
 
-/* Emit popcount intrinsic on TARGET_POPCNTB (Power5) and TARGET_POPCNTD
-   (Power7) targets.  DST is the target, and SRC is the argument operand.  */
+/* Emit popcount intrinsic on TARGET_POWER5 and TARGET_POPCNTD (Power7)
+   targets.  DST is the target, and SRC is the argument operand.  */
 
 void
 rs6000_emit_popcount (rtx dst, rtx src)
@@ -23250,7 +23250,7 @@ rs6000_emit_popcount (rtx dst, rtx src)
 }
 
 
-/* Emit parity intrinsic on TARGET_POPCNTB targets.  DST is the
+/* Emit parity intrinsic on TARGET_POWER5 targets.  DST is the
    target, and SRC is the argument operand.  */
 
 void
@@ -24504,7 +24504,7 @@ static struct rs6000_opt_mask const rs6000_opt_masks[] =
   { "multiple",                        OPTION_MASK_MULTIPLE,           false, 
true  },
   { "pcrel",                   OPTION_MASK_PCREL,              false, true  },
   { "pcrel-opt",               OPTION_MASK_PCREL_OPT,          false, true  },
-  { "popcntb",                 OPTION_MASK_POPCNTB,            false, true  },
+  { "popcntb",                 OPTION_MASK_POWER5,             false, true  },
   { "popcntd",                 OPTION_MASK_POPCNTD,            false, true  },
   { "power8-fusion",           OPTION_MASK_P8_FUSION,          false, true  },
   { "power8-fusion-sign",      OPTION_MASK_P8_FUSION_SIGN,     false, true  },
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index d460eb065448..645f9b33d866 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -448,7 +448,7 @@ extern int rs6000_vector_align[];
    Enable 32-bit fcfid's on any of the switches for newer ISA machines.  */
 #define TARGET_FCFID   (TARGET_POWERPC64                               \
                         || TARGET_PPC_GPOPT    /* 970/power4 */        \
-                        || TARGET_POPCNTB      /* ISA 2.02 */          \
+                        || TARGET_POWER5       /* ISA 2.02 */          \
                         || TARGET_CMPB         /* ISA 2.05 */          \
                         || TARGET_POPCNTD)     /* ISA 2.06 */
 
@@ -527,7 +527,7 @@ extern int rs6000_vector_align[];
 
 #define TARGET_EXTRA_BUILTINS  (TARGET_POWERPC64                        \
                                 || TARGET_PPC_GPOPT /* 970/power4 */    \
-                                || TARGET_POPCNTB   /* ISA 2.02 */      \
+                                || TARGET_POWER5    /* ISA 2.02 */      \
                                 || TARGET_CMPB      /* ISA 2.05 */      \
                                 || TARGET_POPCNTD   /* ISA 2.06 */      \
                                 || TARGET_ALTIVEC                       \
@@ -543,9 +543,9 @@ extern int rs6000_vector_align[];
 #define TARGET_FRES    (TARGET_HARD_FLOAT && TARGET_PPC_GFXOPT)
 
 #define TARGET_FRE     (TARGET_HARD_FLOAT \
-                        && (TARGET_POPCNTB || VECTOR_UNIT_VSX_P (DFmode)))
+                        && (TARGET_POWER5 || VECTOR_UNIT_VSX_P (DFmode)))
 
-#define TARGET_FRSQRTES        (TARGET_HARD_FLOAT && TARGET_POPCNTB \
+#define TARGET_FRSQRTES        (TARGET_HARD_FLOAT && TARGET_POWER5 \
                         && TARGET_PPC_GFXOPT)
 
 #define TARGET_FRSQRTE (TARGET_HARD_FLOAT \
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 8eda2f7bb0d7..2b64047047ef 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -379,7 +379,7 @@
      (const_int 1)
 
      (and (eq_attr "isa" "p5")
-         (match_test "TARGET_POPCNTB"))
+         (match_test "TARGET_POWER5"))
      (const_int 1)
 
      (and (eq_attr "isa" "p6")
@@ -2510,7 +2510,7 @@
 (define_expand "popcount<mode>2"
   [(set (match_operand:GPR 0 "gpc_reg_operand")
        (popcount:GPR (match_operand:GPR 1 "gpc_reg_operand")))]
-  "TARGET_POPCNTB || TARGET_POPCNTD"
+  "TARGET_POWER5 || TARGET_POPCNTD"
 {
   rs6000_emit_popcount (operands[0], operands[1]);
   DONE;
@@ -2520,8 +2520,8 @@
   [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
        (unspec:GPR [(match_operand:GPR 1 "gpc_reg_operand" "r")]
                    UNSPEC_POPCNTB))]
-  "TARGET_POPCNTB"
-  "popcntb %0,%1"
+  "TARGET_POWER5"
+  "power5 %0,%1"
   [(set_attr "type" "popcnt")])
 
 (define_insn "popcntd<mode>2"
@@ -2535,7 +2535,7 @@
 (define_expand "parity<mode>2"
   [(set (match_operand:GPR 0 "gpc_reg_operand")
        (parity:GPR (match_operand:GPR 1 "gpc_reg_operand")))]
-  "TARGET_POPCNTB"
+  "TARGET_POWER5"
 {
   rs6000_emit_parity (operands[0], operands[1]);
   DONE;
@@ -2544,7 +2544,7 @@
 (define_insn "parity<mode>2_cmpb"
   [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
        (unspec:GPR [(match_operand:GPR 1 "gpc_reg_operand" "r")] 
UNSPEC_PARITY))]
-  "TARGET_CMPB && TARGET_POPCNTB"
+  "TARGET_CMPB && TARGET_POWER5"
   "prty<wd> %0,%1"
   [(set_attr "type" "popcnt")])
 
diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt
index 94323bd1db26..24f2af208856 100644
--- a/gcc/config/rs6000/rs6000.opt
+++ b/gcc/config/rs6000/rs6000.opt
@@ -128,9 +128,11 @@ mmfcrf
 Target Mask(MFCRF) Var(rs6000_isa_flags)
 Use PowerPC V2.01 single field mfcr instruction.
 
+;; Originally, we used -mpopcntb to indicate ISA 2.2.  Keep the switch name,
+;; but change the target macro.
 mpopcntb
-Target Mask(POPCNTB) Var(rs6000_isa_flags)
-Use PowerPC V2.02 popcntb instruction.
+Target Mask(POWER5) Var(rs6000_isa_flags)
+Use ISA 2.2 (Power5) instructions.
 
 mfprnd
 Target Mask(FPRND) Var(rs6000_isa_flags)

Reply via email to