+2004-07-12 Roger Sayle <roger@eyesopen.com>
+
+ * config/rs6000/rs6000.c (rs6000_rtx_costs): Indicate that the
+ rs6000 doesn't have shift-and-add or shift-and-sub instructions
+ by returning the cost of a multiplication plus an addition.
+
2004-07-12 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/14107
: rs6000_cost->fp;
else if (mode == SFmode)
*total = rs6000_cost->fp;
+ else if (GET_CODE (XEXP (x, 0)) == MULT)
+ {
+ /* The rs6000 doesn't have shift-and-add instructions. */
+ rs6000_rtx_costs (XEXP (x, 0), MULT, PLUS, total);
+ *total += COSTS_N_INSNS (1);
+ }
else
*total = ((GET_CODE (XEXP (x, 1)) == CONST_INT
&& ((unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1))
: rs6000_cost->fp;
else if (mode == SFmode)
*total = rs6000_cost->fp;
+ else if (GET_CODE (XEXP (x, 0)) == MULT)
+ {
+ /* The rs6000 doesn't have shift-and-sub instructions. */
+ rs6000_rtx_costs (XEXP (x, 0), MULT, MINUS, total);
+ *total += COSTS_N_INSNS (1);
+ }
else
*total = COSTS_N_INSNS (1);
return true;