Commit 69e7672a by Kito Cheng Committed by Chung-Ju Wu

[NDS32] Adjust register move cost for graywolf cpu.

gcc/
	* config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
	into consideration.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r260412
parent 19c93809
2018-05-20 Kito Cheng <kito.cheng@gmail.com>
Chung-Ju Wu <jasonwucj@gmail.com>
* config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
into consideration.
2018-05-20 Kito Cheng <kito.cheng@gmail.com>
Chung-Ju Wu <jasonwucj@gmail.com>
* config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
(insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
(nds32_rtx_costs_impl): Simplify.
......
......@@ -3005,13 +3005,33 @@ nds32_canonicalize_comparison (int *code,
/* Describing Relative Costs of Operations. */
static int
nds32_register_move_cost (machine_mode mode ATTRIBUTE_UNUSED,
nds32_register_move_cost (machine_mode mode,
reg_class_t from,
reg_class_t to)
{
/* In garywolf cpu, FPR to GPR is chaper than other cpu. */
if (TARGET_PIPELINE_GRAYWOLF)
{
if (GET_MODE_SIZE (mode) == 8)
{
/* DPR to GPR. */
if (from == FP_REGS && to != FP_REGS)
return 3;
/* GPR to DPR. */
if (from != FP_REGS && to == FP_REGS)
return 2;
}
else
{
if ((from == FP_REGS && to != FP_REGS)
|| (from != FP_REGS && to == FP_REGS))
return 2;
}
}
if ((from == FP_REGS && to != FP_REGS)
|| (from != FP_REGS && to == FP_REGS))
return 9;
return 3;
else if (from == HIGH_REGS || to == HIGH_REGS)
return optimize_size ? 6 : 2;
else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment