|
GCC Middle and Back End API Reference
|
#include <expmed.h>

Data Fields | |
| struct alg_hash_entry | x_alg_hash [NUM_ALG_HASH_ENTRIES] |
| bool | x_alg_hash_used_p |
| struct expmed_op_cheap | x_sdiv_pow2_cheap |
| struct expmed_op_cheap | x_smod_pow2_cheap |
| int | x_zero_cost [2] |
| struct expmed_op_costs | x_add_cost |
| struct expmed_op_costs | x_neg_cost |
| struct expmed_op_costs | x_shift_cost [MAX_BITS_PER_WORD] |
| struct expmed_op_costs | x_shiftadd_cost [MAX_BITS_PER_WORD] |
| struct expmed_op_costs | x_shiftsub0_cost [MAX_BITS_PER_WORD] |
| struct expmed_op_costs | x_shiftsub1_cost [MAX_BITS_PER_WORD] |
| struct expmed_op_costs | x_mul_cost |
| struct expmed_op_costs | x_sdiv_cost |
| struct expmed_op_costs | x_udiv_cost |
| int | x_mul_widen_cost [2][NUM_MODE_INT] |
| int | x_mul_highpart_cost [2][NUM_MODE_INT] |
| int | x_convert_cost [2][NUM_MODE_IP_INT][NUM_MODE_IP_INT] |
Target-dependent globals.
| struct expmed_op_costs target_expmed::x_add_cost |
Referenced by smod_pow2_cheap().
| struct alg_hash_entry target_expmed::x_alg_hash[NUM_ALG_HASH_ENTRIES] |
Each entry of ALG_HASH caches alg_code for some integer. This is
actually a hash table. If we have a collision, that the older
entry is kicked out.
| bool target_expmed::x_alg_hash_used_p |
True if x_alg_hash might already have been used.
| int target_expmed::x_convert_cost[2][NUM_MODE_IP_INT][NUM_MODE_IP_INT] |
Conversion costs are only defined between two scalar integer modes
of different sizes. The first machine mode is the destination mode,
and the second is the source mode.
| struct expmed_op_costs target_expmed::x_mul_cost |
| int target_expmed::x_mul_highpart_cost[2][NUM_MODE_INT] |
Referenced by sdiv_cost().
| int target_expmed::x_mul_widen_cost[2][NUM_MODE_INT] |
| struct expmed_op_costs target_expmed::x_neg_cost |
| struct expmed_op_costs target_expmed::x_sdiv_cost |
Referenced by shiftsub1_cost_ptr().
| struct expmed_op_cheap target_expmed::x_sdiv_pow2_cheap |
Nonzero means divides or modulus operations are relatively cheap for
powers of two, so don't use branches; emit the operation instead.
Usually, this will mean that the MD file will emit non-branch
sequences.
| struct expmed_op_costs target_expmed::x_shift_cost[MAX_BITS_PER_WORD] |
| struct expmed_op_costs target_expmed::x_shiftadd_cost[MAX_BITS_PER_WORD] |
Referenced by set_neg_cost().
| struct expmed_op_costs target_expmed::x_shiftsub0_cost[MAX_BITS_PER_WORD] |
Referenced by set_shift_cost().
| struct expmed_op_costs target_expmed::x_shiftsub1_cost[MAX_BITS_PER_WORD] |
Referenced by set_shiftadd_cost().
| struct expmed_op_cheap target_expmed::x_smod_pow2_cheap |
Referenced by sdiv_pow2_cheap_ptr().
| struct expmed_op_costs target_expmed::x_udiv_cost |
Referenced by mul_cost_ptr().
| int target_expmed::x_zero_cost[2] |
Cost of various pieces of RTL. Note that some of these are indexed by
shift count and some by mode.