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.