Commit 5e839bc8 by David Edelsohn

Add comment to expand_mult max_cost change.

From-SVN: r104379
parent 579ad6bf
...@@ -3022,7 +3022,7 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target, ...@@ -3022,7 +3022,7 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
&& (unsignedp || !flag_trapv)) && (unsignedp || !flag_trapv))
{ {
HOST_WIDE_INT coeff = 0; HOST_WIDE_INT coeff = 0;
rtx reg = gen_raw_REG (mode, LAST_VIRTUAL_REGISTER + 1); rtx fake_reg = gen_raw_REG (mode, LAST_VIRTUAL_REGISTER + 1);
/* synth_mult does an `unsigned int' multiply. As long as the mode is /* synth_mult does an `unsigned int' multiply. As long as the mode is
less than or equal in size to `unsigned int' this doesn't matter. less than or equal in size to `unsigned int' this doesn't matter.
...@@ -3040,8 +3040,10 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target, ...@@ -3040,8 +3040,10 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
&& GET_MODE_BITSIZE (mode) > HOST_BITS_PER_WIDE_INT) && GET_MODE_BITSIZE (mode) > HOST_BITS_PER_WIDE_INT)
{ {
/* Its safe to use -INTVAL (op1) even for INT_MIN, as the /* Its safe to use -INTVAL (op1) even for INT_MIN, as the
result is interpreted as an unsigned coefficient. */ result is interpreted as an unsigned coefficient.
max_cost = rtx_cost (gen_rtx_MULT (mode, reg, op1), SET) Exclude cost of op0 from max_cost to match the cost
calculation of the synth_mult. */
max_cost = rtx_cost (gen_rtx_MULT (mode, fake_reg, op1), SET)
- neg_cost[mode]; - neg_cost[mode];
if (max_cost > 0 if (max_cost > 0
&& choose_mult_variant (mode, -INTVAL (op1), &algorithm, && choose_mult_variant (mode, -INTVAL (op1), &algorithm,
...@@ -3084,7 +3086,9 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target, ...@@ -3084,7 +3086,9 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
build_int_cst (NULL_TREE, floor_log2 (coeff)), build_int_cst (NULL_TREE, floor_log2 (coeff)),
target, unsignedp); target, unsignedp);
max_cost = rtx_cost (gen_rtx_MULT (mode, reg, op1), SET); /* Exclude cost of op0 from max_cost to match the cost
calculation of the synth_mult. */
max_cost = rtx_cost (gen_rtx_MULT (mode, fake_reg, op1), SET);
if (choose_mult_variant (mode, coeff, &algorithm, &variant, if (choose_mult_variant (mode, coeff, &algorithm, &variant,
max_cost)) max_cost))
return expand_mult_const (mode, op0, coeff, target, return expand_mult_const (mode, op0, coeff, target,
......
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