Commit 5322d07e by Nathan Froyd

expmed.h (alg_hash, [...]): Delete macro definitions and re-purpose as inline functions.

	* expmed.h (alg_hash, alg_hash_used_p, sdiv_pow2_cheap,
	smod_pow2_cheap, zero_cost, add_cost, neg_cost, shift_cost)
	shiftadd_cost, shiftsub0_cost, shiftsub1_cost, mul_cost,
	sdiv_cost, udiv_cost, mul_widen_cost, mul_highpart_cost): Delete
	macro definitions and re-purpose as inline functions.
	(alg_hash_entry_ptr, set_alg_hash_used_p, sdiv_pow2_cheap_ptr,
	set_sdiv_pow2_cheap, smod_pow2_cheap_ptr, set_smod_pow2_cheap,
	zero_cost_ptr, set_zero_cost, add_cost_ptr, set_add_cost,
	neg_cost_ptr, set_neg_cost, shift_cost_ptr, set_shift_cost,
	shiftadd_cost_ptr, set_shiftadd_cost, shiftsub0_cost_ptr,
	set_shiftsub0_cost, shiftsub1_cost_ptr, set_shiftsub1_cost,
	mul_cost_ptr, set_mul_cost, sdiv_cost_ptr, set_sdiv_cost,
	udiv_cost_ptr, set_udiv_cost, mul_widen_cost_ptr,
	set_mul_widen_cost, mul_highpart_cost_ptr, set_mul_highpart_cost):
	New functions.
	(convert_cost_ptr): New function, split out from...
	(set_convert_cost, convert_cost): ...here.
	* expmed.c, tree-ssa-loop-ivopts.c: Update for new functions.
	* gimple-ssa-strength-reduction.c: Likewise.

From-SVN: r189919
parent ccbc132f
2012-07-27 Nathan Froyd <froydnj@gcc.gnu.org>
* expmed.h (alg_hash, alg_hash_used_p, sdiv_pow2_cheap,
smod_pow2_cheap, zero_cost, add_cost, neg_cost, shift_cost)
shiftadd_cost, shiftsub0_cost, shiftsub1_cost, mul_cost,
sdiv_cost, udiv_cost, mul_widen_cost, mul_highpart_cost): Delete
macro definitions and re-purpose as inline functions.
(alg_hash_entry_ptr, set_alg_hash_used_p, sdiv_pow2_cheap_ptr,
set_sdiv_pow2_cheap, smod_pow2_cheap_ptr, set_smod_pow2_cheap,
zero_cost_ptr, set_zero_cost, add_cost_ptr, set_add_cost,
neg_cost_ptr, set_neg_cost, shift_cost_ptr, set_shift_cost,
shiftadd_cost_ptr, set_shiftadd_cost, shiftsub0_cost_ptr,
set_shiftsub0_cost, shiftsub1_cost_ptr, set_shiftsub1_cost,
mul_cost_ptr, set_mul_cost, sdiv_cost_ptr, set_sdiv_cost,
udiv_cost_ptr, set_udiv_cost, mul_widen_cost_ptr,
set_mul_widen_cost, mul_highpart_cost_ptr, set_mul_highpart_cost):
New functions.
(convert_cost_ptr): New function, split out from...
(set_convert_cost, convert_cost): ...here.
* expmed.c, tree-ssa-loop-ivopts.c: Update for new functions.
* gimple-ssa-strength-reduction.c: Likewise.
2012-07-20 Ryan Mansfield <rmansfield@qnx.com> 2012-07-20 Ryan Mansfield <rmansfield@qnx.com>
* gcc.c (main): Move GCC_DRIVER_HOST_INITIALIZATION after * gcc.c (main): Move GCC_DRIVER_HOST_INITIALIZATION after
...@@ -6,7 +28,7 @@ ...@@ -6,7 +28,7 @@
2012-07-27 Oleg Endo <olegendo@gcc.gnu.org> 2012-07-27 Oleg Endo <olegendo@gcc.gnu.org>
PR target/54089 PR target/54089
* config/sh/sh.c (shiftcosts): Remove case where first operand * config/sh/sh.c (shiftcosts): Remove case where first operand
is a const_int. Move COSTS_N_INSNS usage into caller ... is a const_int. Move COSTS_N_INSNS usage into caller ...
(sh_rtx_costs) ... here. Return false when shiftcosts cannot be (sh_rtx_costs) ... here. Return false when shiftcosts cannot be
calculated instead of MAX_COST. calculated instead of MAX_COST.
......
...@@ -344,16 +344,16 @@ stmt_cost (gimple gs, bool speed) ...@@ -344,16 +344,16 @@ stmt_cost (gimple gs, bool speed)
return mult_by_coeff_cost (TREE_INT_CST_LOW (rhs2), lhs_mode, speed); return mult_by_coeff_cost (TREE_INT_CST_LOW (rhs2), lhs_mode, speed);
gcc_assert (TREE_CODE (rhs1) != INTEGER_CST); gcc_assert (TREE_CODE (rhs1) != INTEGER_CST);
return mul_cost[speed][lhs_mode]; return mul_cost (speed, lhs_mode);
case PLUS_EXPR: case PLUS_EXPR:
case POINTER_PLUS_EXPR: case POINTER_PLUS_EXPR:
case MINUS_EXPR: case MINUS_EXPR:
rhs2 = gimple_assign_rhs2 (gs); rhs2 = gimple_assign_rhs2 (gs);
return add_cost[speed][lhs_mode]; return add_cost (speed, lhs_mode);
case NEGATE_EXPR: case NEGATE_EXPR:
return neg_cost[speed][lhs_mode]; return neg_cost (speed, lhs_mode);
case NOP_EXPR: case NOP_EXPR:
return convert_cost (lhs_mode, TYPE_MODE (TREE_TYPE (rhs1)), speed); return convert_cost (lhs_mode, TYPE_MODE (TREE_TYPE (rhs1)), speed);
......
...@@ -3308,7 +3308,7 @@ get_address_cost (bool symbol_present, bool var_present, ...@@ -3308,7 +3308,7 @@ get_address_cost (bool symbol_present, bool var_present,
If VAR_PRESENT is true, try whether the mode with If VAR_PRESENT is true, try whether the mode with
SYMBOL_PRESENT = false is cheaper even with cost of addition, and SYMBOL_PRESENT = false is cheaper even with cost of addition, and
if this is the case, use it. */ if this is the case, use it. */
add_c = add_cost[speed][address_mode]; add_c = add_cost (speed, address_mode);
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
{ {
var_p = i & 1; var_p = i & 1;
...@@ -3392,7 +3392,7 @@ get_address_cost (bool symbol_present, bool var_present, ...@@ -3392,7 +3392,7 @@ get_address_cost (bool symbol_present, bool var_present,
cost += mult_by_coeff_cost (ratio, address_mode, speed); cost += mult_by_coeff_cost (ratio, address_mode, speed);
if (s_offset && !offset_p && !symbol_present) if (s_offset && !offset_p && !symbol_present)
cost += add_cost[speed][address_mode]; cost += add_cost (speed, address_mode);
if (may_autoinc) if (may_autoinc)
*may_autoinc = autoinc; *may_autoinc = autoinc;
...@@ -3422,10 +3422,10 @@ get_shiftadd_cost (tree expr, enum machine_mode mode, comp_cost cost0, ...@@ -3422,10 +3422,10 @@ get_shiftadd_cost (tree expr, enum machine_mode mode, comp_cost cost0,
return false; return false;
sa_cost = (TREE_CODE (expr) != MINUS_EXPR sa_cost = (TREE_CODE (expr) != MINUS_EXPR
? shiftadd_cost[speed][mode][m] ? shiftadd_cost (speed, mode, m)
: (mult == op1 : (mult == op1
? shiftsub1_cost[speed][mode][m] ? shiftsub1_cost (speed, mode, m)
: shiftsub0_cost[speed][mode][m])); : shiftsub0_cost (speed, mode, m)));
res = new_cost (sa_cost, 0); res = new_cost (sa_cost, 0);
res = add_costs (res, mult == op1 ? cost0 : cost1); res = add_costs (res, mult == op1 ? cost0 : cost1);
...@@ -3559,7 +3559,7 @@ force_expr_to_var_cost (tree expr, bool speed) ...@@ -3559,7 +3559,7 @@ force_expr_to_var_cost (tree expr, bool speed)
case PLUS_EXPR: case PLUS_EXPR:
case MINUS_EXPR: case MINUS_EXPR:
case NEGATE_EXPR: case NEGATE_EXPR:
cost = new_cost (add_cost[speed][mode], 0); cost = new_cost (add_cost (speed, mode), 0);
if (TREE_CODE (expr) != NEGATE_EXPR) if (TREE_CODE (expr) != NEGATE_EXPR)
{ {
tree mult = NULL_TREE; tree mult = NULL_TREE;
...@@ -3571,8 +3571,8 @@ force_expr_to_var_cost (tree expr, bool speed) ...@@ -3571,8 +3571,8 @@ force_expr_to_var_cost (tree expr, bool speed)
if (mult != NULL_TREE if (mult != NULL_TREE
&& cst_and_fits_in_hwi (TREE_OPERAND (mult, 1)) && cst_and_fits_in_hwi (TREE_OPERAND (mult, 1))
&& get_shiftadd_cost (expr, mode, cost0, cost1, mult, speed, && get_shiftadd_cost (expr, mode, cost0, cost1, mult,
&sa_cost)) speed, &sa_cost))
return sa_cost; return sa_cost;
} }
break; break;
...@@ -4060,7 +4060,7 @@ get_computation_cost_at (struct ivopts_data *data, ...@@ -4060,7 +4060,7 @@ get_computation_cost_at (struct ivopts_data *data,
&symbol_present, &var_present, &symbol_present, &var_present,
&offset, depends_on)); &offset, depends_on));
cost.cost /= avg_loop_niter (data->current_loop); cost.cost /= avg_loop_niter (data->current_loop);
cost.cost += add_cost[data->speed][TYPE_MODE (ctype)]; cost.cost += add_cost (data->speed, TYPE_MODE (ctype));
} }
if (inv_expr_id) if (inv_expr_id)
...@@ -4101,14 +4101,14 @@ get_computation_cost_at (struct ivopts_data *data, ...@@ -4101,14 +4101,14 @@ get_computation_cost_at (struct ivopts_data *data,
are added once to the variable, if present. */ are added once to the variable, if present. */
if (var_present && (symbol_present || offset)) if (var_present && (symbol_present || offset))
cost.cost += adjust_setup_cost (data, cost.cost += adjust_setup_cost (data,
add_cost[speed][TYPE_MODE (ctype)]); add_cost (speed, TYPE_MODE (ctype)));
/* Having offset does not affect runtime cost in case it is added to /* Having offset does not affect runtime cost in case it is added to
symbol, but it increases complexity. */ symbol, but it increases complexity. */
if (offset) if (offset)
cost.complexity++; cost.complexity++;
cost.cost += add_cost[speed][TYPE_MODE (ctype)]; cost.cost += add_cost (speed, TYPE_MODE (ctype));
aratio = ratio > 0 ? ratio : -ratio; aratio = ratio > 0 ? ratio : -ratio;
if (aratio != 1) if (aratio != 1)
...@@ -4958,7 +4958,7 @@ determine_iv_cost (struct ivopts_data *data, struct iv_cand *cand) ...@@ -4958,7 +4958,7 @@ determine_iv_cost (struct ivopts_data *data, struct iv_cand *cand)
or a const set. */ or a const set. */
if (cost_base.cost == 0) if (cost_base.cost == 0)
cost_base.cost = COSTS_N_INSNS (1); cost_base.cost = COSTS_N_INSNS (1);
cost_step = add_cost[data->speed][TYPE_MODE (TREE_TYPE (base))]; cost_step = add_cost (data->speed, TYPE_MODE (TREE_TYPE (base)));
cost = cost_step + adjust_setup_cost (data, cost_base.cost); cost = cost_step + adjust_setup_cost (data, cost_base.cost);
......
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