GCC Middle and Back End API Reference
|
Data Structures | |
struct | mode_data |
struct | mode_adjust |
Enumerations | |
enum | mode_class { MODE_CLASSES, MAX_MODE_CLASS, MODE_CLASSES, MAX_MODE_CLASS } |
enum | requirement { SET, UNSET, OPTIONAL } |
Functions | |
static enum mode_class | complex_class () |
static enum mode_class | vector_class () |
static struct mode_data * | find_mode () |
static struct mode_data * | new_mode (enum mode_class cl, const char *name, const char *file, unsigned int line) |
static hashval_t | hash_mode () |
static int | eq_mode () |
static void | new_adjust (const char *name, struct mode_adjust **category, const char *catname, const char *adjustment, enum mode_class required_class_from, enum mode_class required_class_to, const char *file, unsigned int line) |
static void | validate_mode (struct mode_data *m, enum requirement r_precision, enum requirement r_bytesize, enum requirement r_component, enum requirement r_ncomponents, enum requirement r_format) |
static void | complete_mode () |
static void | complete_all_modes () |
static void | make_complex_modes (enum mode_class cl, const char *file, unsigned int line) |
static void | make_vector_modes (enum mode_class cl, unsigned int width, const char *file, unsigned int line) |
static void | make_special_mode (enum mode_class cl, const char *name, const char *file, unsigned int line) |
static void | make_int_mode (const char *name, unsigned int precision, unsigned int bytesize, const char *file, unsigned int line) |
static void | make_fixed_point_mode (enum mode_class cl, const char *name, unsigned int bytesize, unsigned int ibit, unsigned int fbit, const char *file, unsigned int line) |
static void | make_float_mode (const char *name, unsigned int precision, unsigned int bytesize, const char *format, const char *file, unsigned int line) |
static void | make_decimal_float_mode (const char *name, unsigned int precision, unsigned int bytesize, const char *format, const char *file, unsigned int line) |
static void | reset_float_format (const char *name, const char *format, const char *file, unsigned int line) |
static void | make_partial_integer_mode (const char *base, const char *name, unsigned int precision, const char *file, unsigned int line) |
static void | make_vector_mode (enum mode_class bclass, const char *base, unsigned int ncomponents, const char *file, unsigned int line) |
static void | create_modes () |
static int | cmp_modes () |
static void | calc_wider_mode () |
static void | emit_max_int () |
static void | emit_insn_modes_h () |
static void | emit_insn_modes_c_header () |
static void | emit_min_insn_modes_c_header () |
static void | emit_mode_name () |
static void | emit_mode_class () |
static void | emit_mode_precision () |
static void | emit_mode_size () |
static void | emit_mode_nunits () |
static void | emit_mode_wider () |
static void | emit_mode_mask () |
static void | emit_mode_inner () |
static void | emit_mode_base_align () |
static void | emit_class_narrowest_mode () |
static void | emit_real_format_for_mode () |
static void | emit_mode_adjustments () |
static void | emit_mode_ibit () |
static void | emit_mode_fbit () |
static void | emit_insn_modes_c () |
static void | emit_min_insn_modes_c () |
int | main () |
Variables | |
static const char *const | mode_class_names [MAX_MODE_CLASS] |
static struct mode_data * | modes [MAX_MODE_CLASS] |
static unsigned int | n_modes [MAX_MODE_CLASS] |
static struct mode_data * | void_mode |
static struct mode_data | blank_mode |
static htab_t | modes_by_name |
static struct mode_adjust * | adj_bytesize |
static struct mode_adjust * | adj_alignment |
static struct mode_adjust * | adj_format |
static struct mode_adjust * | adj_ibit |
static struct mode_adjust * | adj_fbit |
enum mode_class |
enum requirement |
|
static |
References cmp_modes(), mode_data::component, MAX_MODE_CLASS, n_modes, mode_data::next, void_mode, and mode_data::wider.
Referenced by main().
|
static |
Processing.
Sort a list of modes into the order needed for the WIDER field: major sort by precision, minor sort by component precision. For instance: QI < HI < SI < DI < TI V4QI < V2HI < V8QI < V4HI < V2SI. If the precision is not set, sort by the bytesize. A mode with precision set gets sorted before a mode without precision set, if they have the same bytesize; this is the right thing because the precision must always be smaller than the bytesize * BITS_PER_UNIT. We don't have to do anything special to get this done -- an unset precision shows up as (unsigned int)-1, i.e. UINT_MAX.
References mode_data::bytesize, mode_data::component, mode_data::counter, and mode_data::precision.
Referenced by calc_wider_mode().
|
static |
References mode_data::cl, and complete_mode().
Referenced by main().
|
static |
Given a partially-filled-out mode structure, figure out what we can and fill the rest of it in; die if it isn't enough.
References mode_data::alignment, mode_data::bytesize, mode_data::cl, mode_data::component, mode_data::contained, error(), mode_data::file, mode_data::line, MAX_MODE_CLASS, mode_data::name, mode_data::ncomponents, mode_data::next_cont, OPTIONAL, mode_data::precision, SET, UNSET, and validate_mode().
Referenced by complete_all_modes().
|
static |
Mode class operations.
References error(), and mode_class_names.
Referenced by make_complex_modes().
|
static |
Referenced by main().
|
static |
References MAX_MODE_CLASS, mode_class_names, mode_data::name, mode_data::next, and mode_data::precision.
Referenced by emit_insn_modes_c(), and emit_min_insn_modes_c().
|
static |
References emit_class_narrowest_mode(), emit_insn_modes_c_header(), emit_mode_adjustments(), emit_mode_base_align(), emit_mode_class(), emit_mode_fbit(), emit_mode_ibit(), emit_mode_inner(), emit_mode_mask(), emit_mode_name(), emit_mode_nunits(), emit_mode_precision(), emit_mode_size(), emit_mode_wider(), and emit_real_format_for_mode().
Referenced by main().
|
static |
Referenced by emit_insn_modes_c().
|
static |
References emit_max_int(), mode_data::file, first, last, mode_data::line, MAX_MODE_CLASS, mode_class_names, mode_data::name, mode_data::next, mode_data::precision, and trim_filename().
Referenced by main().
|
static |
Compute the max bitsize of some of the classes of integers. It may be that there are needs for the other integer classes, and this code is easy to extend.
References mode_data::bytesize, MAX_MODE_CLASS, and mode_data::next.
Referenced by emit_insn_modes_h().
|
static |
References emit_class_narrowest_mode(), emit_min_insn_modes_c_header(), emit_mode_class(), emit_mode_name(), and emit_mode_wider().
Referenced by main().
|
static |
Referenced by emit_min_insn_modes_c().
|
static |
|
static |
References mode_data::alignment, and mode_data::name.
Referenced by emit_insn_modes_c().
|
static |
References mode_data::cl, mode_class_names, and mode_data::name.
Referenced by emit_insn_modes_c(), and emit_min_insn_modes_c().
|
static |
Emit fbit for all modes.
References mode_data::fbit, and mode_data::name.
Referenced by emit_insn_modes_c().
|
static |
Emit ibit for all modes.
References mode_data::ibit, and mode_data::name.
Referenced by emit_insn_modes_c().
|
static |
References mode_data::component, and mode_data::name.
Referenced by emit_insn_modes_c().
|
static |
References mode_data::bytesize, mode_data::name, and mode_data::precision.
Referenced by emit_insn_modes_c().
|
static |
References mode_data::name.
Referenced by emit_insn_modes_c(), and emit_min_insn_modes_c().
|
static |
References mode_data::name, and mode_data::ncomponents.
Referenced by emit_insn_modes_c().
|
static |
References mode_data::bytesize, mode_data::name, and mode_data::precision.
Referenced by emit_insn_modes_c().
|
static |
References mode_data::bytesize, and mode_data::name.
Referenced by emit_insn_modes_c().
|
static |
References mode_data::bytesize, mode_data::cl, mode_data::component, mode_data::name, mode_data::ncomponents, mode_data::precision, void_mode, and mode_data::wider.
Referenced by emit_insn_modes_c(), and emit_min_insn_modes_c().
|
static |
References mode_data::format, mode_data::name, and mode_data::next.
Referenced by emit_insn_modes_c().
|
static |
References mode_data::name.
Referenced by main().
|
staticread |
Utility routines.
References modes_by_name, and mode_data::name.
Referenced by make_partial_integer_mode(), make_vector_mode(), new_adjust(), new_mode(), and reset_float_format().
|
static |
References mode_data::name.
Referenced by main().
int main | ( | ) |
Master control.
References calc_wider_mode(), complete_all_modes(), create_modes(), emit_insn_modes_c(), emit_insn_modes_h(), emit_min_insn_modes_c(), eq_mode(), error(), free(), gen_header, hash_mode(), have_error, modes_by_name, and progname.
|
static |
|
static |
References mode_data::bytesize, mode_data::format, new_mode(), and mode_data::precision.
|
static |
Create a fixed-point mode by setting CL, NAME, BYTESIZE, IBIT, FBIT, FILE, and LINE.
References mode_data::bytesize, mode_data::fbit, mode_data::ibit, and new_mode().
|
static |
References mode_data::bytesize, mode_data::format, new_mode(), and mode_data::precision.
|
static |
References mode_data::bytesize, new_mode(), and mode_data::precision.
|
static |
References mode_data::cl, mode_data::component, error(), find_mode(), new_mode(), and mode_data::precision.
|
static |
References new_mode().
|
static |
References mode_data::cl, mode_data::component, error(), find_mode(), mode_class_names, mode_data::ncomponents, new_mode(), snprintf(), and vector_class().
|
static |
|
static |
|
staticread |
References mode_data::cl, count, mode_data::counter, error(), mode_data::file, find_mode(), mode_data::line, memcpy(), modes_by_name, n_modes, mode_data::name, mode_data::next, and trim_filename().
Referenced by cse_insn(), extract_bit_field_1(), find_comparisons_in_bb(), find_shift_sequence(), make_complex_modes(), make_decimal_float_mode(), make_fixed_point_mode(), make_float_mode(), make_int_mode(), make_partial_integer_mode(), make_special_mode(), make_vector_mode(), make_vector_modes(), maybe_mode_change(), maybe_select_cc_mode(), reload_adjust_reg_for_icode(), and try_combine().
|
static |
References mode_data::cl, error(), find_mode(), and mode_data::format.
|
static |
Referenced by complete_mode().
|
static |
References error(), and mode_class_names.
Referenced by make_vector_mode(), and make_vector_modes().
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Referenced by complex_class(), emit_class_narrowest_mode(), emit_insn_modes_h(), emit_mode_class(), make_vector_mode(), new_adjust(), and vector_class().
|
static |
Referenced by apply_iterators(), cse_cc_succs(), initialize_iterators(), read_rtx(), read_rtx_code(), and record_operand_costs().
|
static |
Referenced by find_mode(), main(), and new_mode().
|
static |
Referenced by calc_wider_mode(), and new_mode().
|
static |
Referenced by calc_wider_mode(), and emit_mode_wider().