GCC Middle and Back End API Reference
target_expmed Struct Reference

#include <expmed.h>

Collaboration diagram for target_expmed:

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]

Detailed Description

Target-dependent globals.


Field Documentation

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.


The documentation for this struct was generated from the following file: