Remove gen_cell_microcode, warn_cell_microcode
-mno-gen-cell-microcode is a pain to handle correctly: it causes different code generation for some very basic patterns, even patterns specific to that option. It also requires marking up many patterns, which is a pain when adding new patterns or modifying existing ones (first non-trivial step is finding the Cell BE manual!) -mwarn-cell-microcode is very expensive, even more so after my recent fix for PR43763; and it used to ICE for seven years before that fix. This patch removes both these command line options (it leaves the positive form of -mgen-cell-microcode, doing nothing, for compatibility). Where cc_reg_not_micro_cr0_operand was used, we now get the regular cc_reg_not_cr0_operand. One testcase used -mgen-cell-microcode and one its negation; both are adjusted. * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete. (lwa_operand): Delete rs6000_gen_cell_microcode test. * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete rs6000_gen_cell_microcode code. (rs6000_final_prescan_insn): Delete. (rs6000_opt_vars): Delete the "gen-cell-microcode" and "warn-cell-microcode" entries. * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete. * config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests throughout. Change cc_reg_not_micro_cr0_operand to cc_reg_not_cr0_operand throughout. (*extendhi<mode>2_noload): Delete. * config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub. (mwarn-cell-microcode): Delete. * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mgen-cell-microcode and -mwarn-cell-microcode. gcc/testsuite/ * gcc.target/powerpc/shift-dot.c: Delete -mgen-cell-microcode from dg-options. * gfortran.dg/pr80107.f: Delete testcase. From-SVN: r248695
This commit is contained in:
parent
98c28dd4ba
commit
3f8efe25d6
10 changed files with 79 additions and 170 deletions
|
@ -1,3 +1,22 @@
|
|||
2017-05-30 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
* config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete.
|
||||
(lwa_operand): Delete rs6000_gen_cell_microcode test.
|
||||
* config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
|
||||
rs6000_gen_cell_microcode code.
|
||||
(rs6000_final_prescan_insn): Delete.
|
||||
(rs6000_opt_vars): Delete the "gen-cell-microcode" and
|
||||
"warn-cell-microcode" entries.
|
||||
* config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete.
|
||||
* config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests
|
||||
throughout. Change cc_reg_not_micro_cr0_operand to
|
||||
cc_reg_not_cr0_operand throughout.
|
||||
(*extendhi<mode>2_noload): Delete.
|
||||
* config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub.
|
||||
(mwarn-cell-microcode): Delete.
|
||||
* doc/invoke.texi (RS/6000 and PowerPC Options): Delete
|
||||
-mgen-cell-microcode and -mwarn-cell-microcode.
|
||||
|
||||
2017-05-30 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/80833
|
||||
|
|
|
@ -530,25 +530,6 @@
|
|||
return CR_REGNO_NOT_CR0_P (REGNO (op));
|
||||
})
|
||||
|
||||
;; Return 1 if op is a register that is a condition register field and if generating microcode, not cr0.
|
||||
(define_predicate "cc_reg_not_micro_cr0_operand"
|
||||
(match_operand 0 "register_operand")
|
||||
{
|
||||
if (GET_CODE (op) == SUBREG)
|
||||
op = SUBREG_REG (op);
|
||||
|
||||
if (!REG_P (op))
|
||||
return 0;
|
||||
|
||||
if (REGNO (op) > LAST_VIRTUAL_REGISTER)
|
||||
return 1;
|
||||
|
||||
if (rs6000_gen_cell_microcode)
|
||||
return CR_REGNO_NOT_CR0_P (REGNO (op));
|
||||
else
|
||||
return CR_REGNO_P (REGNO (op));
|
||||
})
|
||||
|
||||
;; Return 1 if op is a constant integer valid for D field
|
||||
;; or non-special register register.
|
||||
(define_predicate "reg_or_short_operand"
|
||||
|
@ -1069,8 +1050,6 @@
|
|||
return true;
|
||||
if (!memory_operand (inner, mode))
|
||||
return false;
|
||||
if (!rs6000_gen_cell_microcode)
|
||||
return false;
|
||||
|
||||
addr = XEXP (inner, 0);
|
||||
if (GET_CODE (addr) == PRE_INC
|
||||
|
|
|
@ -4260,16 +4260,9 @@ rs6000_option_override_internal (bool global_init_p)
|
|||
error ("SPE not supported in this target");
|
||||
}
|
||||
|
||||
/* Disable Cell microcode if we are optimizing for the Cell
|
||||
and not optimizing for size. */
|
||||
if (rs6000_gen_cell_microcode == -1)
|
||||
rs6000_gen_cell_microcode = !(rs6000_cpu == PROCESSOR_CELL
|
||||
&& !optimize_size);
|
||||
|
||||
/* If we are optimizing big endian systems for space and it's OK to
|
||||
use instructions that would be microcoded on the Cell, use the
|
||||
load/store multiple and string instructions. */
|
||||
if (BYTES_BIG_ENDIAN && optimize_size && rs6000_gen_cell_microcode)
|
||||
/* If we are optimizing big endian systems for space, use the load/store
|
||||
multiple and string instructions. */
|
||||
if (BYTES_BIG_ENDIAN && optimize_size)
|
||||
rs6000_isa_flags |= ~rs6000_isa_flags_explicit & (OPTION_MASK_MULTIPLE
|
||||
| OPTION_MASK_STRING);
|
||||
|
||||
|
@ -39295,38 +39288,6 @@ rs6000_stack_protect_fail (void)
|
|||
: default_external_stack_protect_fail ();
|
||||
}
|
||||
|
||||
void
|
||||
rs6000_final_prescan_insn (rtx_insn *insn, rtx *operand ATTRIBUTE_UNUSED,
|
||||
int num_operands ATTRIBUTE_UNUSED)
|
||||
{
|
||||
if (rs6000_warn_cell_microcode)
|
||||
{
|
||||
const char *temp;
|
||||
int insn_code_number = recog_memoized (insn);
|
||||
location_t location = INSN_LOCATION (insn);
|
||||
|
||||
/* Punt on insns we cannot recognize. */
|
||||
if (insn_code_number < 0)
|
||||
return;
|
||||
|
||||
/* get_insn_template can modify recog_data, so save and restore it. */
|
||||
struct recog_data_d recog_data_save = recog_data;
|
||||
for (int i = 0; i < recog_data.n_operands; i++)
|
||||
recog_data.operand[i] = copy_rtx (recog_data.operand[i]);
|
||||
temp = get_insn_template (insn_code_number, insn);
|
||||
recog_data = recog_data_save;
|
||||
|
||||
if (get_attr_cell_micro (insn) == CELL_MICRO_ALWAYS)
|
||||
warning_at (location, OPT_mwarn_cell_microcode,
|
||||
"emitting microcode insn %s\t[%s] #%d",
|
||||
temp, insn_data[INSN_CODE (insn)].name, INSN_UID (insn));
|
||||
else if (get_attr_cell_micro (insn) == CELL_MICRO_CONDITIONAL)
|
||||
warning_at (location, OPT_mwarn_cell_microcode,
|
||||
"emitting conditional microcode insn %s\t[%s] #%d",
|
||||
temp, insn_data[INSN_CODE (insn)].name, INSN_UID (insn));
|
||||
}
|
||||
}
|
||||
|
||||
/* Implement the TARGET_ASAN_SHADOW_OFFSET hook. */
|
||||
|
||||
#if TARGET_ELF
|
||||
|
@ -39499,12 +39460,6 @@ static struct rs6000_opt_var const rs6000_opt_vars[] =
|
|||
{ "sched-epilog",
|
||||
offsetof (struct gcc_options, x_TARGET_SCHED_PROLOG),
|
||||
offsetof (struct cl_target_option, x_TARGET_SCHED_PROLOG), },
|
||||
{ "gen-cell-microcode",
|
||||
offsetof (struct gcc_options, x_rs6000_gen_cell_microcode),
|
||||
offsetof (struct cl_target_option, x_rs6000_gen_cell_microcode), },
|
||||
{ "warn-cell-microcode",
|
||||
offsetof (struct gcc_options, x_rs6000_warn_cell_microcode),
|
||||
offsetof (struct cl_target_option, x_rs6000_warn_cell_microcode), },
|
||||
};
|
||||
|
||||
/* Inner function to handle attribute((target("..."))) and #pragma GCC target
|
||||
|
|
|
@ -2157,12 +2157,6 @@ do { \
|
|||
|
||||
/* #define LEGITIMATE_PIC_OPERAND_P (X) */
|
||||
|
||||
/* Define this if some processing needs to be done immediately before
|
||||
emitting code for an insn. */
|
||||
|
||||
#define FINAL_PRESCAN_INSN(INSN,OPERANDS,NOPERANDS) \
|
||||
rs6000_final_prescan_insn (INSN, OPERANDS, NOPERANDS)
|
||||
|
||||
/* Specify the machine mode that this machine uses
|
||||
for the index in the tablejump instruction. */
|
||||
#define CASE_VECTOR_MODE SImode
|
||||
|
|
|
@ -726,7 +726,7 @@
|
|||
(compare:CC (zero_extend:EXTQI (match_operand:QI 1 "gpc_reg_operand" "r,r"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:EXTQI 0 "=r,r"))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
andi. %0,%1,0xff
|
||||
#"
|
||||
|
@ -747,7 +747,7 @@
|
|||
(const_int 0)))
|
||||
(set (match_operand:EXTQI 0 "gpc_reg_operand" "=r,r")
|
||||
(zero_extend:EXTQI (match_dup 1)))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
andi. %0,%1,0xff
|
||||
#"
|
||||
|
@ -779,7 +779,7 @@
|
|||
(compare:CC (zero_extend:EXTHI (match_operand:HI 1 "gpc_reg_operand" "r,r"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:EXTHI 0 "=r,r"))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
andi. %0,%1,0xffff
|
||||
#"
|
||||
|
@ -800,7 +800,7 @@
|
|||
(const_int 0)))
|
||||
(set (match_operand:EXTHI 0 "gpc_reg_operand" "=r,r")
|
||||
(zero_extend:EXTHI (match_dup 1)))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
andi. %0,%1,0xffff
|
||||
#"
|
||||
|
@ -835,7 +835,7 @@
|
|||
(compare:CC (zero_extend:EXTSI (match_operand:SI 1 "gpc_reg_operand" "r,r"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:EXTSI 0 "=r,r"))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
rldicl. %0,%1,0,32
|
||||
#"
|
||||
|
@ -856,7 +856,7 @@
|
|||
(const_int 0)))
|
||||
(set (match_operand:EXTSI 0 "gpc_reg_operand" "=r,r")
|
||||
(zero_extend:EXTSI (match_dup 1)))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
rldicl. %0,%1,0,32
|
||||
#"
|
||||
|
@ -886,7 +886,7 @@
|
|||
(compare:CC (sign_extend:EXTQI (match_operand:QI 1 "gpc_reg_operand" "r,r"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:EXTQI 0 "=r,r"))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
extsb. %0,%1
|
||||
#"
|
||||
|
@ -907,7 +907,7 @@
|
|||
(const_int 0)))
|
||||
(set (match_operand:EXTQI 0 "gpc_reg_operand" "=r,r")
|
||||
(sign_extend:EXTQI (match_dup 1)))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
extsb. %0,%1
|
||||
#"
|
||||
|
@ -932,7 +932,7 @@
|
|||
(define_insn "*extendhi<mode>2"
|
||||
[(set (match_operand:EXTHI 0 "gpc_reg_operand" "=r,r,?*wK,?*wK")
|
||||
(sign_extend:EXTHI (match_operand:HI 1 "reg_or_mem_operand" "m,r,Z,wK")))]
|
||||
"rs6000_gen_cell_microcode || TARGET_VSX_SMALL_INTEGER"
|
||||
""
|
||||
"@
|
||||
lha%U1%X1 %0,%1
|
||||
extsh %0,%1
|
||||
|
@ -955,19 +955,12 @@
|
|||
operands[2] = gen_rtx_REG (HImode, REGNO (operands[1]));
|
||||
})
|
||||
|
||||
(define_insn "*extendhi<mode>2_noload"
|
||||
[(set (match_operand:EXTHI 0 "gpc_reg_operand" "=r")
|
||||
(sign_extend:EXTHI (match_operand:HI 1 "gpc_reg_operand" "r")))]
|
||||
"!rs6000_gen_cell_microcode"
|
||||
"extsh %0,%1"
|
||||
[(set_attr "type" "exts")])
|
||||
|
||||
(define_insn_and_split "*extendhi<mode>2_dot"
|
||||
[(set (match_operand:CC 2 "cc_reg_operand" "=x,?y")
|
||||
(compare:CC (sign_extend:EXTHI (match_operand:HI 1 "gpc_reg_operand" "r,r"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:EXTHI 0 "=r,r"))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
extsh. %0,%1
|
||||
#"
|
||||
|
@ -988,7 +981,7 @@
|
|||
(const_int 0)))
|
||||
(set (match_operand:EXTHI 0 "gpc_reg_operand" "=r,r")
|
||||
(sign_extend:EXTHI (match_dup 1)))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
extsh. %0,%1
|
||||
#"
|
||||
|
@ -1052,7 +1045,7 @@
|
|||
(compare:CC (sign_extend:EXTSI (match_operand:SI 1 "gpc_reg_operand" "r,r"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:EXTSI 0 "=r,r"))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
extsw. %0,%1
|
||||
#"
|
||||
|
@ -1073,7 +1066,7 @@
|
|||
(const_int 0)))
|
||||
(set (match_operand:EXTSI 0 "gpc_reg_operand" "=r,r")
|
||||
(sign_extend:EXTSI (match_dup 1)))]
|
||||
"rs6000_gen_cell_microcode"
|
||||
""
|
||||
"@
|
||||
extsw. %0,%1
|
||||
#"
|
||||
|
@ -1941,7 +1934,7 @@
|
|||
(compare:CC (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
not. %0,%1
|
||||
#"
|
||||
|
@ -1962,7 +1955,7 @@
|
|||
(const_int 0)))
|
||||
(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
|
||||
(not:GPR (match_dup 1)))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
not. %0,%1
|
||||
#"
|
||||
|
@ -2849,7 +2842,7 @@
|
|||
(match_operand:GPR 2 "gpc_reg_operand" "r,r"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
mull<wd>. %0,%1,%2
|
||||
#"
|
||||
|
@ -2874,7 +2867,7 @@
|
|||
(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
|
||||
(mult:GPR (match_dup 1)
|
||||
(match_dup 2)))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
mull<wd>. %0,%1,%2
|
||||
#"
|
||||
|
@ -3220,8 +3213,7 @@
|
|||
DONE;
|
||||
}
|
||||
|
||||
if (logical_const_operand (operands[2], <MODE>mode)
|
||||
&& rs6000_gen_cell_microcode)
|
||||
if (logical_const_operand (operands[2], <MODE>mode))
|
||||
{
|
||||
emit_insn (gen_and<mode>3_imm (operands[0], operands[1], operands[2]));
|
||||
DONE;
|
||||
|
@ -3243,8 +3235,7 @@
|
|||
(and:GPR (match_operand:GPR 1 "gpc_reg_operand" "%r")
|
||||
(match_operand:GPR 2 "logical_const_operand" "n")))
|
||||
(clobber (match_scratch:CC 3 "=x"))]
|
||||
"rs6000_gen_cell_microcode
|
||||
&& !rs6000_is_valid_and_mask (operands[2], <MODE>mode)"
|
||||
"!rs6000_is_valid_and_mask (operands[2], <MODE>mode)"
|
||||
"andi%e2. %0,%1,%u2"
|
||||
[(set_attr "type" "logical")
|
||||
(set_attr "dot" "yes")])
|
||||
|
@ -3257,7 +3248,6 @@
|
|||
(clobber (match_scratch:GPR 0 "=r,r"))
|
||||
(clobber (match_scratch:CC 4 "=X,x"))]
|
||||
"(<MODE>mode == Pmode || UINTVAL (operands[2]) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode
|
||||
&& !rs6000_is_valid_and_mask (operands[2], <MODE>mode)"
|
||||
"@
|
||||
andi%e2. %0,%1,%u2
|
||||
|
@ -3285,7 +3275,6 @@
|
|||
(match_dup 2)))
|
||||
(clobber (match_scratch:CC 4 "=X,x"))]
|
||||
"(<MODE>mode == Pmode || UINTVAL (operands[2]) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode
|
||||
&& !rs6000_is_valid_and_mask (operands[2], <MODE>mode)"
|
||||
"@
|
||||
andi%e2. %0,%1,%u2
|
||||
|
@ -3310,7 +3299,6 @@
|
|||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"(<MODE>mode == Pmode || UINTVAL (operands[2]) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode
|
||||
&& rs6000_is_valid_and_mask (operands[2], <MODE>mode)"
|
||||
"@
|
||||
andi%e2. %0,%1,%u2
|
||||
|
@ -3336,7 +3324,6 @@
|
|||
(and:GPR (match_dup 1)
|
||||
(match_dup 2)))]
|
||||
"(<MODE>mode == Pmode || UINTVAL (operands[2]) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode
|
||||
&& rs6000_is_valid_and_mask (operands[2], <MODE>mode)"
|
||||
"@
|
||||
andi%e2. %0,%1,%u2
|
||||
|
@ -3366,8 +3353,7 @@
|
|||
<< INTVAL (operands[4])),
|
||||
DImode)
|
||||
&& (<MODE>mode == Pmode
|
||||
|| (UINTVAL (operands[2]) << INTVAL (operands[4])) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode"
|
||||
|| (UINTVAL (operands[2]) << INTVAL (operands[4])) <= 0x7fffffff)"
|
||||
{
|
||||
operands[2] = GEN_INT (UINTVAL (operands[2]) << INTVAL (operands[4]));
|
||||
return "andi%e2. %0,%1,%u2";
|
||||
|
@ -3393,7 +3379,6 @@
|
|||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"(<MODE>mode == Pmode || UINTVAL (operands[2]) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode
|
||||
&& !logical_const_operand (operands[2], <MODE>mode)
|
||||
&& rs6000_is_valid_and_mask (operands[2], <MODE>mode)"
|
||||
{
|
||||
|
@ -3423,7 +3408,6 @@
|
|||
(and:GPR (match_dup 1)
|
||||
(match_dup 2)))]
|
||||
"(<MODE>mode == Pmode || UINTVAL (operands[2]) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode
|
||||
&& !logical_const_operand (operands[2], <MODE>mode)
|
||||
&& rs6000_is_valid_and_mask (operands[2], <MODE>mode)"
|
||||
{
|
||||
|
@ -3451,8 +3435,7 @@
|
|||
(match_operand:GPR 2 "const_int_operand" "n")))]
|
||||
"rs6000_is_valid_2insn_and (operands[2], <MODE>mode)
|
||||
&& !(rs6000_is_valid_and_mask (operands[2], <MODE>mode)
|
||||
|| (logical_const_operand (operands[2], <MODE>mode)
|
||||
&& rs6000_gen_cell_microcode))"
|
||||
|| logical_const_operand (operands[2], <MODE>mode))"
|
||||
"#"
|
||||
"&& 1"
|
||||
[(pc)]
|
||||
|
@ -3470,11 +3453,9 @@
|
|||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"(<MODE>mode == Pmode || UINTVAL (operands[2]) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode
|
||||
&& rs6000_is_valid_2insn_and (operands[2], <MODE>mode)
|
||||
&& !(rs6000_is_valid_and_mask (operands[2], <MODE>mode)
|
||||
|| (logical_const_operand (operands[2], <MODE>mode)
|
||||
&& rs6000_gen_cell_microcode))"
|
||||
|| logical_const_operand (operands[2], <MODE>mode))"
|
||||
"#"
|
||||
"&& reload_completed"
|
||||
[(pc)]
|
||||
|
@ -3495,11 +3476,9 @@
|
|||
(and:GPR (match_dup 1)
|
||||
(match_dup 2)))]
|
||||
"(<MODE>mode == Pmode || UINTVAL (operands[2]) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode
|
||||
&& rs6000_is_valid_2insn_and (operands[2], <MODE>mode)
|
||||
&& !(rs6000_is_valid_and_mask (operands[2], <MODE>mode)
|
||||
|| (logical_const_operand (operands[2], <MODE>mode)
|
||||
&& rs6000_gen_cell_microcode))"
|
||||
|| logical_const_operand (operands[2], <MODE>mode))"
|
||||
"#"
|
||||
"&& reload_completed"
|
||||
[(pc)]
|
||||
|
@ -3592,7 +3571,7 @@
|
|||
(match_operand:GPR 2 "gpc_reg_operand" "r,r")])
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
%q3. %0,%1,%2
|
||||
#"
|
||||
|
@ -3615,7 +3594,7 @@
|
|||
(const_int 0)))
|
||||
(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
|
||||
(match_dup 3))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
%q3. %0,%1,%2
|
||||
#"
|
||||
|
@ -3647,7 +3626,7 @@
|
|||
(match_operand:GPR 1 "gpc_reg_operand" "r,r")])
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
%q3. %0,%1,%2
|
||||
#"
|
||||
|
@ -3670,7 +3649,7 @@
|
|||
(const_int 0)))
|
||||
(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
|
||||
(match_dup 3))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
%q3. %0,%1,%2
|
||||
#"
|
||||
|
@ -3702,7 +3681,7 @@
|
|||
(not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r"))])
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
%q3. %0,%1,%2
|
||||
#"
|
||||
|
@ -3725,7 +3704,7 @@
|
|||
(const_int 0)))
|
||||
(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
|
||||
(match_dup 3))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
%q3. %0,%1,%2
|
||||
#"
|
||||
|
@ -3775,7 +3754,6 @@
|
|||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"(<MODE>mode == Pmode || UINTVAL (operands[3]) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode
|
||||
&& rs6000_is_valid_shift_mask (operands[3], operands[4], <MODE>mode)"
|
||||
{
|
||||
if (which_alternative == 0)
|
||||
|
@ -3808,7 +3786,6 @@
|
|||
(and:GPR (match_dup 4)
|
||||
(match_dup 3)))]
|
||||
"(<MODE>mode == Pmode || UINTVAL (operands[3]) <= 0x7fffffff)
|
||||
&& rs6000_gen_cell_microcode
|
||||
&& rs6000_is_valid_shift_mask (operands[3], operands[4], <MODE>mode)"
|
||||
{
|
||||
if (which_alternative == 0)
|
||||
|
@ -4065,7 +4042,7 @@
|
|||
(match_operand:SI 2 "reg_or_cint_operand" "rn,rn"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
rotl<wd>%I2. %0,%1,%<hH>2
|
||||
#"
|
||||
|
@ -4090,7 +4067,7 @@
|
|||
(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
|
||||
(rotate:GPR (match_dup 1)
|
||||
(match_dup 2)))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
rotl<wd>%I2. %0,%1,%<hH>2
|
||||
#"
|
||||
|
@ -4133,7 +4110,7 @@
|
|||
(match_operand:SI 2 "reg_or_cint_operand" "rn,rn"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
sl<wd>%I2. %0,%1,%<hH>2
|
||||
#"
|
||||
|
@ -4158,7 +4135,7 @@
|
|||
(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
|
||||
(ashift:GPR (match_dup 1)
|
||||
(match_dup 2)))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
sl<wd>%I2. %0,%1,%<hH>2
|
||||
#"
|
||||
|
@ -4322,7 +4299,7 @@
|
|||
(match_operand:SI 2 "reg_or_cint_operand" "rn,rn"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
sr<wd>%I2. %0,%1,%<hH>2
|
||||
#"
|
||||
|
@ -4347,7 +4324,7 @@
|
|||
(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
|
||||
(lshiftrt:GPR (match_dup 1)
|
||||
(match_dup 2)))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
sr<wd>%I2. %0,%1,%<hH>2
|
||||
#"
|
||||
|
@ -4393,7 +4370,7 @@
|
|||
(const_int 0)))
|
||||
(clobber (match_scratch:GPR 0 "=r,r"))
|
||||
(clobber (reg:GPR CA_REGNO))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
sra<wd>%I2. %0,%1,%<hH>2
|
||||
#"
|
||||
|
@ -4420,7 +4397,7 @@
|
|||
(ashiftrt:GPR (match_dup 1)
|
||||
(match_dup 2)))
|
||||
(clobber (reg:GPR CA_REGNO))]
|
||||
"<MODE>mode == Pmode && rs6000_gen_cell_microcode"
|
||||
"<MODE>mode == Pmode"
|
||||
"@
|
||||
sra<wd>%I2. %0,%1,%<hH>2
|
||||
#"
|
||||
|
@ -7061,10 +7038,10 @@
|
|||
(set_attr "length" "4,4,8")])
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:CC 2 "cc_reg_not_micro_cr0_operand" "")
|
||||
(compare:CC (match_operand:P 1 "gpc_reg_operand" "")
|
||||
[(set (match_operand:CC 2 "cc_reg_not_cr0_operand")
|
||||
(compare:CC (match_operand:P 1 "gpc_reg_operand")
|
||||
(const_int 0)))
|
||||
(set (match_operand:P 0 "gpc_reg_operand" "") (match_dup 1))]
|
||||
(set (match_operand:P 0 "gpc_reg_operand") (match_dup 1))]
|
||||
"reload_completed"
|
||||
[(set (match_dup 0) (match_dup 1))
|
||||
(set (match_dup 2)
|
||||
|
@ -9610,8 +9587,7 @@
|
|||
(match_operand:DI 2 "gpc_reg_operand" "r")))))
|
||||
(set (match_operand:DI 0 "gpc_reg_operand" "=b")
|
||||
(plus:DI (match_dup 1) (match_dup 2)))]
|
||||
"TARGET_POWERPC64 && rs6000_gen_cell_microcode
|
||||
&& !avoiding_indexed_address_p (DImode)"
|
||||
"TARGET_POWERPC64 && !avoiding_indexed_address_p (DImode)"
|
||||
"lwaux %3,%0,%2"
|
||||
[(set_attr "type" "load")
|
||||
(set_attr "sign_extend" "yes")
|
||||
|
@ -9692,9 +9668,9 @@
|
|||
(match_operand:SI 2 "reg_or_short_operand" "r,I")))))
|
||||
(set (match_operand:SI 0 "gpc_reg_operand" "=b,b")
|
||||
(plus:SI (match_dup 1) (match_dup 2)))]
|
||||
"TARGET_UPDATE && rs6000_gen_cell_microcode
|
||||
&& (!avoiding_indexed_address_p (SImode)
|
||||
|| !gpc_reg_operand (operands[2], SImode))"
|
||||
"TARGET_UPDATE
|
||||
&& !(avoiding_indexed_address_p (SImode)
|
||||
&& gpc_reg_operand (operands[2], SImode))"
|
||||
"@
|
||||
lhaux %3,%0,%2
|
||||
lhau %3,%2(%0)"
|
||||
|
@ -12300,14 +12276,14 @@
|
|||
(set_attr "length" "8,16")])
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:CC 0 "cc_reg_not_micro_cr0_operand" "")
|
||||
[(set (match_operand:CC 0 "cc_reg_not_cr0_operand")
|
||||
(compare:CC
|
||||
(ashift:SI (match_operator:SI 1 "scc_comparison_operator"
|
||||
[(match_operand 2 "cc_reg_operand" "")
|
||||
[(match_operand 2 "cc_reg_operand")
|
||||
(const_int 0)])
|
||||
(match_operand:SI 3 "const_int_operand" ""))
|
||||
(match_operand:SI 3 "const_int_operand"))
|
||||
(const_int 0)))
|
||||
(set (match_operand:SI 4 "gpc_reg_operand" "")
|
||||
(set (match_operand:SI 4 "gpc_reg_operand")
|
||||
(ashift:SI (match_op_dup 1 [(match_dup 2) (const_int 0)])
|
||||
(match_dup 3)))]
|
||||
"reload_completed"
|
||||
|
|
|
@ -441,13 +441,9 @@ mlongcall
|
|||
Target Report Var(rs6000_default_long_calls) Save
|
||||
Avoid all range limits on call instructions.
|
||||
|
||||
; This option existed in the past, but now is always on.
|
||||
mgen-cell-microcode
|
||||
Target Report Var(rs6000_gen_cell_microcode) Init(-1) Save
|
||||
Generate Cell microcode.
|
||||
|
||||
mwarn-cell-microcode
|
||||
Target Var(rs6000_warn_cell_microcode) Init(0) Warning Save
|
||||
Warn when a Cell microcoded instruction is emitted.
|
||||
Target RejectNegative Undocumented Ignore
|
||||
|
||||
mwarn-altivec-long
|
||||
Target Var(rs6000_warn_altivec_long) Init(1) Save
|
||||
|
|
|
@ -1023,7 +1023,6 @@ See RS/6000 and PowerPC Options.
|
|||
-mspe -mno-spe @gol
|
||||
-mspe=yes -mspe=no @gol
|
||||
-mpaired @gol
|
||||
-mgen-cell-microcode -mwarn-cell-microcode @gol
|
||||
-mvrsave -mno-vrsave @gol
|
||||
-mmulhw -mno-mulhw @gol
|
||||
-mdlmzb -mno-dlmzb @gol
|
||||
|
@ -21281,15 +21280,6 @@ corresponding to the endianness for the target.
|
|||
@opindex mno-vrsave
|
||||
Generate VRSAVE instructions when generating AltiVec code.
|
||||
|
||||
@item -mgen-cell-microcode
|
||||
@opindex mgen-cell-microcode
|
||||
Generate Cell microcode instructions.
|
||||
|
||||
@item -mwarn-cell-microcode
|
||||
@opindex mwarn-cell-microcode
|
||||
Warn when a Cell microcode instruction is emitted. An example
|
||||
of a Cell microcode instruction is a variable shift.
|
||||
|
||||
@item -msecure-plt
|
||||
@opindex msecure-plt
|
||||
Generate code that allows @command{ld} and @command{ld.so}
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2017-05-30 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
* gcc.target/powerpc/shift-dot.c: Delete -mgen-cell-microcode from
|
||||
dg-options.
|
||||
* gfortran.dg/pr80107.f: Delete testcase.
|
||||
|
||||
2017-05-30 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/80833
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* Check that record-form instructions are used. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -mgen-cell-microcode" } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
/* { dg-final { scan-assembler-times {\mrotl[wd]\.} 2 } } */
|
||||
/* { dg-final { scan-assembler-times {\msl[wd]\.} 2 } } */
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
! { dg-do compile { target { powerpc*-*-* } } }
|
||||
! { dg-options "-O0 -mpower9-dform-vector -mno-gen-cell-microcode" }
|
||||
|
||||
integer(kind=2) j, j2, ja
|
||||
call c_c(CMPLX(j),(1.,0.),'CMPLX(integer(2))')
|
||||
end
|
Loading…
Add table
Reference in a new issue