===================================================================
@@ -550,18 +550,6 @@ mpower9-vector
Target Undocumented Report Mask(P9_VECTOR) Var(rs6000_isa_flags)
Use vector instructions added in ISA 3.0.
-mpower9-dform-scalar
-Target Undocumented Mask(P9_DFORM_SCALAR) Var(rs6000_isa_flags)
-Use scalar register+offset memory instructions added in ISA 3.0.
-
-mpower9-dform-vector
-Target Undocumented Mask(P9_DFORM_VECTOR) Var(rs6000_isa_flags)
-Use vector register+offset memory instructions added in ISA 3.0.
-
-mpower9-dform
-Target Undocumented Report Var(TARGET_P9_DFORM_BOTH) Init(-1) Save
-Use register+offset memory instructions added in ISA 3.0.
-
mpower9-minmax
Target Undocumented Mask(P9_MINMAX) Var(rs6000_isa_flags)
Use the new min/max instructions defined in ISA 3.0.
===================================================================
@@ -430,8 +430,8 @@ rs6000_target_modify_macros (bool define
rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR7");
/* Note that the OPTION_MASK_DIRECT_MOVE flag is automatically
turned on in the following condition:
- 1. TARGET_P9_DFORM_SCALAR or TARGET_P9_DFORM_VECTOR are enabled
- and OPTION_MASK_DIRECT_MOVE is not explicitly disabled.
+ 1. TARGET_P8_VECTOR is enabled and OPTION_MASK_DIRECT_MOVE is not
+ explicitly disabled.
Hereafter, the OPTION_MASK_DIRECT_MOVE flag is considered to
have been turned on explicitly.
Note that the OPTION_MASK_DIRECT_MOVE flag is automatically
@@ -545,8 +545,7 @@ rs6000_target_modify_macros (bool define
also considered to have been turned off explicitly.
Note that the OPTION_MASK_P9_VECTOR is automatically turned on
in the following conditions:
- 1. If TARGET_P9_DFORM_SCALAR or TARGET_P9_DFORM_VECTOR and
- OPTION_MASK_P9_VECTOR was not turned off explicitly.
+ 1. If TARGET_P9_MINMAX was turned on explicitly.
Hereafter, THE OPTION_MASK_P9_VECTOR flag is considered to
have been turned on explicitly. */
if ((flags & OPTION_MASK_P9_VECTOR) != 0)
===================================================================
@@ -827,7 +827,7 @@ (define_predicate "quad_memory_operand"
(define_predicate "vsx_quad_dform_memory_operand"
(match_code "mem")
{
- if (!TARGET_P9_DFORM_VECTOR || !MEM_P (op) || GET_MODE_SIZE (mode) != 16)
+ if (!TARGET_P9_VECTOR || !MEM_P (op) || GET_MODE_SIZE (mode) != 16)
return false;
return quad_address_p (XEXP (op, 0), mode, false);
===================================================================
@@ -61,8 +61,6 @@
| OPTION_MASK_ISEL \
| OPTION_MASK_MODULO \
| OPTION_MASK_P9_FUSION \
- | OPTION_MASK_P9_DFORM_SCALAR \
- | OPTION_MASK_P9_DFORM_VECTOR \
| OPTION_MASK_P9_MINMAX \
| OPTION_MASK_P9_MISC \
| OPTION_MASK_P9_VECTOR)
@@ -76,8 +74,6 @@
/* Flags that need to be turned off if -mno-power9-vector. */
#define OTHER_P9_VECTOR_MASKS (OPTION_MASK_FLOAT128_HW \
- | OPTION_MASK_P9_DFORM_SCALAR \
- | OPTION_MASK_P9_DFORM_VECTOR \
| OPTION_MASK_P9_MINMAX)
/* Flags that need to be turned off if -mno-power8-vector. */
@@ -127,8 +123,6 @@
| OPTION_MASK_NO_UPDATE \
| OPTION_MASK_P8_FUSION \
| OPTION_MASK_P8_VECTOR \
- | OPTION_MASK_P9_DFORM_SCALAR \
- | OPTION_MASK_P9_DFORM_VECTOR \
| OPTION_MASK_P9_FUSION \
| OPTION_MASK_P9_MINMAX \
| OPTION_MASK_P9_MISC \
===================================================================
@@ -2926,8 +2926,7 @@ rs6000_setup_reg_addr_masks (void)
&& (rc == RELOAD_REG_GPR
|| ((msize == 8 || m2 == SFmode)
&& (rc == RELOAD_REG_FPR
- || (rc == RELOAD_REG_VMX
- && TARGET_P9_DFORM_SCALAR)))))
+ || (rc == RELOAD_REG_VMX && TARGET_P9_VECTOR)))))
addr_mask |= RELOAD_REG_OFFSET;
/* VSX registers can do REG+OFFSET addresssing if ISA 3.0
@@ -2935,7 +2934,7 @@ rs6000_setup_reg_addr_masks (void)
only 12-bits. While GPRs can handle the full offset range, VSX
registers can only handle the restricted range. */
else if ((addr_mask != 0) && !indexed_only_p
- && msize == 16 && TARGET_P9_DFORM_VECTOR
+ && msize == 16 && TARGET_P9_VECTOR
&& (ALTIVEC_OR_VSX_VECTOR_MODE (m2)
|| (m2 == TImode && TARGET_VSX)))
{
@@ -3255,13 +3254,14 @@ rs6000_init_hard_regno_mode_ok (bool glo
rs6000_constraints[RS6000_CONSTRAINT_wp] = VSX_REGS; /* TFmode */
}
- /* Support for new D-form instructions. */
- if (TARGET_P9_DFORM_SCALAR)
- rs6000_constraints[RS6000_CONSTRAINT_wb] = ALTIVEC_REGS;
-
- /* Support for ISA 3.0 (power9) vectors. */
if (TARGET_P9_VECTOR)
- rs6000_constraints[RS6000_CONSTRAINT_wo] = VSX_REGS;
+ {
+ /* Support for new D-form instructions. */
+ rs6000_constraints[RS6000_CONSTRAINT_wb] = ALTIVEC_REGS;
+
+ /* Support for ISA 3.0 (power9) vectors. */
+ rs6000_constraints[RS6000_CONSTRAINT_wo] = VSX_REGS;
+ }
/* Support for new direct moves (ISA 3.0 + 64bit). */
if (TARGET_DIRECT_MOVE_128)
@@ -3542,7 +3542,7 @@ rs6000_init_hard_regno_mode_ok (bool glo
reg_addr[xmode].fusion_addis_ld[rtype] = addis_insns[i].load;
reg_addr[xmode].fusion_addis_st[rtype] = addis_insns[i].store;
- if (rtype == RELOAD_REG_FPR && TARGET_P9_DFORM_SCALAR)
+ if (rtype == RELOAD_REG_FPR && TARGET_P9_VECTOR)
{
reg_addr[xmode].fusion_addis_ld[RELOAD_REG_VMX]
= addis_insns[i].load;
@@ -4239,8 +4239,7 @@ rs6000_option_override_internal (bool gl
/* 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_DFORM_SCALAR
- || TARGET_P9_DFORM_VECTOR || TARGET_P9_DFORM_BOTH > 0)
+ if (TARGET_P9_VECTOR || TARGET_MODULO || TARGET_P9_MISC)
rs6000_isa_flags |= (ISA_3_0_MASKS_SERVER & ~ignore_masks);
else if (TARGET_P9_MINMAX)
{
@@ -4467,81 +4466,6 @@ rs6000_option_override_internal (bool gl
}
}
- /* -mpower9-dform turns on both -mpower9-dform-scalar and
- -mpower9-dform-vector. */
- if (TARGET_P9_DFORM_BOTH > 0)
- {
- if (!(rs6000_isa_flags_explicit & OPTION_MASK_P9_DFORM_VECTOR))
- rs6000_isa_flags |= OPTION_MASK_P9_DFORM_VECTOR;
-
- if (!(rs6000_isa_flags_explicit & OPTION_MASK_P9_DFORM_SCALAR))
- rs6000_isa_flags |= OPTION_MASK_P9_DFORM_SCALAR;
- }
- else if (TARGET_P9_DFORM_BOTH == 0)
- {
- if (!(rs6000_isa_flags_explicit & OPTION_MASK_P9_DFORM_VECTOR))
- rs6000_isa_flags &= ~OPTION_MASK_P9_DFORM_VECTOR;
-
- if (!(rs6000_isa_flags_explicit & OPTION_MASK_P9_DFORM_SCALAR))
- rs6000_isa_flags &= ~OPTION_MASK_P9_DFORM_SCALAR;
- }
-
- /* ISA 3.0 D-form instructions require p9-vector and upper-regs. */
- if ((TARGET_P9_DFORM_SCALAR || TARGET_P9_DFORM_VECTOR) && !TARGET_P9_VECTOR)
- {
- /* We prefer to not mention undocumented options in
- error messages. However, if users have managed to select
- power9-dform without selecting power9-vector, they
- already know about undocumented flags. */
- if ((rs6000_isa_flags_explicit & OPTION_MASK_P9_VECTOR)
- && (rs6000_isa_flags_explicit & (OPTION_MASK_P9_DFORM_SCALAR
- | OPTION_MASK_P9_DFORM_VECTOR)))
- error ("%qs requires %qs", "-mpower9-dform", "-mpower9-vector");
- else if (rs6000_isa_flags_explicit & OPTION_MASK_P9_VECTOR)
- {
- rs6000_isa_flags &=
- ~(OPTION_MASK_P9_DFORM_SCALAR | OPTION_MASK_P9_DFORM_VECTOR);
- rs6000_isa_flags_explicit |=
- (OPTION_MASK_P9_DFORM_SCALAR | OPTION_MASK_P9_DFORM_VECTOR);
- }
- else
- {
- /* We know that OPTION_MASK_P9_VECTOR is not explicit and
- OPTION_MASK_P9_DFORM_SCALAR or OPTION_MASK_P9_DORM_VECTOR
- may be explicit. */
- rs6000_isa_flags |= OPTION_MASK_P9_VECTOR;
- rs6000_isa_flags_explicit |= OPTION_MASK_P9_VECTOR;
- }
- }
-
- if ((TARGET_P9_DFORM_SCALAR || TARGET_P9_DFORM_VECTOR)
- && !TARGET_DIRECT_MOVE)
- {
- /* We prefer to not mention undocumented options in
- error messages. However, if users have managed to select
- power9-dform without selecting direct-move, they
- already know about undocumented flags. */
- if ((rs6000_isa_flags_explicit & OPTION_MASK_DIRECT_MOVE)
- && ((rs6000_isa_flags_explicit & OPTION_MASK_P9_DFORM_VECTOR) ||
- (rs6000_isa_flags_explicit & OPTION_MASK_P9_DFORM_SCALAR) ||
- (TARGET_P9_DFORM_BOTH == 1)))
- error ("%qs, %qs, %qs require %qs", "-mpower9-dform",
- "-mpower9-dform-vector", "-mpower9-dform-scalar",
- "-mdirect-move");
- else if ((rs6000_isa_flags_explicit & OPTION_MASK_DIRECT_MOVE) == 0)
- {
- rs6000_isa_flags |= OPTION_MASK_DIRECT_MOVE;
- rs6000_isa_flags_explicit |= OPTION_MASK_DIRECT_MOVE;
- }
- else
- {
- rs6000_isa_flags &=
- ~(OPTION_MASK_P9_DFORM_SCALAR | OPTION_MASK_P9_DFORM_VECTOR);
- rs6000_isa_flags_explicit |=
- (OPTION_MASK_P9_DFORM_SCALAR | OPTION_MASK_P9_DFORM_VECTOR);
- }
- }
-
/* Set -mallow-movmisalign to explicitly on if we have full ISA 2.07
support. If we only have ISA 2.06 support, and the user did not specify
the switch, leave it set to -1 so the movmisalign patterns are enabled,
@@ -27386,7 +27310,7 @@ rs6000_emit_prologue (void)
savereg = gen_rtx_REG (V4SImode, i);
- if (TARGET_P9_DFORM_VECTOR && quad_address_offset_p (offset))
+ if (TARGET_P9_VECTOR && quad_address_offset_p (offset))
{
mem = gen_frame_mem (V4SImode,
gen_rtx_PLUS (Pmode, frame_reg_rtx,
@@ -28077,7 +28001,7 @@ rs6000_emit_epilogue (int sibcall)
= (info->altivec_save_offset + frame_off
+ 16 * (i - info->first_altivec_reg_save));
- if (TARGET_P9_DFORM_VECTOR && quad_address_offset_p (offset))
+ if (TARGET_P9_VECTOR && quad_address_offset_p (offset))
{
mem = gen_frame_mem (V4SImode,
gen_rtx_PLUS (Pmode, frame_reg_rtx,
@@ -28293,7 +28217,7 @@ rs6000_emit_epilogue (int sibcall)
= (info->altivec_save_offset + frame_off
+ 16 * (i - info->first_altivec_reg_save));
- if (TARGET_P9_DFORM_VECTOR && quad_address_offset_p (offset))
+ if (TARGET_P9_VECTOR && quad_address_offset_p (offset))
{
mem = gen_frame_mem (V4SImode,
gen_rtx_PLUS (Pmode, frame_reg_rtx,
@@ -36155,8 +36079,6 @@ static struct rs6000_opt_mask const rs60
{ "power8-fusion", OPTION_MASK_P8_FUSION, false, true },
{ "power8-fusion-sign", OPTION_MASK_P8_FUSION_SIGN, false, true },
{ "power8-vector", OPTION_MASK_P8_VECTOR, false, true },
- { "power9-dform-scalar", OPTION_MASK_P9_DFORM_SCALAR, false, true },
- { "power9-dform-vector", OPTION_MASK_P9_DFORM_VECTOR, false, true },
{ "power9-fusion", OPTION_MASK_P9_FUSION, false, true },
{ "power9-minmax", OPTION_MASK_P9_MINMAX, false, true },
{ "power9-misc", OPTION_MASK_P9_MISC, false, true },
@@ -36944,14 +36866,6 @@ rs6000_disable_incompatible_switches (vo
}
}
- if (!TARGET_P9_VECTOR
- && (rs6000_isa_flags_explicit & OPTION_MASK_P9_VECTOR) != 0
- && TARGET_P9_DFORM_BOTH > 0)
- {
- error ("%qs turns off %qs", "-mno-power9-vector", "-mpower9-dform");
- TARGET_P9_DFORM_BOTH = 0;
- }
-
return ignore_masks;
}
@@ -38691,7 +38605,7 @@ emit_fusion_p9_load (rtx reg, rtx mem, r
else
gcc_unreachable ();
}
- else if (ALTIVEC_REGNO_P (r) && TARGET_P9_DFORM_SCALAR)
+ else if (ALTIVEC_REGNO_P (r) && TARGET_P9_VECTOR)
{
if (mode == SFmode)
load_string = "lxssp";
@@ -38778,7 +38692,7 @@ emit_fusion_p9_store (rtx mem, rtx reg,
else
gcc_unreachable ();
}
- else if (ALTIVEC_REGNO_P (r) && TARGET_P9_DFORM_SCALAR)
+ else if (ALTIVEC_REGNO_P (r) && TARGET_P9_VECTOR)
{
if (mode == SFmode)
store_string = "stxssp";
===================================================================
@@ -312,15 +312,11 @@ extern const char *host_detect_local_cpu
#undef TARGET_MODULO
#undef TARGET_P9_VECTOR
#undef TARGET_P9_MINMAX
-#undef TARGET_P9_DFORM_SCALAR
-#undef TARGET_P9_DFORM_VECTOR
#undef TARGET_P9_MISC
#define TARGET_FLOAT128_HW 0
#define TARGET_MODULO 0
#define TARGET_P9_VECTOR 0
#define TARGET_P9_MINMAX 0
-#define TARGET_P9_DFORM_SCALAR 0
-#define TARGET_P9_DFORM_VECTOR 0
#define TARGET_P9_MISC 0
#endif
===================================================================
@@ -13965,7 +13965,7 @@ (define_peephole2
(match_operand:ALTIVEC_DFORM 2 "simple_offsettable_mem_operand"))
(set (match_operand:ALTIVEC_DFORM 3 "altivec_register_operand")
(match_dup 1))]
- "TARGET_VSX && !TARGET_P9_DFORM_SCALAR && peep2_reg_dead_p (2, operands[1])"
+ "TARGET_VSX && !TARGET_P9_VECTOR && peep2_reg_dead_p (2, operands[1])"
[(set (match_dup 0)
(match_dup 4))
(set (match_dup 3)
@@ -14001,7 +14001,7 @@ (define_peephole2
(match_operand:ALTIVEC_DFORM 2 "altivec_register_operand"))
(set (match_operand:ALTIVEC_DFORM 3 "simple_offsettable_mem_operand")
(match_dup 1))]
- "TARGET_VSX && !TARGET_P9_DFORM_SCALAR && peep2_reg_dead_p (2, operands[1])"
+ "TARGET_VSX && !TARGET_P9_VECTOR && peep2_reg_dead_p (2, operands[1])"
[(set (match_dup 0)
(match_dup 4))
(set (match_dup 5)
===================================================================
@@ -1,7 +1,6 @@
/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
-/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
-/* { dg-options "-mcpu=power9 -mpower9-dform -O2" } */
+/* { dg-options "-mpower9-vector -O2" } */
#ifndef TYPE
#define TYPE double
===================================================================
@@ -1,7 +1,6 @@
/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
-/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
-/* { dg-options "-mcpu=power9 -mpower9-dform -O2" } */
+/* { dg-options "-mpower9-vector -O2" } */
#ifndef TYPE
#define TYPE float
===================================================================
@@ -1,8 +1,7 @@
/* Test for reload ICE arising from POWER9 Vector Dform code generation. */
/* { dg-do compile } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
-/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
-/* { dg-options "-O1 -mcpu=power9 -mpower9-dform-vector" } */
+/* { dg-options "-O1 -mpower9-vector" } */
typedef __attribute__((altivec(vector__))) int type_t;
type_t
===================================================================
@@ -1,7 +1,7 @@
/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
-/* { dg-options "-mcpu=power9 -mpower9-dform -O2" } */
+/* { dg-options "-mcpu=power9 -O2" } */
#ifndef TYPE
#define TYPE vector double
===================================================================
@@ -1,8 +1,7 @@
/* Test for reload ICE arising from POWER9 Vector Dform code generation. */
/* { dg-do compile } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
-/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
-/* { dg-options "-O3 -mcpu=power9 -mpower9-dform-vector -funroll-loops -fno-aggressive-loop-optimizations" } */
+/* { dg-options "-O3 -mpower9-vector -funroll-loops -fno-aggressive-loop-optimizations" } */
typedef double vec[3];
struct vec_t
===================================================================
@@ -1,13 +1,12 @@
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
-/* { dg-options "-mpower9-dform-vector -mno-direct-move" } */
+/* { dg-options "-mpower9-minmax -mno-direct-move" } */
/* { dg-excess-errors "expect error due to conflicting target options" } */
/* Since the error message is not associated with a particular line
number, we cannot use the dg-error directive and cannot specify a
regexp to describe the expected error message. The expected error
- message is: "-mpower9-dform, -mpower9-dform-vector,
- -mpower9-dform-scalar require -mdirect-move" */
+ message is: "-mpower9-minmax requires -mdirect-move" */
int a;
void b (__attribute__ ((__vector_size__ (16))) char c)
===================================================================
@@ -1,9 +1,8 @@
/* { dg-do compile { target { powerpc64*-*-* } } } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
-/* { dg-options "-mcpu=power9 -mno-power9-vector -mpower9-minmax -mpower9-dform" } */
+/* { dg-options "-mcpu=power9 -mno-power9-vector -mpower9-minmax" } */
int i;
/* { dg-error "'-mno-power9-vector' turns off '-mpower9-minmax'" "PR80098" { target *-*-* } 0 } */
-/* { dg-error "'-mno-power9-vector' turns off '-mpower9-dform'" "PR80098" { target *-*-* } 0 } */