hppa: Improve hppa_rtx_costs for shifts by constants.
This patch provides more accurate rtx_costs estimates for shifts by integer constants (which are cheaper than by a register amount). 2020-09-02 Roger Sayle <roger@nextmovesoftware.com> gcc/ChangeLog * config/pa/pa.c (hppa_rtx_costs) [ASHIFT, ASHIFTRT, LSHIFTRT]: Provide accurate costs for shifts of integer constants.
This commit is contained in:
parent
7047a8bab6
commit
6640a5b9e7
@ -1642,6 +1642,14 @@ hppa_rtx_costs (rtx x, machine_mode mode, int outer_code,
|
||||
else
|
||||
*total = COSTS_N_INSNS (18);
|
||||
}
|
||||
else if (REG_P (XEXP (x, 0)) && CONST_INT_P (XEXP (x, 1)))
|
||||
{
|
||||
if (TARGET_64BIT)
|
||||
*total = COSTS_N_INSNS (2);
|
||||
else
|
||||
*total = COSTS_N_INSNS (1);
|
||||
return true;
|
||||
}
|
||||
else if (TARGET_64BIT)
|
||||
*total = COSTS_N_INSNS (4);
|
||||
else
|
||||
@ -1665,6 +1673,14 @@ hppa_rtx_costs (rtx x, machine_mode mode, int outer_code,
|
||||
else
|
||||
*total = COSTS_N_INSNS (19);
|
||||
}
|
||||
else if (REG_P (XEXP (x, 0)) && CONST_INT_P (XEXP (x, 1)))
|
||||
{
|
||||
if (TARGET_64BIT)
|
||||
*total = COSTS_N_INSNS (2);
|
||||
else
|
||||
*total = COSTS_N_INSNS (1);
|
||||
return true;
|
||||
}
|
||||
else if (TARGET_64BIT)
|
||||
*total = COSTS_N_INSNS (4);
|
||||
else
|
||||
@ -1688,6 +1704,11 @@ hppa_rtx_costs (rtx x, machine_mode mode, int outer_code,
|
||||
else
|
||||
*total = COSTS_N_INSNS (15);
|
||||
}
|
||||
else if (REG_P (XEXP (x, 0)) && CONST_INT_P (XEXP (x, 1)))
|
||||
{
|
||||
*total = COSTS_N_INSNS (1);
|
||||
return true;
|
||||
}
|
||||
else if (TARGET_64BIT)
|
||||
*total = COSTS_N_INSNS (3);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user