GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
class | md_rtx_info |
struct | optab_def |
struct | optab_pattern |
struct | c_test |
struct | pred_data |
struct | pattern_stats |
Macros | |
#define | OPTAB_CL(name, pat, c, b, l) |
#define | OPTAB_CX(name, pat) |
#define | OPTAB_CD(name, pat) |
#define | OPTAB_NL(name, pat, c, b, s, l) |
#define | OPTAB_NC(name, pat, c) |
#define | OPTAB_NX(name, pat) |
#define | OPTAB_VL(name, pat, c, b, s, l) |
#define | OPTAB_VC(name, pat, c) |
#define | OPTAB_VX(name, pat) |
#define | OPTAB_DC(name, pat, c) |
#define | OPTAB_D(name, pat) |
#define | FOR_ALL_PREDICATES(p) |
Typedefs | |
typedef enum optab_tag | optab |
Enumerations | |
enum | optab_tag { unknown_optab , NUM_OPTABS } |
Functions | |
unsigned int | get_register_filter_id (const char *) |
rtx | add_implicit_parallel (rtvec) |
rtx_reader * | init_rtx_reader_args_cb (int, const char **, bool(*)(const char *)) |
rtx_reader * | init_rtx_reader_args (int, const char **) |
int | count_patterns () |
bool | read_md_rtx (md_rtx_info *) |
unsigned int | get_num_insn_codes () |
const char * | get_c_test (rtx) |
int | maybe_eval_c_test (const char *) |
void | add_c_test (const char *, int) |
struct pred_data * | lookup_predicate (const char *) |
void | add_predicate_code (struct pred_data *, enum rtx_code) |
void | add_predicate (struct pred_data *) |
void | get_pattern_stats (struct pattern_stats *ranges, rtvec vec) |
void | compute_test_codes (rtx, file_location, char *) |
file_location | get_file_location (rtx) |
const char * | get_emit_function (rtx) |
bool | needs_barrier_p (rtx) |
bool | find_optab (optab_pattern *, const char *) |
FILE * | choose_output (const vec< FILE * > &, unsigned &) |
Variables | |
struct obstack * | rtl_obstack |
optab_def | optabs [] |
unsigned int | num_optabs |
vec< const char * > | register_filters |
int | insn_elision |
struct pred_data * | first_predicate |
hash_set< rtx > | compact_syntax |
#define FOR_ALL_PREDICATES | ( | p | ) |
Referenced by write_insn_preds_c(), and write_tm_preds_h().
#define OPTAB_CD | ( | name, | |
pat ) |
#define OPTAB_CL | ( | name, | |
pat, | |||
c, | |||
b, | |||
l ) |
#define OPTAB_CX | ( | name, | |
pat ) |
#define OPTAB_D | ( | name, | |
pat ) |
#define OPTAB_DC | ( | name, | |
pat, | |||
c ) |
#define OPTAB_NC | ( | name, | |
pat, | |||
c ) |
#define OPTAB_NL | ( | name, | |
pat, | |||
c, | |||
b, | |||
s, | |||
l ) |
#define OPTAB_NX | ( | name, | |
pat ) |
#define OPTAB_VC | ( | name, | |
pat, | |||
c ) |
#define OPTAB_VL | ( | name, | |
pat, | |||
c, | |||
b, | |||
s, | |||
l ) |
#define OPTAB_VX | ( | name, | |
pat ) |
enum optab_tag |
Enumerates all optabs.
|
extern |
Add an entry to the table of conditions. Used by genconditions and by read-rtl.cc.
Record the C test expression EXPR in the condition_table, with value VAL. Duplicates clobber previous entries.
References condition_table, c_test::expr, expr, and c_test::value.
Referenced by main().
Return the rtx pattern specified by the list of rtxes in a define_insn or define_split.
References GET_NUM_ELEM, RTVEC_ELT, rtx_alloc(), and XVEC.
Referenced by gen_insn(), gen_rewrite_sequence(), main(), and process_one_cond_exec().
|
extern |
References error(), last_predicate, pred_data::name, pred_data::next, and predicate_table.
Referenced by init_predicate_table(), and process_define_predicate().
Record that predicate PRED can accept CODE.
References pred_data::allows_non_const, pred_data::allows_non_lvalue, pred_data::codes, GET_RTX_CLASS, pred_data::num_codes, RTX_CONST_OBJ, and pred_data::singleton.
Referenced by init_predicate_table(), and process_define_predicate().
|
extern |
References gcc_unreachable, i, and NULL.
|
extern |
Recursively calculate the set of rtx codes accepted by the predicate expression EXP, writing the result to CODES. LOC is the .md file location of the directive containing EXP.
References pred_data::codes, compute_test_codes(), did_you_mean_codes, error_at(), exp(), GET_CODE, GET_RTX_NAME, I, i, queue_elem::loc, lookup_predicate(), message_at(), N, NUM_RTX_CODE, scan_comma_elt(), TRISTATE_AND, TRISTATE_NOT, TRISTATE_OR, XEXP, XSTR, and Y.
Referenced by add_constraint(), compute_test_codes(), and process_define_predicate().
|
extern |
Count the number of patterns in all queues and return the count.
References count, queue_elem::data, define_attr_queue, define_insn_queue, define_pred_queue, get_c_test(), insn_elision, maybe_eval_c_test(), queue_elem::next, and other_queue.
|
extern |
Return true if NAME is the name of an optab, describing it in P if so.
References optab_pattern::m1, optab_pattern::m2, match_pattern(), optab_pattern::name, pred_data::name, optab_def::op, optab_pattern::op, optabs, and optab_pattern::sort_num.
Referenced by gen_expand(), and gen_insn().
|
extern |
Return the C test that says whether a definition rtx can be used, or "" if it can be used unconditionally.
Return the C test that says whether definition rtx DEF can be used, or "" if it can be used unconditionally.
References GET_CODE, and XSTR.
Referenced by count_patterns(), main(), match_pattern_1(), read_md_rtx(), and validate_pattern().
|
extern |
Return the emit_* function that should be used for pattern X, or NULL if we can't pick a particular type at compile time and should instead fall back to "emit".
References classify_insn(), gcc_unreachable, and NULL.
Referenced by gen_emit_seq().
|
extern |
Return the file location of DEFINE_* rtx X, which was previously returned by read_md_rtx.
References gcc_assert, and rtx_locs.
Referenced by def_target_insn().
|
extern |
Return the number of possible INSN_CODEs. Only meaningful once the whole file has been processed.
References insn_sequence_num.
Referenced by main().
|
extern |
Make STATS describe the operands that appear in instruction pattern PATTERN.
References GET_NUM_ELEM, get_pattern_stats_1(), i, MAX, and RTVEC_ELT.
Referenced by def_target_insn(), gen_expand(), gen_expand(), gen_insn(), gen_insn(), gen_peephole(), gen_split(), handle_overloaded_gen(), and handle_overloaded_gen().
|
extern |
Return the unique identifier for filter condition FILTER. Identifiers are assigned automatically when the define_register_constraint is parsed.
References gcc_assert, and register_filter_map.
Referenced by preprocess_constraints(), write_get_register_filter(), and write_get_register_filter_id().
|
extern |
Programs that don't have their own options can use this entry point instead.
References init_rtx_reader_args_cb().
|
extern |
The entry point for initializing the reader.
References check_define_attr_duplicates(), cmp_c_test(), condition_table, define_attr_queue, define_cond_exec_queue, define_subst_queue, gen_mnemonic_attr(), hash_c_test(), have_error, init_predicate_table(), insn_sequence_num, NULL, peephole2_sequence_num, process_define_cond_exec(), process_define_subst(), md_reader::read_md_files(), rtl_obstack, and split_sequence_num.
Referenced by init_rtx_reader_args(), and main().
|
extern |
References pred_data::name, and predicate_table.
Referenced by compute_test_codes(), mark_mode_tests(), match_pattern_2(), output_operand_data(), special_predicate_operand_p(), subst_pattern_match(), and validate_pattern().
|
extern |
If the C test passed as the argument can be evaluated at compile time, return its truth value; else return -1. The test must have appeared somewhere in the machine description when genconditions was run.
Given a string representing a C test expression, look it up in the condition_table and report whether or not its value is known at compile time. Returns a tristate: 1 for known true, 0 for known false, -1 for unknown.
References condition_table, c_test::expr, expr, and c_test::value.
Referenced by count_patterns(), def_target_insn(), gen_insn(), gen_insn(), gen_proto(), match_pattern_1(), and read_md_rtx().
Return true if we must emit a barrier after pattern X.
References GET_CODE, SET, SET_DEST, and SET_SRC.
Referenced by gen_emit_seq().
|
extern |
Try to read a single rtx from the file. Return true on success, describing it in *INFO.
References queue_elem::data, md_rtx_info::def, define_attr_queue, define_insn_queue, define_pred_queue, free(), get_c_test(), GET_CODE, md_rtx_info::index, insn_elision, insn_sequence_num, md_rtx_info::loc, queue_elem::loc, maybe_eval_c_test(), queue_elem::next, NULL, other_queue, peephole2_sequence_num, queue, record_insn_name(), rtx_locs, split_sequence_num, and XSTR.
List of entries which are part of the new syntax.
Referenced by convert_syntax(), and gen_insn().
|
extern |
|
extern |
Set this to 0 to disable automatic elision of insn patterns which can never be used in this configuration. See genconditions.cc. Must be set before calling init_md_reader.
Referenced by count_patterns(), main(), and read_md_rtx().
|
extern |
The number of entries in optabs[].
Referenced by main().
|
extern |
An array of all optabs. Note that the same optab can appear more than once, with a different pattern.
Referenced by find_optab(), and main().
|
extern |
All register filter conditions, indexed by identifier.
Referenced by alternative_register_filters(), main(), process_define_register_constraint(), write_get_register_filter(), write_get_register_filter_id(), write_init_reg_class_start_regs(), and write_tm_preds_h().
|
extern |