[gcc(refs/users/meissner/heads/work222)] Remove internal -mpower9-misc support.
Michael Meissner
meissner@gcc.gnu.org
Sun Sep 21 22:40:23 GMT 2025
https://gcc.gnu.org/g:d99645a5f61c7030a85826e5fe2044abd8ac3ca9
commit d99645a5f61c7030a85826e5fe2044abd8ac3ca9
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Sun Sep 21 18:27:14 2025 -0400
Remove internal -mpower9-misc support.
2025-09-21 Michael Meissner <meissner@linux.ibm.com>
gcc/
* config/rs6000/dfp.h (dfptstsfi_<code>_<mode>): Change TARGET_P9_MISC
to TARGET_POWER9.
(dfp_sgnfcnc_<mode): Likewise.
* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Remove
OPTION_MASK_P9_MISC.
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000-string.cc (do_load_mask_compare): Change
TARGET_P9_MISC to TARGET_POWER9.
(do_overlap_load_compare): Likewise.
(expand_compare_loop): Likewise.
(expand_block_compare_gpr): Likewise.
(expand_block_compare): Likewise.
* config/rs6000/rs6000.md (rs6000_option_override_internal): Likewise.
(rs6000_opt_masks): Remove -mpower9-misc.
* config/rs6000/rs6000.h (TARGET_POWER9): New macro.
* config/rs6000/rs6000.md (rs6000_mffscrn): Change TARGET_P9_MISC to
TARGET_POWER9.
(rs6000_mffscrni): Likewise.
(rs6000_mffscdrn): Likewise.
(rs6000_set_fpscr_rn): Likewise.
(rs6000_set_fpscr_drn): Likewise.
(rs6000_mffsl): Likewise.
(darn_32_<mode>): Likewise.
(darn_64_<mode>): Likewise.
(darn_raw_<mode>): Likewise.
(@darn<mode>): Likewise.
(cmprb): Likewise.
(cmprb_internal): Likewise.
(setb_signed): Likewise.
(setb_unsigned): Likewise.
(cmprb2): Likewise.
(cmprb2_internal): Likewise.
(cmpeqb): Likewise.
(cmpeqb_internal): Likewise.
* config/rs6000/rs6000.opt (-mpower9-misc): Change to WarnRemoved.
Diff:
---
gcc/config/rs6000/dfp.md | 4 ++--
gcc/config/rs6000/rs6000-cpus.def | 2 --
gcc/config/rs6000/rs6000-string.cc | 26 +++++++++++++-------------
gcc/config/rs6000/rs6000.cc | 3 +--
gcc/config/rs6000/rs6000.h | 2 ++
gcc/config/rs6000/rs6000.md | 36 ++++++++++++++++++------------------
gcc/config/rs6000/rs6000.opt | 3 +--
7 files changed, 37 insertions(+), 39 deletions(-)
diff --git a/gcc/config/rs6000/dfp.md b/gcc/config/rs6000/dfp.md
index 59fa66ae15c8..825e7c54e73e 100644
--- a/gcc/config/rs6000/dfp.md
+++ b/gcc/config/rs6000/dfp.md
@@ -347,7 +347,7 @@
(DFP_TEST:SI (match_dup 3)
(const_int 0)))
]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
{
if (<CODE> == UNORDERED && !HONOR_NANS (<MODE>mode))
{
@@ -365,7 +365,7 @@
(match_operand:DDTD 2 "gpc_reg_operand" "d")]
UNSPEC_DTSTSFI)
(match_operand:SI 3 "zero_constant" "j")))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
{
/* If immediate operand is greater than 63, it will behave as if
the value had been 63. The code generator does not support
diff --git a/gcc/config/rs6000/rs6000-cpus.def b/gcc/config/rs6000/rs6000-cpus.def
index bec532f42b80..bc2823762837 100644
--- a/gcc/config/rs6000/rs6000-cpus.def
+++ b/gcc/config/rs6000/rs6000-cpus.def
@@ -106,7 +106,6 @@
| OPTION_MASK_ISEL \
| OPTION_MASK_MODULO \
| OPTION_MASK_P9_MINMAX \
- | OPTION_MASK_P9_MISC \
| OPTION_MASK_P9_VECTOR) \
& ~OTHER_FUSION_MASKS)
@@ -175,7 +174,6 @@
| OPTION_MASK_P8_FUSION \
| OPTION_MASK_P8_VECTOR \
| OPTION_MASK_P9_MINMAX \
- | OPTION_MASK_P9_MISC \
| OPTION_MASK_P9_VECTOR \
| OPTION_MASK_PCREL \
| OPTION_MASK_PCREL_OPT \
diff --git a/gcc/config/rs6000/rs6000-string.cc b/gcc/config/rs6000/rs6000-string.cc
index 3d2911ca08a0..561297b0ba46 100644
--- a/gcc/config/rs6000/rs6000-string.cc
+++ b/gcc/config/rs6000/rs6000-string.cc
@@ -539,7 +539,7 @@ do_load_mask_compare (const machine_mode load_mode, rtx diff, rtx cmp_rem, rtx d
emit_insn (gen_lshrsi3 (d2, d2, shift_amount));
}
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
{
/* Generate a compare, and convert with a setb later. */
rtx cmp = gen_rtx_COMPARE (CCUNSmode, d1, d2);
@@ -605,7 +605,7 @@ do_overlap_load_compare (machine_mode load_mode, bool isConst,
do_load_for_compare_from_addr (load_mode, d1, addr1, orig_src1);
do_load_for_compare_from_addr (load_mode, d2, addr2, orig_src2);
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
{
/* Generate a compare, and convert with a setb later. */
rtx cmp = gen_rtx_COMPARE (CCUNSmode, d1, d2);
@@ -1185,7 +1185,7 @@ expand_compare_loop (rtx operands[])
rtx dcond = NULL_RTX; /* Used for when we jump to diff_label. */
/* For p9 we need to have just one of these as multiple places define
it and it gets used by the setb at the end. */
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
dcond = gen_reg_rtx (CCUNSmode);
if (!bytes_is_const || bytes >= loop_bytes)
@@ -1227,7 +1227,7 @@ expand_compare_loop (rtx operands[])
src2_ix2, orig_src2);
do_add3 (iv2, iv2, GEN_INT (loop_bytes));
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
{
/* Generate a compare, and convert with a setb later. */
rtx cmp = gen_rtx_COMPARE (CCUNSmode, d1_1, d2_1);
@@ -1245,7 +1245,7 @@ expand_compare_loop (rtx operands[])
do_ifelse (GET_MODE (dcond), NE, NULL_RTX, NULL_RTX,
dcond, diff_label, profile_probability::unlikely ());
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
{
/* Generate a compare, and convert with a setb later. */
rtx cmp = gen_rtx_COMPARE (CCUNSmode, d1_2, d2_2);
@@ -1279,7 +1279,7 @@ expand_compare_loop (rtx operands[])
/* If diff is nonzero, branch to difference handling
code. If we exit here with a nonzero diff, it is
because the second word differed. */
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
do_ifelse (CCUNSmode, NE, NULL_RTX, NULL_RTX, dcond,
diff_label, profile_probability::unlikely ());
else
@@ -1351,7 +1351,7 @@ expand_compare_loop (rtx operands[])
src2_addr, orig_src2);
/* Compare the word, see if we need to do the last partial. */
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
{
/* Generate a compare, and convert with a setb later. */
rtx cmp = gen_rtx_COMPARE (CCUNSmode, d1_1, d2_1);
@@ -1567,7 +1567,7 @@ expand_compare_loop (rtx operands[])
cmpld A,B
setb r */
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
emit_insn (gen_setb_unsigned (target, dcond));
else
{
@@ -1874,7 +1874,7 @@ expand_block_compare_gpr(unsigned HOST_WIDE_INT bytes, unsigned int base_align,
/* Compare to zero and branch to convert_label if not zero. */
rtx cvt_ref = gen_rtx_LABEL_REF (VOIDmode, convert_label);
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
{
/* Generate a compare, and convert with a setb later.
Use cond that is passed in because the caller needs
@@ -1909,7 +1909,7 @@ expand_block_compare_gpr(unsigned HOST_WIDE_INT bytes, unsigned int base_align,
{
/* Just do the subtract/compare. Since this is the last block
the convert code will be generated immediately following. */
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
{
rtx cmp = gen_rtx_COMPARE (CCUNSmode, tmp_reg_src1,
tmp_reg_src2);
@@ -1957,7 +1957,7 @@ expand_block_compare (rtx operands[])
but setb works well on P9. */
if (TARGET_32BIT
&& TARGET_POWERPC64
- && !TARGET_P9_MISC)
+ && !TARGET_POWER9)
return false;
/* Allow this param to shut off all expansion. */
@@ -1997,7 +1997,7 @@ expand_block_compare (rtx operands[])
/* P7/P8 code uses cond for subfc. but P9 uses
it for cmpld which needs CCUNSmode. */
rtx cond = NULL;
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
cond = gen_reg_rtx (CCUNSmode);
/* Is it OK to use vec/vsx for this. TARGET_VSX means we have at
@@ -2069,7 +2069,7 @@ expand_block_compare (rtx operands[])
{
if (convert_label)
emit_label (convert_label);
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
emit_insn (gen_setb_unsigned (target, cond));
else
generate_6432_conversion(target, sub_result);
diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index 440b76140bfc..fe17ccf668ca 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -3897,7 +3897,7 @@ rs6000_option_override_internal (bool global_init_p)
/* For the newer switches (vsx, dfp, etc.) set some of the older options,
unless the user explicitly used the -mno-<option> to disable the code. */
- if (TARGET_P9_VECTOR || TARGET_MODULO || TARGET_P9_MISC)
+ if (TARGET_P9_VECTOR || TARGET_MODULO || TARGET_POWER9)
rs6000_isa_flags |= (ISA_3_0_MASKS_SERVER & ~ignore_masks);
else if (TARGET_P9_MINMAX)
{
@@ -24498,7 +24498,6 @@ static struct rs6000_opt_mask const rs6000_opt_masks[] =
{ "power8-fusion-sign", OPTION_MASK_P8_FUSION_SIGN, false, true },
{ "power8-vector", OPTION_MASK_P8_VECTOR, false, true },
{ "power9-minmax", OPTION_MASK_P9_MINMAX, false, true },
- { "power9-misc", OPTION_MASK_P9_MISC, false, true },
{ "power9-vector", OPTION_MASK_P9_VECTOR, false, true },
{ "power10-fusion", OPTION_MASK_P10_FUSION, false, true },
{ "powerpc-gfxopt", OPTION_MASK_PPC_GFXOPT, false, true },
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 1d63d5f1ca38..42213d998133 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -558,6 +558,8 @@ extern int rs6000_vector_align[];
/* ISA bits that are set via -mcpu=<xxx>, but that do not have an associated
switch with the option. */
+#define TARGET_POWER9 \
+ ((rs6000_cpu_option_flags & CPU_OPTION_POWER9_MASK) != 0)
#define TARGET_POWER10 \
((rs6000_cpu_option_flags & CPU_OPTION_POWER10_MASK) != 0)
#define TARGET_POWER11 \
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 04a6c0f7461d..a78e1118f50d 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -6523,7 +6523,7 @@
[(set (match_operand:DF 0 "gpc_reg_operand" "=d")
(unspec_volatile:DF [(match_operand:DF 1 "gpc_reg_operand" "d")]
UNSPECV_MFFSCRN))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
"mffscrn %0,%1"
[(set_attr "type" "fp")])
@@ -6531,7 +6531,7 @@
[(set (match_operand:DF 0 "gpc_reg_operand" "=d")
(unspec_volatile:DF [(match_operand:SI 1 "const_0_to_3_operand" "n")]
UNSPECV_MFFSCRN))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
"mffscrni %0,%1"
[(set_attr "type" "fp")])
@@ -6539,7 +6539,7 @@
[(set (match_operand:DF 0 "gpc_reg_operand" "=d")
(unspec_volatile:DF [(const_int 0)] UNSPECV_MFFSCDRN))
(use (match_operand:DF 1 "gpc_reg_operand" "d"))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
"mffscdrn %0,%1"
[(set_attr "type" "fp")])
@@ -6552,7 +6552,7 @@
/* The floating point rounding control bits are FPSCR[62:63]. Put the
new rounding mode bits from operands[0][62:63] into FPSCR[62:63]. */
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
{
if (const_0_to_3_operand (operands[1], VOIDmode))
emit_insn (gen_rs6000_mffscrni (tmp_df, operands[1]));
@@ -6625,7 +6625,7 @@
/* The decimal floating point rounding control bits are FPSCR[29:31]. Put the
new rounding mode bits from operands[0][61:63] into FPSCR[29:31]. */
- if (TARGET_P9_MISC)
+ if (TARGET_POWER9)
{
rtx src_df = gen_reg_rtx (DFmode);
@@ -14654,7 +14654,7 @@
otherwise fall back to the older mffs instruction to emulate the mffsl
instruction. */
- if (!TARGET_P9_MISC)
+ if (!TARGET_POWER9)
{
rtx tmp1 = gen_reg_rtx (DFmode);
@@ -15609,7 +15609,7 @@
(define_expand "darn_32_<mode>"
[(use (match_operand:GPR 0 "register_operand"))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
{
emit_insn (gen_darn (<MODE>mode, operands[0], const0_rtx));
DONE;
@@ -15617,7 +15617,7 @@
(define_expand "darn_64_<mode>"
[(use (match_operand:GPR 0 "register_operand"))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
{
emit_insn (gen_darn (<MODE>mode, operands[0], const1_rtx));
DONE;
@@ -15625,7 +15625,7 @@
(define_expand "darn_raw_<mode>"
[(use (match_operand:GPR 0 "register_operand"))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
{
emit_insn (gen_darn (<MODE>mode, operands[0], const2_rtx));
DONE;
@@ -15635,7 +15635,7 @@
[(set (match_operand:GPR 0 "register_operand" "=r")
(unspec_volatile:GPR [(match_operand 1 "const_int_operand" "n")]
UNSPECV_DARN))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
"darn %0,%1"
[(set_attr "type" "integer")])
@@ -15669,7 +15669,7 @@
(const_int 0))
(const_int 1)
(const_int 0))))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
{
operands[3] = gen_reg_rtx (CCmode);
})
@@ -15688,7 +15688,7 @@
(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "gpc_reg_operand" "r")]
UNSPEC_CMPRB))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
"cmprb %0,0,%1,%2"
[(set_attr "type" "logical")])
@@ -15707,7 +15707,7 @@
(const_int 0))
(const_int 1)
(const_int 0))))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
"setb %0,%1"
[(set_attr "type" "logical")])
@@ -15720,7 +15720,7 @@
(const_int 0))
(const_int 1)
(const_int 0))))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
"setb %0,%1"
[(set_attr "type" "logical")])
@@ -15755,7 +15755,7 @@
(const_int 0))
(const_int 1)
(const_int 0))))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
{
operands[3] = gen_reg_rtx (CCmode);
})
@@ -15775,7 +15775,7 @@
(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "gpc_reg_operand" "r")]
UNSPEC_CMPRB2))]
- "TARGET_P9_MISC"
+ "TARGET_POWER9"
"cmprb %0,1,%1,%2"
[(set_attr "type" "logical")])
@@ -15811,7 +15811,7 @@
(const_int 0))
(const_int 1)
(const_int 0))))]
- "TARGET_P9_MISC && TARGET_64BIT"
+ "TARGET_POWER9 && TARGET_64BIT"
{
operands[3] = gen_reg_rtx (CCmode);
})
@@ -15831,7 +15831,7 @@
(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:DI 2 "gpc_reg_operand" "r")]
UNSPEC_CMPEQB))]
- "TARGET_P9_MISC && TARGET_64BIT"
+ "TARGET_POWER9 && TARGET_64BIT"
"cmpeqb %0,%1,%2"
[(set_attr "type" "logical")])
diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt
index 451afabe2c1f..55590c5fe9dd 100644
--- a/gcc/config/rs6000/rs6000.opt
+++ b/gcc/config/rs6000/rs6000.opt
@@ -535,8 +535,7 @@ Target Undocumented Var(unroll_only_small_loops) Init(0) Save
; Use conservative small loop unrolling.
mpower9-misc
-Target Undocumented Mask(P9_MISC) Var(rs6000_isa_flags)
-Use certain scalar instructions added in ISA 3.0.
+Target Undocumented WarnRemoved
mpower9-vector
Target Undocumented Mask(P9_VECTOR) Var(rs6000_isa_flags) WarnRemoved
More information about the Gcc-cvs
mailing list