osprey/kg++fe/gnu/genautomata.c File Reference

#include "hconfig.h"
#include "system.h"
#include "rtl.h"
#include "obstack.h"
#include "errors.h"
#include <math.h>
#include "hashtab.h"
#include "varray.h"
#include "genattrtab.h"

Include dependency graph for genautomata.c:

Go to the source code of this file.

Data Types

type  vla_ptr_t
type  ticker
type  unit_decl
type  bypass_decl
type  automaton_decl
type  unit_rel_decl
type  reserv_decl
type  insn_reserv_decl
type  decl
type  unit_regexp
type  reserv_regexp
type  nothing_regexp
type  sequence_regexp
type  repeat_regexp
type  allof_regexp
type  oneof_regexp
type  regexp
type  description
type  unit_set_el
type  state
type  arc
type  alt_state
type  ainsn
type  automaton
type  automata_list_el
type  state_ainsn_table

Defines

#define CHAR_BIT   8
#define VLA_PTR_CREATE(vla, allocated_length, name)
#define VLA_PTR_DELETE(vla)   VARRAY_FREE ((vla).varray)
#define VLA_PTR_BEGIN(vla)   ((void *) &VARRAY_GENERIC_PTR ((vla).varray, 0))
#define VLA_PTR_LAST(vla)
#define VLA_PTR_NULLIFY(vla)   ((vla).length = 0)
#define VLA_PTR_SHORTEN(vla, n)   ((vla).length -= (n))
#define VLA_PTR_EXPAND(vla, n)
#define VLA_PTR_ADD(vla, ptr)
#define VLA_PTR_LENGTH(vla)   ((vla).length)
#define VLA_PTR(vla, n)   VARRAY_GENERIC_PTR ((vla).varray, n)
#define VLA_HWINT_CREATE(vla, allocated_length, name)
#define VLA_HWINT_DELETE(vla)   VARRAY_FREE ((vla).varray)
#define VLA_HWINT_BEGIN(vla)   (&VARRAY_WIDE_INT ((vla).varray, 0))
#define VLA_HWINT_NULLIFY(vla)   ((vla).length = 0)
#define VLA_HWINT_EXPAND(vla, n)
#define VLA_HWINT_ADD(vla, ptr)
#define VLA_HWINT_LENGTH(vla)   ((vla).length)
#define VLA_HWINT(vla, n)   VARRAY_WIDE_INT ((vla).varray, n)
#define NO_MINIMIZATION_OPTION   "-no-minimization"
#define TIME_OPTION   "-time"
#define V_OPTION   "-v"
#define W_OPTION   "-w"
#define NDFA_OPTION   "-ndfa"
#define UNDEFINED_LONGEST_PATH_LENGTH   -1
#define DECL_UNIT(d)   (&(d)->decl.unit)
#define DECL_BYPASS(d)   (&(d)->decl.bypass)
#define DECL_AUTOMATON(d)   (&(d)->decl.automaton)
#define DECL_EXCL(d)   (&(d)->decl.excl)
#define DECL_PRESENCE(d)   (&(d)->decl.presence)
#define DECL_ABSENCE(d)   (&(d)->decl.absence)
#define DECL_RESERV(d)   (&(d)->decl.reserv)
#define DECL_INSN_RESERV(d)   (&(d)->decl.insn_reserv)
#define REGEXP_UNIT(r)   (&(r)->regexp.unit)
#define REGEXP_RESERV(r)   (&(r)->regexp.reserv)
#define REGEXP_SEQUENCE(r)   (&(r)->regexp.sequence)
#define REGEXP_REPEAT(r)   (&(r)->regexp.repeat)
#define REGEXP_ALLOF(r)   (&(r)->regexp.allof)
#define REGEXP_ONEOF(r)   (&(r)->regexp.oneof)
#define NOTHING_NAME   "nothing"
#define SET_BIT(bitstring, bitno)   (((char *) (bitstring)) [(bitno) / CHAR_BIT] |= 1 << (bitno) % CHAR_BIT)
#define TEST_BIT(bitstring, bitno)   (((char *) (bitstring)) [(bitno) / CHAR_BIT] >> (bitno) % CHAR_BIT & 1)
#define MAX_FLOATING_POINT_VALUE_FOR_AUTOMATON_BOUND   1.0E37
#define ON_THE_PATH   -2
#define MAX_DFA_ISSUE_RATE_VAR_NAME   "max_dfa_issue_rate"
#define CHIP_NAME   "DFA_chip"
#define ADVANCE_CYCLE_VALUE_NAME   "DFA__ADVANCE_CYCLE"
#define AUTOMATON_STATE_ALTS_MACRO_NAME   "AUTOMATON_STATE_ALTS"
#define CPU_UNITS_QUERY_MACRO_NAME   "CPU_UNITS_QUERY"
#define INTERNAL_MIN_ISSUE_DELAY_FUNC_NAME   "internal_min_issue_delay"
#define STATE_TYPE_NAME   "state_t"
#define INTERNAL_TRANSITION_FUNC_NAME   "internal_state_transition"
#define INTERNAL_STATE_ALTS_FUNC_NAME   "internal_state_alts"
#define INTERNAL_RESET_FUNC_NAME   "internal_reset"
#define INTERNAL_DEAD_LOCK_FUNC_NAME   "internal_state_dead_lock_p"
#define INTERNAL_INSN_LATENCY_FUNC_NAME   "internal_insn_latency"
#define DFA_INSN_CODES_VARIABLE_NAME   "dfa_insn_codes"
#define DFA_INSN_CODES_LENGTH_VARIABLE_NAME   "dfa_insn_codes_length"
#define SIZE_FUNC_NAME   "state_size"
#define TRANSITION_FUNC_NAME   "state_transition"
#define STATE_ALTS_FUNC_NAME   "state_alts"
#define MIN_ISSUE_DELAY_FUNC_NAME   "min_issue_delay"
#define MIN_INSN_CONFLICT_DELAY_FUNC_NAME   "min_insn_conflict_delay"
#define DEAD_LOCK_FUNC_NAME   "state_dead_lock_p"
#define RESET_FUNC_NAME   "state_reset"
#define INSN_LATENCY_FUNC_NAME   "insn_latency"
#define PRINT_RESERVATION_FUNC_NAME   "print_reservation"
#define GET_CPU_UNIT_CODE_FUNC_NAME   "get_cpu_unit_code"
#define CPU_UNIT_RESERVATION_P_FUNC_NAME   "cpu_unit_reservation_p"
#define DFA_START_FUNC_NAME   "dfa_start"
#define DFA_FINISH_FUNC_NAME   "dfa_finish"
#define STATE_NAME   "state"
#define INSN_PARAMETER_NAME   "insn"
#define INSN2_PARAMETER_NAME   "insn2"
#define CHIP_PARAMETER_NAME   "chip"
#define FILE_PARAMETER_NAME   "f"
#define CPU_UNIT_NAME_PARAMETER_NAME   "cpu_unit_name"
#define CPU_CODE_PARAMETER_NAME   "cpu_unit_code"
#define INTERNAL_INSN_CODE_NAME   "insn_code"
#define INTERNAL_INSN2_CODE_NAME   "insn2_code"
#define TEMPORARY_VARIABLE_NAME   "temp"
#define I_VARIABLE_NAME   "i"
#define RESULT_VARIABLE_NAME   "res"
#define INSN_ALTS_FUNC_NAME   "insn_alts"
#define INTERNAL_DFA_INSN_CODE_FUNC_NAME   "internal_dfa_insn_code"
#define DFA_INSN_CODE_FUNC_NAME   "dfa_insn_code"
#define INSN_DEFAULT_LATENCY_FUNC_NAME   "insn_default_latency"
#define BYPASS_P_FUNC_NAME   "bypass_p"
#define NAME_CODE_STRUCT_NAME   "name_code"
#define NAME_CODE_TABLE_NAME   "name_code_table"
#define NAME_MEMBER_NAME   "name"
#define CODE_MEMBER_NAME   "code"
#define CMP_VARIABLE_NAME   "cmp"
#define LOW_VARIABLE_NAME   "l"
#define MIDDLE_VARIABLE_NAME   "m"
#define HIGH_VARIABLE_NAME   "h"
#define MAX_LINE_LENGTH   70
#define STANDARD_OUTPUT_DESCRIPTION_FILE_SUFFIX   ".dfa"

Typedefs

typedef int pos_t
typedef unsigned HOST_WIDE_INT set_el_t
typedef set_el_treserv_sets_t
typedef vla_ptr_t vla_hwint_t
typedef struct ticker ticker_t
typedef HOST_WIDE_INT vect_el_t
typedef struct unit_declunit_decl_t
typedef struct decldecl_t
typedef struct regexpregexp_t
typedef struct unit_set_elunit_set_el_t
typedef struct alt_statealt_state_t
typedef struct statestate_t
typedef struct arcarc_t
typedef struct ainsnainsn_t
typedef struct automatonautomaton_t
typedef struct automata_list_elautomata_list_el_t
typedef struct state_ainsn_tablestate_ainsn_table_t

Enumerations

enum  regexp_mode {
  rm_unit, rm_reserv, rm_nothing, rm_sequence,
  rm_repeat, rm_allof, rm_oneof, rm_unit,
  rm_reserv, rm_nothing, rm_sequence, rm_repeat,
  rm_allof, rm_oneof, rm_unit, rm_reserv,
  rm_nothing, rm_sequence, rm_repeat, rm_allof,
  rm_oneof, rm_unit, rm_reserv, rm_nothing,
  rm_sequence, rm_repeat, rm_allof, rm_oneof
}

Functions/Subroutines

static void *create_node PARAMS ((size_t))
static void *copy_node PARAMS ((const void *, size_t))
static char *check_name PARAMS ((char *, pos_t))
static char *next_sep_el PARAMS ((char **, int, int))
static int n_sep_els PARAMS ((char *, int, int))
static char **get_str_vect PARAMS ((char *, int *, int, int))
static regexp_t gen_regexp_el PARAMS ((char *))
static unsigned string_hash PARAMS ((const char *))
static hashval_t
automaton_decl_hash 
PARAMS ((const void *))
static int automaton_decl_eq_p PARAMS ((const void *, const void *))
static decl_t insert_automaton_decl PARAMS ((decl_t))
static void
initiate_automaton_decl_table 
PARAMS ((void))
static void add_excls PARAMS ((unit_set_el_t, unit_set_el_t, pos_t))
static unit_set_el_t
process_presence_absence 
PARAMS ((char **, int, pos_t, int))
static void add_presence_absence PARAMS ((unit_set_el_t, unit_set_el_t, pos_t, int))
static struct bypass_decl
*find_bypass 
PARAMS ((struct bypass_decl *, struct insn_reserv_decl *))
static regexp_t process_regexp PARAMS ((regexp_t))
static int loop_in_regexp PARAMS ((regexp_t, decl_t))
static int process_regexp_cycles PARAMS ((regexp_t, int))
static void ticker_off PARAMS ((ticker_t *))
static int active_time PARAMS ((ticker_t))
static void print_active_time PARAMS ((FILE *, ticker_t))
static void free_alt_state PARAMS ((alt_state_t))
static int alt_state_cmp PARAMS ((const void *alt_state_ptr_1, const void *alt_state_ptr_2))
static int alt_states_eq PARAMS ((alt_state_t, alt_state_t))
static unsigned
reserv_sets_hash_value 
PARAMS ((reserv_sets_t))
static int reserv_sets_cmp PARAMS ((reserv_sets_t, reserv_sets_t))
static void set_unit_reserv PARAMS ((reserv_sets_t, int, int))
static voidcreate_node (size_t size)
static voidcopy_node (void *from, size_t size) const
static char * check_name (char *name, pos)
static char * next_sep_el (char **pstr, int sep, int par_flag)
static int n_sep_els (char *s, int sep, int par_flag)
static char ** get_str_vect (char *str, int *els_num, int sep, int par_flag)
void gen_cpu_unit (rtx def)
void gen_query_cpu_unit (rtx def)
void gen_bypass (rtx def)
void gen_excl_set (rtx def)
void gen_presence_set (rtx def)
void gen_absence_set (rtx def)
void gen_automaton (rtx def)
void gen_automata_option (rtx def)
static regexp_t gen_regexp_el (char *str)
static regexp_t gen_regexp_repeat (char *str)
static regexp_t gen_regexp_allof (char *str)
static regexp_t gen_regexp_oneof (char *str)
static regexp_t gen_regexp_sequence (char *str)
static regexp_t gen_regexp (char *str)
void gen_reserv (rtx def)
void gen_insn_reserv (rtx def)
static unsigned string_hash (char *string) const
static hashval_t automaton_decl_hash (void *automaton_decl) const
static int automaton_decl_eq_p (void *automaton_decl_1, const void *automaton_decl_2) const
static decl_t insert_automaton_decl (decl_t automaton_decl)
static decl_t find_automaton_decl (char *name)
static void initiate_automaton_decl_table ()
static void finish_automaton_decl_table ()
static hashval_t insn_decl_hash (void *insn_decl) const
static int insn_decl_eq_p (void *insn_decl_1, const void *insn_decl_2) const
static decl_t insert_insn_decl (decl_t insn_decl)
static decl_t find_insn_decl (char *name)
static void initiate_insn_decl_table ()
static void finish_insn_decl_table ()
static hashval_t decl_hash (void *decl) const
static int decl_eq_p (void *decl_1, const void *decl_2) const
static decl_t insert_decl (decl_t decl)
static decl_t find_decl (char *name)
static void initiate_decl_table ()
static void finish_decl_table ()
static unit_set_el_t process_excls (char **names, int num, excl_pos)
static void add_excls (unit_set_el_t dest_list, unit_set_el_t source_list, excl_pos)
static unit_set_el_t process_presence_absence (char **names, int num, req_pos, int presence_p)
static void add_presence_absence (unit_set_el_t dest_list, unit_set_el_t source_list, req_pos, int presence_p)
static struct bypass_declfind_bypass (struct bypass_decl *bypass_list, struct insn_reserv_decl *in_insn_reserv)
static void process_decls ()
static void check_automaton_usage ()
static regexp_t process_regexp (regexp_t regexp)
static void process_regexp_decls ()
static void check_usage ()
static int loop_in_regexp (regexp_t regexp, decl_t start_decl)
static void check_loops_in_regexps ()
static int process_regexp_cycles (regexp_t regexp, int start_cycle)
static void evaluate_max_reserv_cycles ()
static void check_all_description ()
static ticker_t create_ticker ()
static void ticker_off (ticker_t *ticker)
static void ticker_on (ticker_t *ticker)
static int active_time (ticker_t ticker)
static void print_active_time (FILE *f, ticker_t ticker)
static void add_advance_cycle_insn_decl ()
static alt_state_t get_free_alt_state ()
static void free_alt_state (alt_state_t alt_state)
static void free_alt_states (alt_state_t alt_states_list)
static int alt_state_cmp (void *alt_state_ptr_1, const void *alt_state_ptr_2) const
static alt_state_t uniq_sort_alt_states (alt_state_t alt_states_list)
static int alt_states_eq (alt_state_t alt_states_1, alt_state_t alt_states_2)
static void initiate_alt_states ()
static void finish_alt_states ()
static reserv_sets_t alloc_empty_reserv_sets ()
static unsigned reserv_sets_hash_value (reserv_sets_t reservs)
static int reserv_sets_cmp (reserv_sets_t reservs_1, reserv_sets_t reservs_2)
static int reserv_sets_eq (reserv_sets_t reservs_1, reserv_sets_t reservs_2)
static void set_unit_reserv (reserv_sets_t reservs, int cycle_num, int unit_num)
static int test_unit_reserv (reserv_sets_t reservs, int cycle_num, int unit_num)
static int it_is_empty_reserv_sets (reserv_sets_t operand)
static int reserv_sets_are_intersected (reserv_sets_t operand_1, reserv_sets_t operand_2)
static void reserv_sets_shift (reserv_sets_t result, reserv_sets_t operand)
static void reserv_sets_or (reserv_sets_t result, reserv_sets_t operand_1, reserv_sets_t operand_2)
static void reserv_sets_and (reserv_sets_t result, reserv_sets_t operand_1, reserv_sets_t operand_2)
static void output_cycle_reservs (FILE *f, reserv_sets_t reservs, int start_cycle, int repetition_num)
static void output_reserv_sets (FILE *f, reserv_sets_t reservs)
static state_t get_free_state (int with_reservs, automaton_t automaton)
static void free_state (state_t state)
static hashval_t state_hash (void *state) const
static int state_eq_p (void *state_1, const void *state_2) const
static state_t insert_state (state_t state)
static void set_state_reserv (state_t state, int cycle_num, int unit_num)
static int intersected_state_reservs_p (state_t state1, state_t state2)
static state_t states_union (state_t state1, state_t state2)
static state_t state_shift (state_t state)
static void initiate_states ()
static void finish_states ()
static void free_arc (arc_t arc)
static void remove_arc (state_t from_state, arc_t arc)
static arc_t find_arc (state_t from_state, state_t to_state, ainsn_t insn)
static arc_t add_arc (state_t from_state, state_t to_state, ainsn_t ainsn, int state_alts)
static arc_t first_out_arc (state_t state)
static arc_t next_out_arc (arc_t arc)
static void initiate_arcs ()
static void finish_arcs ()
static automata_list_el_t get_free_automata_list_el ()
static void free_automata_list_el (automata_list_el_t automata_list_el)
static void free_automata_list (automata_list_el_t automata_list)
static hashval_t automata_list_hash (void *automata_list) const
static int automata_list_eq_p (void *automata_list_1, const void *automata_list_2) const
static void initiate_automata_lists ()
static void automata_list_start ()
static void automata_list_add (automaton_t automaton)
static automata_list_el_t automata_list_finish ()
static void finish_automata_lists ()
static void initiate_excl_sets ()
static reserv_sets_t get_excl_set (reserv_sets_t in_set)
static void initiate_presence_absence_sets ()
static reserv_sets_t get_presence_absence_set (reserv_sets_t in_set, int presence_p)
static regexp_t copy_insn_regexp (regexp_t regexp)
static regexp_t transform_1 (regexp_t regexp)
static regexp_t transform_2 (regexp_t regexp)
static regexp_t transform_3 (regexp_t regexp)
static regexp_t regexp_transform_func (regexp_t regexp, func)
static regexp_t transform_regexp (regexp_t regexp)
static void transform_insn_regexps ()
static void process_unit_to_form_the_same_automaton_unit_lists (regexp_t unit, regexp_t regexp, int cycle)
static void form_the_same_automaton_unit_lists_from_regexp (regexp_t regexp)
static void form_the_same_automaton_unit_lists ()
static void check_unit_distributions_to_automata ()
static int process_seq_for_forming_states (regexp_t regexp, automaton_t automaton, int curr_cycle)
static void finish_forming_alt_state (alt_state_t alt_state, automaton)
static void process_alts_for_forming_states (regexp_t regexp, automaton_t automaton, int inside_oneof_p)
static void create_alt_states (automaton_t automaton)
static void form_ainsn_with_same_reservs (automaton_t automaton)
static void make_automaton (automaton_t automaton)
static void form_arcs_marked_by_insn (state_t state)
static void create_composed_state (state_t original_state, arc_t arcs_marked_by_insn, vla_ptr_t *state_stack)
static void NDFA_to_DFA (automaton_t automaton)
static void pass_state_graph (state_t start_state, applied_func)
static void pass_states (automaton_t automaton, applied_func)
static void initiate_pass_states ()
static void add_achieved_state (state_t state)
static int set_out_arc_insns_equiv_num (state_t state, int odd_iteration_flag)
static void clear_arc_insns_equiv_num (state_t state)
static void copy_equiv_class (vla_ptr_t *to, const vla_ptr_t *from)
static int state_is_differed (state_t state, int original_state_out_arcs_num, int odd_iteration_flag)
static state_t init_equiv_class (state_t *states, int states_num)
static int partition_equiv_class (state_t *equiv_class_ptr, int odd_iteration_flag, vla_ptr_t *next_iteration_classes, int *new_equiv_class_num_ptr)
static void evaluate_equiv_classes (automaton_t automaton, vla_ptr_t *equiv_classes)
static void merge_states (automaton_t automaton, vla_ptr_t *equiv_classes)
static void set_new_cycle_flags (state_t state)
static void minimize_DFA (automaton_t automaton)
static void incr_states_and_arcs_nums (state_t state)
static void count_states_and_arcs (automaton_t automaton, int *states_num, int *arcs_num)
static void build_automaton (automaton_t automaton)
static void set_order_state_num (state_t state)
static void enumerate_states (automaton_t automaton)
static ainsn_t insert_ainsn_into_equiv_class (ainsn_t ainsn, ainsn_t cyclic_equiv_class_insn_list)
static void delete_ainsn_from_equiv_class (ainsn_t equiv_class_insn)
static void process_insn_equiv_class (ainsn_t ainsn, arc_t *insn_arcs_array)
static void process_state_for_insn_equiv_partition (state_t state)
static void set_insn_equiv_classes (automaton_t automaton)
static double estimate_one_automaton_bound ()
static int compare_max_occ_cycle_nums (void *unit_decl_1, const void *unit_decl_2) const
static void units_to_automata_heuristic_distr ()
static ainsn_t create_ainsns ()
static void units_to_automata_distr ()
static void create_automata ()
static void form_regexp (regexp_t regexp)
static const char * regexp_representation (regexp_t regexp)
static void finish_regexp_representation ()
static void output_range_type (FILE *f, long int min_range_value, long int max_range_value)
static int longest_path_length (state_t state)
static void process_state_longest_path_length (state_t state)
static void output_dfa_max_issue_rate ()
static void output_vect (vect_el_t *vect, int vect_length)
static void output_chip_member_name (FILE *f, automaton_t automaton)
static void output_temp_chip_member_name (FILE *f, automaton_t automaton)
static void output_translate_vect_name (FILE *f, automaton_t automaton)
static void output_trans_full_vect_name (FILE *f, automaton_t automaton)
static void output_trans_comb_vect_name (FILE *f, automaton_t automaton)
static void output_trans_check_vect_name (FILE *f, automaton_t automaton)
static void output_trans_base_vect_name (FILE *f, automaton_t automaton)
static void output_state_alts_full_vect_name (FILE *f, automaton_t automaton)
static void output_state_alts_comb_vect_name (FILE *f, automaton_t automaton)
static void output_state_alts_check_vect_name (FILE *f, automaton_t automaton)
static void output_state_alts_base_vect_name (FILE *f, automaton_t automaton)
static void output_min_issue_delay_vect_name (FILE *f, automaton_t automaton)
static void output_dead_lock_vect_name (FILE *f, automaton_t automaton)
static void output_reserved_units_table_name (FILE *f, automaton_t automaton)
static void output_state_member_type (FILE *f, automaton_t automaton)
static void output_chip_definitions ()
static void output_translate_vect (automaton_t automaton)
static int comb_vect_p (state_ainsn_table_t tab)
static state_ainsn_table_t create_state_ainsn_table (automaton_t automaton)
static void output_state_ainsn_table (state_ainsn_table_t tab, char *table_name, void *output_full_vect_name_func, void *output_comb_vect_name_func, void *output_check_vect_name_func, void *output_base_vect_name_func)
static void add_vect (state_ainsn_table_t tab, int vect_num, vect_el_t *vect, int vect_length)
static int out_state_arcs_num (state_t state)
static int compare_transition_els_num (void *state_ptr_1, const void *state_ptr_2) const
static void add_vect_el (vla_hwint_t *vect, ainsn_t ainsn, int el_value)
static void add_states_vect_el (state_t state)
static void output_trans_table (automaton_t automaton)
static void output_state_alts_table (automaton_t automaton)
static int min_issue_delay_pass_states (state_t state, ainsn_t ainsn)
static int min_issue_delay (state_t state, ainsn_t ainsn)
static void initiate_min_issue_delay_pass_states ()
static void output_min_issue_delay_table (automaton_t automaton)
static void output_dead_lock_vect (automaton_t automaton)
static void output_reserved_units_table (automaton_t automaton)
static void output_tables ()
static void output_max_insn_queue_index_def ()
static void output_insn_code_cases (output_automata_list_code)
static void output_automata_list_min_issue_delay_code (automata_list_el_t automata_list)
static void output_internal_min_issue_delay_func ()
static void output_automata_list_transition_code (automata_list_el_t automata_list)
static void output_internal_trans_func ()
static void output_internal_insn_code_evaluation (char *insn_name, const char *insn_code_name, int code) const
static void output_dfa_insn_code_func ()
static void output_trans_func ()
static void output_automata_list_state_alts_code (automata_list_el_t automata_list)
static void output_internal_state_alts_func ()
static void output_state_alts_func ()
static void output_min_issue_delay_func ()
static void output_internal_dead_lock_func ()
static void output_dead_lock_func ()
static void output_internal_reset_func ()
static void output_size_func ()
static void output_reset_func ()
static void output_min_insn_conflict_delay_func ()
static void output_internal_insn_latency_func ()
static void output_insn_latency_func ()
static void output_print_reservation_func ()
static int units_cmp (void *unit1, void *unit2) const
static void output_get_cpu_unit_code_func ()
static void output_cpu_unit_reservation_p ()
static void output_dfa_start_func ()
static void output_dfa_finish_func ()
static void output_regexp (regexp_t regexp)
static void output_unit_set_el_list (unit_set_el_t list)
static void output_description ()
static void output_automaton_name (FILE *f, automaton_t automaton)
static void output_automaton_units (automaton_t automaton)
static void add_state_reservs (state_t state)
static void output_state_arcs (state_t state)
static int state_reservs_cmp (void *reservs_ptr_1, const void *reservs_ptr_2) const
static void remove_state_duplicate_reservs ()
static void output_state (state_t state)
static void output_automaton_descriptions ()
static void output_statistics (FILE *f)
static void output_time_statistics (FILE *f)
static void generate ()
static void make_insn_alts_attr ()
static void make_internal_dfa_insn_code_attr ()
static void make_default_insn_latency_attr ()
static void make_bypass_attr ()
static const char * file_name_suffix (char *file_name) const
static const char * base_file_name (char *file_name) const
void initiate_automaton_gen (int argc, char **argv)
static void check_automata_insn_issues ()
static void add_automaton_state (state_t state)
static void form_important_insn_automata_lists ()
void expand_automata ()
void write_automata ()

Variables

static vla_ptr_t decls
static char * reserv_str
static htab_t automaton_decl_table
static struct decl work_automaton_decl
static htab_t insn_decl_table
static struct decl work_insn_decl
static htab_t decl_table
static struct decl work_decl
static int curr_loop_pass_num
static int automata_num
static ticker_t transform_time
static ticker_t NDFA_time
static ticker_t NDFA_to_DFA_time
static ticker_t minimize_time
static ticker_t equiv_time
static ticker_t automaton_generation_time
static ticker_t output_time
static ticker_t check_time
static ticker_t generation_time
static ticker_t all_time
static decl_t advance_cycle_insn_decl
static alt_state_t first_free_alt_state
static int allocated_alt_states_num = 0
static int max_cycles_num
static int els_in_cycle_reserv
static int els_in_reservs
static vla_ptr_t units_container
static unit_decl_tunits_array
static reserv_sets_t empty_reserv
static htab_t state_table
static vla_ptr_t free_states
static int curr_unique_state_num
static int allocated_states_num = 0
static arc_t first_free_arc
static int allocated_arcs_num = 0
static automata_list_el_t first_free_automata_list_el
static automata_list_el_t current_automata_list
static htab_t automata_list_table
static reserv_sets_t excl_set
static reserv_sets_tunit_excl_set_table
static reserv_sets_t presence_set
static reserv_sets_t absence_set
static reserv_sets_tunit_presence_set_table
static reserv_sets_tunit_absence_set_table
static int regexp_transformed_p
static unit_decl_tthe_same_automaton_lists
static state_t state_being_formed
static alt_state_t alt_state_being_formed
static ainsn_t curr_ainsn
static int curr_state_graph_pass_num
static vla_ptr_t all_achieved_states
static int curr_counted_states_num
static int curr_counted_arcs_num
static int curr_state_order_num
static int max_dfa_issue_rate
static int undefined_vect_el_value
static vla_ptr_t output_states_vect
static int curr_state_pass_num
static int locked_states_num
static vla_ptr_t state_reservs
static vla_ptr_t automaton_states


Define Documentation

#define ADVANCE_CYCLE_VALUE_NAME   "DFA__ADVANCE_CYCLE"

#define AUTOMATON_STATE_ALTS_MACRO_NAME   "AUTOMATON_STATE_ALTS"

Definition at line 7118 of file genautomata.c.

Referenced by output_tables(), and write_automata().

#define BYPASS_P_FUNC_NAME   "bypass_p"

Definition at line 7219 of file genautomata.c.

Referenced by make_bypass_attr().

#define CHAR_BIT   8

Definition at line 114 of file genautomata.c.

#define CHIP_NAME   "DFA_chip"

#define CHIP_PARAMETER_NAME   "chip"

#define CMP_VARIABLE_NAME   "cmp"

Definition at line 8661 of file genautomata.c.

Referenced by output_get_cpu_unit_code_func().

#define CODE_MEMBER_NAME   "code"

Definition at line 8657 of file genautomata.c.

Referenced by output_get_cpu_unit_code_func().

#define CPU_CODE_PARAMETER_NAME   "cpu_unit_code"

Definition at line 7185 of file genautomata.c.

Referenced by output_cpu_unit_reservation_p().

#define CPU_UNIT_NAME_PARAMETER_NAME   "cpu_unit_name"

Definition at line 7183 of file genautomata.c.

Referenced by output_get_cpu_unit_code_func().

#define CPU_UNIT_RESERVATION_P_FUNC_NAME   "cpu_unit_reservation_p"

Definition at line 7166 of file genautomata.c.

Referenced by output_cpu_unit_reservation_p().

#define CPU_UNITS_QUERY_MACRO_NAME   "CPU_UNITS_QUERY"

Definition at line 7121 of file genautomata.c.

Referenced by output_reserved_units_table(), output_tables(), and write_automata().

#define DEAD_LOCK_FUNC_NAME   "state_dead_lock_p"

Definition at line 7156 of file genautomata.c.

Referenced by output_dead_lock_func().

#define DECL_ABSENCE ( d   )     (&(d)->decl.absence)

Definition at line 1441 of file genautomata.c.

Referenced by gen_absence_set(), gen_presence_absence_set(), and process_decls().

#define DECL_AUTOMATON ( d   )     (&(d)->decl.automaton)

#define DECL_BYPASS ( d   )     (&(d)->decl.bypass)

#define DECL_EXCL ( d   )     (&(d)->decl.excl)

Definition at line 1439 of file genautomata.c.

Referenced by gen_excl_set(), and process_decls().

#define DECL_INSN_RESERV ( d   )     (&(d)->decl.insn_reserv)

#define DECL_PRESENCE ( d   )     (&(d)->decl.presence)

Definition at line 1440 of file genautomata.c.

Referenced by gen_presence_absence_set(), gen_presence_set(), and process_decls().

#define DECL_RESERV ( d   )     (&(d)->decl.reserv)

#define DECL_UNIT ( d   )     (&(d)->decl.unit)

#define DFA_FINISH_FUNC_NAME   "dfa_finish"

Definition at line 7170 of file genautomata.c.

Referenced by output_dfa_finish_func().

#define DFA_INSN_CODE_FUNC_NAME   "dfa_insn_code"

#define DFA_INSN_CODES_LENGTH_VARIABLE_NAME   "dfa_insn_codes_length"

#define DFA_INSN_CODES_VARIABLE_NAME   "dfa_insn_codes"

#define DFA_START_FUNC_NAME   "dfa_start"

Definition at line 7168 of file genautomata.c.

Referenced by output_dfa_start_func().

#define FILE_PARAMETER_NAME   "f"

Definition at line 7181 of file genautomata.c.

Referenced by output_print_reservation_func().

#define GET_CPU_UNIT_CODE_FUNC_NAME   "get_cpu_unit_code"

Definition at line 7164 of file genautomata.c.

Referenced by output_get_cpu_unit_code_func().

#define HIGH_VARIABLE_NAME   "h"

Definition at line 8664 of file genautomata.c.

Referenced by output_get_cpu_unit_code_func().

#define I_VARIABLE_NAME   "i"

Definition at line 7196 of file genautomata.c.

Referenced by output_dfa_clean_insn_cache_func(), and output_dfa_start_func().

#define INSN2_PARAMETER_NAME   "insn2"

#define INSN_ALTS_FUNC_NAME   "insn_alts"

Definition at line 7203 of file genautomata.c.

Referenced by main(), and make_insn_alts_attr().

#define INSN_DEFAULT_LATENCY_FUNC_NAME   "insn_default_latency"

Definition at line 7215 of file genautomata.c.

Referenced by make_default_insn_latency_attr().

#define INSN_LATENCY_FUNC_NAME   "insn_latency"

Definition at line 7160 of file genautomata.c.

Referenced by output_insn_latency_func().

#define INSN_PARAMETER_NAME   "insn"

#define INTERNAL_DEAD_LOCK_FUNC_NAME   "internal_state_dead_lock_p"

Definition at line 7135 of file genautomata.c.

Referenced by output_dead_lock_func(), and output_internal_dead_lock_func().

#define INTERNAL_DFA_INSN_CODE_FUNC_NAME   "internal_dfa_insn_code"

Definition at line 7207 of file genautomata.c.

Referenced by make_internal_dfa_insn_code_attr(), and output_dfa_insn_code_func().

#define INTERNAL_INSN2_CODE_NAME   "insn2_code"

#define INTERNAL_INSN_CODE_NAME   "insn_code"

#define INTERNAL_INSN_LATENCY_FUNC_NAME   "internal_insn_latency"

Definition at line 7137 of file genautomata.c.

Referenced by output_insn_latency_func(), and output_internal_insn_latency_func().

#define INTERNAL_MIN_ISSUE_DELAY_FUNC_NAME   "internal_min_issue_delay"

#define INTERNAL_RESET_FUNC_NAME   "internal_reset"

#define INTERNAL_STATE_ALTS_FUNC_NAME   "internal_state_alts"

Definition at line 7131 of file genautomata.c.

Referenced by output_internal_state_alts_func(), and output_state_alts_func().

#define INTERNAL_TRANSITION_FUNC_NAME   "internal_state_transition"

#define LOW_VARIABLE_NAME   "l"

Definition at line 8662 of file genautomata.c.

Referenced by output_get_cpu_unit_code_func().

#define MAX_DFA_ISSUE_RATE_VAR_NAME   "max_dfa_issue_rate"

Definition at line 6871 of file genautomata.c.

Referenced by output_dfa_max_issue_rate().

#define MAX_FLOATING_POINT_VALUE_FOR_AUTOMATON_BOUND   1.0E37

Definition at line 6426 of file genautomata.c.

Referenced by estimate_one_automaton_bound().

#define MAX_LINE_LENGTH   70

Definition at line 8882 of file genautomata.c.

Referenced by output_automaton_units(), and output_state_arcs().

#define MIDDLE_VARIABLE_NAME   "m"

Definition at line 8663 of file genautomata.c.

Referenced by output_get_cpu_unit_code_func().

#define MIN_INSN_CONFLICT_DELAY_FUNC_NAME   "min_insn_conflict_delay"

Definition at line 7154 of file genautomata.c.

Referenced by output_min_insn_conflict_delay_func().

#define MIN_ISSUE_DELAY_FUNC_NAME   "min_issue_delay"

Definition at line 7152 of file genautomata.c.

Referenced by output_min_issue_delay_func().

#define NAME_CODE_STRUCT_NAME   "name_code"

Definition at line 8650 of file genautomata.c.

Referenced by output_get_cpu_unit_code_func().

#define NAME_CODE_TABLE_NAME   "name_code_table"

Definition at line 8653 of file genautomata.c.

Referenced by output_get_cpu_unit_code_func().

#define NAME_MEMBER_NAME   "name"

Definition at line 8656 of file genautomata.c.

Referenced by output_get_cpu_unit_code_func().

#define NDFA_OPTION   "-ndfa"

#define NO_MINIMIZATION_OPTION   "-no-minimization"

#define NOTHING_NAME   "nothing"

#define ON_THE_PATH   -2

Definition at line 6812 of file genautomata.c.

Referenced by longest_path_length(), and output_dfa_max_issue_rate().

#define PRINT_RESERVATION_FUNC_NAME   "print_reservation"

Definition at line 7162 of file genautomata.c.

Referenced by output_print_reservation_func().

#define REGEXP_ALLOF (  )     (&(r)->regexp.allof)

#define REGEXP_ONEOF (  )     (&(r)->regexp.oneof)

#define REGEXP_REPEAT (  )     (&(r)->regexp.repeat)

#define REGEXP_RESERV (  )     (&(r)->regexp.reserv)

#define REGEXP_SEQUENCE (  )     (&(r)->regexp.sequence)

#define REGEXP_UNIT (  )     (&(r)->regexp.unit)

#define RESET_FUNC_NAME   "state_reset"

Definition at line 7158 of file genautomata.c.

Referenced by output_reset_func().

#define RESULT_VARIABLE_NAME   "res"

#define SET_BIT ( bitstring,
bitno   )     (((char *) (bitstring)) [(bitno) / CHAR_BIT] |= 1 << (bitno) % CHAR_BIT)

Definition at line 3551 of file genautomata.c.

Referenced by actual_spill(), add_conflict_edge(), add_dependence(), add_edge_to_ddg(), add_forward_dependence(), add_new_name_mapping(), break_superblocks(), build_store_vectors(), build_web_parts_and_conflicts(), cached_make_edge(), calculate_global_regs_live(), calculate_reg_pav(), ccp_initialize(), cfg_blocks_add(), check_sibcall_argument_overlap(), coalesce_ssa_name(), collect_points_to_info_for(), commit_edge_insertions(), commit_edge_insertions_watch_calls(), compact_var_map(), compute_ae_gen(), compute_ae_kill(), compute_antic(), compute_defs_uses_and_gen(), compute_dominance_frontiers_1(), compute_flow_insensitive_aliasing(), compute_local_properties(), compute_pre_data(), compute_store_table(), compute_transp(), copyprop_hardreg_forward(), create_ddg_all_sccs(), create_ssa_var_map(), defs_to_undefined(), defs_to_varying(), delete_null_pointer_checks_1(), detect_web_parts_to_rebuild(), df_hybrid_search_backward(), df_hybrid_search_forward(), df_iterative_dataflow(), distribute_notes(), do_da_constraint(), do_ds_constraint(), do_sd_constraint(), dump_copy_of(), eh_region_outermost(), elim_backward(), elim_forward(), eliminate_phi(), ephi_backward(), ephi_create(), ephi_forward(), examine_flow_edges(), find_assert_locations(), find_conditional_asserts(), find_evaluations_1(), find_nodes_on_paths(), fix_bb_placements(), fix_irreducible_loops(), flow_depth_first_order_compute(), flow_dfs_compute_reverse_add_bb(), flow_loops_find(), flow_preorder_transversal_compute(), flow_reverse_top_sort_order_compute(), form_reserv_sets_list(), get_address_cost(), handle_rd_kill_set(), hoist_code(), hybrid_search(), hybrid_search_bitmap(), hybrid_search_sbitmap(), initiate_excl_sets(), initiate_presence_absence_sets(), invalidate_nonnull_info(), iterative_dataflow(), iterative_dataflow_bitmap(), iterative_dataflow_sbitmap(), link_btr_uses(), longest_simple_path(), loopify(), make_edges(), mark_control_dependent_edges_necessary(), mark_def_sites(), mark_dfs_back_edges(), mark_operand_necessary(), mark_references(), mark_refs_for_checking(), maybe_queue_var(), multiplier_allowed_in_address_p(), post_order_compute(), pre_and_rev_post_order_compute(), pre_delete(), pre_edge_insert(), process_unification_queue(), propagate_necessity(), purge_all_dead_edges(), ra_build_realloc(), reachable_at_most_once(), record_canonical_element_1(), record_conflict(), record_last_reg_set_info(), reg_set_info(), remember_move(), remove_path(), remove_reachable_equiv_notes(), reset_conflicts(), rewrite_program2(), rewrite_ssa_into_ssa(), root_var_init(), scc_visit(), schedule_ebbs(), see_analyze_merged_def_local_prop(), see_analyze_unmerged_def_local_prop(), see_analyze_use_local_prop(), set_unit_reserv(), simulate_block(), single_reachable_address(), solve_graph(), spill_coalprop(), spill_prop_insert(), spill_propagation(), split_all_insns(), ssa_const_prop(), topo_visit(), tree_ssa_lim_initialize(), type_var_init(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), update_alias_info(), update_dist_to_successors(), update_life_info_in_dirty_blocks(), update_ssa(), verify_loop_structure(), visit_expression(), visit_phi_node(), and vt_find_locations().

#define SIZE_FUNC_NAME   "state_size"

Definition at line 7146 of file genautomata.c.

Referenced by output_size_func().

#define STANDARD_OUTPUT_DESCRIPTION_FILE_SUFFIX   ".dfa"

Definition at line 9374 of file genautomata.c.

Referenced by initiate_automaton_gen().

#define STATE_ALTS_FUNC_NAME   "state_alts"

Definition at line 7150 of file genautomata.c.

Referenced by output_state_alts_func().

#define STATE_NAME   "state"

#define STATE_TYPE_NAME   "state_t"

#define TEMPORARY_VARIABLE_NAME   "temp"

#define TEST_BIT ( bitstring,
bitno   )     (((char *) (bitstring)) [(bitno) / CHAR_BIT] >> (bitno) % CHAR_BIT & 1)

Definition at line 3556 of file genautomata.c.

Referenced by add_conflict_edge(), add_control_edge(), add_dependence(), add_forward_dependence(), aggressive_coalesce(), build_intra_loop_deps(), build_store_vectors(), build_web_parts_and_conflicts(), cached_make_edge(), calculate_global_regs_live(), calculate_reg_pav(), ccp_initialize(), cfg_blocks_add(), check_sibcall_argument_overlap_1(), check_uncoalesced_moves(), classic_gcse(), coalesce(), collect_points_to_info_for(), compact_var_map(), compute_ae_kill(), compute_antic_aux(), compute_dominance_frontiers_1(), compute_kill_rd(), compute_topo_order(), compute_transp(), copyprop_hardreg_forward(), count_or_remove_death_notes(), create_scc(), def_reaches_here_p(), delete_null_pointer_checks_1(), detect_spill_temps(), detect_web_parts_to_rebuild(), df_hybrid_search_backward(), df_hybrid_search_forward(), df_iterative_dataflow(), do_da_constraint(), do_ds_constraint(), do_sd_constraint(), dump_copy_of(), dump_igraph(), dump_sbitmap_file(), dump_web_conflicts(), duplicate_loop_to_header_edge(), eh_region_outermost(), elim_backward(), elim_create(), elim_forward(), elim_unvisited_predecessor(), eliminate_phi(), emit_loads(), ephi_backward(), ephi_create(), ephi_forward(), examine_flow_edges(), expr_killed_p(), expr_reaches_here_p_work(), extended_coalesce_2(), fill_always_executed_in(), find_and_collapse_graph_cycles(), find_assert_locations(), find_avail_set(), find_bypass_set(), find_many_sub_basic_blocks(), find_nodes_on_paths(), fix_bb_placements(), fix_irreducible_loops(), flow_call_edges_add(), flow_depth_first_order_compute(), flow_dfs_compute_reverse_execute(), flow_loops_find(), flow_preorder_transversal_compute(), flow_reverse_top_sort_order_compute(), follow_def_use_chains(), get_address_cost(), hoist_code(), hoist_expr_reaches_here_p(), hybrid_search(), hybrid_search_bitmap(), hybrid_search_sbitmap(), insert_coalesced_conflicts(), insert_insn_end_bb(), insert_store(), is_new_name(), is_old_name(), is_partly_live_1(), iterative_dataflow(), iterative_dataflow_bitmap(), iterative_dataflow_sbitmap(), live_out_1(), livethrough_conflicts_bb(), loopify(), mark_control_dependent_edges_necessary(), mark_dfs_back_edges(), mark_operand_necessary(), maybe_queue_var(), mem_overlaps_already_clobbered_arg_p(), multiplier_allowed_in_address_p(), ok(), optimize_unexecutable_edges(), output_cycle_reservs(), parts_to_webs_1(), post_order_compute(), pre_and_rev_post_order_compute(), pre_delete(), pre_edge_insert(), pre_expr_reaches_here_p_work(), pre_insert_copies(), process_ssa_edge_worklist(), process_unification_queue(), propagate_necessity(), ra_build_realloc(), reachable_at_most_once(), record_conflict(), register_edge_assert_for(), reloads_to_loads(), remember_move(), remove_path(), remove_reachable_equiv_notes(), rewrite_program2(), root_var_init(), rtl_flow_call_edges_add(), scc_visit(), see_pre_delete_extension(), simulate_block(), single_reachable_address(), solve_graph(), sort_and_combine_web_pairs(), spill_coalescing(), spill_prop_insert(), spill_prop_savings(), ssa_mark_def_sites(), ssa_mark_def_sites_initialize_block(), ssa_mark_phi_uses(), ssa_rewrite_initialize_block(), ssa_rewrite_phi_arguments(), ssa_rewrite_stmt(), store_motion(), store_one_arg(), store_ops_ok(), test_unit_reserv(), topo_visit(), tree_flow_call_edges_add(), type_var_init(), update_alias_info(), update_dist_to_successors(), verify_loop_structure(), visit_expression(), visit_phi_node(), vt_find_locations(), and walk_dominator_tree().

#define TIME_OPTION   "-time"

#define TRANSITION_FUNC_NAME   "state_transition"

Definition at line 7148 of file genautomata.c.

Referenced by output_trans_func().

#define UNDEFINED_LONGEST_PATH_LENGTH   -1

Definition at line 1073 of file genautomata.c.

Referenced by get_free_state(), longest_path_length(), and output_dfa_max_issue_rate().

#define V_OPTION   "-v"

#define VLA_HWINT ( vla,
n   )     VARRAY_WIDE_INT ((vla).varray, n)

#define VLA_HWINT_ADD ( vla,
ptr   ) 

Value:

do {                                                                \
    vla_hwint_t *const vla_ptr = &(vla);                              \
                                                                      \
    VLA_HWINT_EXPAND (*vla_ptr, 1);                                   \
    VARRAY_WIDE_INT (vla_ptr->varray, vla_ptr->length - 1) = (ptr);   \
  } while (0)

Referenced by add_vect(), and add_vect_el().

#define VLA_HWINT_BEGIN ( vla   )     (&VARRAY_WIDE_INT ((vla).varray, 0))

#define VLA_HWINT_CREATE ( vla,
allocated_length,
name   ) 

#define VLA_HWINT_DELETE ( vla   )     VARRAY_FREE ((vla).varray)

#define VLA_HWINT_EXPAND ( vla,
n   ) 

Value:

do {                                                                \
    vla_hwint_t *const expand_vla_ptr = &(vla);                       \
    const size_t new_length = (n) + expand_vla_ptr->length;           \
                                                                      \
    if (VARRAY_SIZE (expand_vla_ptr->varray) < new_length)            \
      VARRAY_GROW (expand_vla_ptr->varray,                            \
                   (new_length - expand_vla_ptr->length < 128         \
                    ? expand_vla_ptr->length + 128 : new_length));    \
    expand_vla_ptr->length = new_length;                              \
  } while (0)

Referenced by create_state_ainsn_table(), output_dead_lock_vect(), output_min_issue_delay_table(), output_reserved_units_table(), and output_translate_vect().

#define VLA_HWINT_LENGTH ( vla   )     ((vla).length)

#define VLA_HWINT_NULLIFY ( vla   )     ((vla).length = 0)

#define VLA_PTR ( vla,
n   )     VARRAY_GENERIC_PTR ((vla).varray, n)

#define VLA_PTR_ADD ( vla,
ptr   ) 

#define VLA_PTR_BEGIN ( vla   )     ((void *) &VARRAY_GENERIC_PTR ((vla).varray, 0))

#define VLA_PTR_CREATE ( vla,
allocated_length,
name   ) 

#define VLA_PTR_DELETE ( vla   )     VARRAY_FREE ((vla).varray)

#define VLA_PTR_EXPAND ( vla,
n   ) 

Value:

do {                                                                \
    vla_ptr_t *const expand_vla_ptr = &(vla);                         \
    const size_t new_length = (n) + expand_vla_ptr->length;           \
                                                                      \
    if (VARRAY_SIZE (expand_vla_ptr->varray) < new_length)            \
      VARRAY_GROW (expand_vla_ptr->varray,                            \
                   (new_length - expand_vla_ptr->length < 128         \
                    ? expand_vla_ptr->length + 128 : new_length));    \
    expand_vla_ptr->length = new_length;                              \
  } while (0)

Referenced by process_state_for_insn_equiv_partition(), and store_alt_unit_usage().

#define VLA_PTR_LAST ( vla   ) 

#define VLA_PTR_LENGTH ( vla   )     ((vla).length)

#define VLA_PTR_NULLIFY ( vla   )     ((vla).length = 0)

#define VLA_PTR_SHORTEN ( vla,
n   )     ((vla).length -= (n))

#define W_OPTION   "-w"


Typedef Documentation

typedef struct ainsn* ainsn_t

Definition at line 197 of file genautomata.c.

Definition at line 194 of file genautomata.c.

typedef struct arc* arc_t

Definition at line 196 of file genautomata.c.

Definition at line 199 of file genautomata.c.

Definition at line 198 of file genautomata.c.

typedef struct decl* decl_t

Definition at line 191 of file genautomata.c.

typedef int pos_t

Definition at line 121 of file genautomata.c.

Definition at line 192 of file genautomata.c.

Definition at line 129 of file genautomata.c.

typedef unsigned HOST_WIDE_INT set_el_t

Definition at line 125 of file genautomata.c.

Definition at line 200 of file genautomata.c.

typedef struct state* state_t

Definition at line 195 of file genautomata.c.

Definition at line 155 of file genautomata.c.

Definition at line 190 of file genautomata.c.

Definition at line 193 of file genautomata.c.

typedef HOST_WIDE_INT vect_el_t

Definition at line 158 of file genautomata.c.

Definition at line 140 of file genautomata.c.


Enumeration Type Documentation

Enumerator:
rm_unit 
rm_reserv 
rm_nothing 
rm_sequence 
rm_repeat 
rm_allof 
rm_oneof 
rm_unit 
rm_reserv 
rm_nothing 
rm_sequence 
rm_repeat 
rm_allof 
rm_oneof 
rm_unit 
rm_reserv 
rm_nothing 
rm_sequence 
rm_repeat 
rm_allof 
rm_oneof 
rm_unit 
rm_reserv 
rm_nothing 
rm_sequence 
rm_repeat 
rm_allof 
rm_oneof 

Definition at line 882 of file genautomata.c.


Function Documentation

static int active_time ( ticker_t  ticker  )  [static]

Definition at line 3292 of file genautomata.c.

References get_run_time().

Referenced by print_active_time().

static void add_achieved_state ( state_t  state  )  [static]

Definition at line 5828 of file genautomata.c.

References VLA_PTR_ADD.

Referenced by evaluate_equiv_classes().

static void add_advance_cycle_insn_decl ( void   )  [static]

static arc_t add_arc ( state_t  from_state,
state_t  to_state,
ainsn_t  ainsn,
int  state_alts 
) [static]

static void add_automaton_state ( state_t  state  )  [static]

Definition at line 9515 of file genautomata.c.

References VLA_PTR_ADD.

Referenced by form_important_insn_automata_lists().

static void add_excls ( unit_set_el_t  dest_list,
unit_set_el_t  source_list,
excl_pos   
) [static]

static void add_presence_absence ( unit_set_el_t  dest_list,
unit_set_el_t  source_list,
req_pos  ,
int  presence_p 
) [static]

static void add_state_reservs ( state_t  state  )  [static]

static void add_states_vect_el ( state_t  state  )  [static]

static void add_vect ( state_ainsn_table_t  tab,
int  vect_num,
vect_el_t vect,
int  vect_length 
) [static]

static void add_vect_el ( vla_hwint_t vect,
ainsn_t  ainsn,
int  el_value 
) [static]

static reserv_sets_t alloc_empty_reserv_sets ( void   )  [static]

static int alt_state_cmp ( void alt_state_ptr_1,
const void alt_state_ptr_2 
) const [static]

Definition at line 3452 of file genautomata.c.

Referenced by alt_states_eq(), and uniq_sort_alt_states().

static int alt_states_eq ( alt_state_t  alt_states_1,
alt_state_t  alt_states_2 
) [static]

Definition at line 3517 of file genautomata.c.

References alt_state_cmp(), alt_state::next_sorted_alt_state, and NULL.

Referenced by form_ainsn_with_same_reservs().

static void automata_list_add ( automaton_t  automaton  )  [static]

static int automata_list_eq_p ( void automata_list_1,
const void automata_list_2 
) const [static]

static automata_list_el_t automata_list_finish ( void   )  [static]

Definition at line 4426 of file genautomata.c.

References entry_ptr, free_automata_list(), htab_find_slot(), and NULL.

Referenced by form_important_insn_automata_lists().

static hashval_t automata_list_hash ( void automata_list  )  const [static]

static void automata_list_start ( void   )  [static]

Definition at line 4405 of file genautomata.c.

References NULL.

Referenced by form_important_insn_automata_lists().

static int automaton_decl_eq_p ( void automaton_decl_1,
const void automaton_decl_2 
) const [static]

Definition at line 2114 of file genautomata.c.

References abort, DECL_AUTOMATON, decl::mode, NULL, and strcmp().

Referenced by initiate_automaton_decl_table().

static hashval_t automaton_decl_hash ( void automaton_decl  )  const [static]

Definition at line 2099 of file genautomata.c.

References abort, DECL_AUTOMATON, decl::mode, NULL, and string_hash().

Referenced by initiate_automaton_decl_table().

static const char* base_file_name ( char *  file_name  )  const [static]

Definition at line 9395 of file genautomata.c.

References strlen().

Referenced by initiate_automaton_gen().

static void build_automaton ( automaton_t  automaton  )  [static]

static void check_all_description ( void   )  [static]

static void check_automata_insn_issues ( void   )  [static]

static void check_automaton_usage ( void   )  [static]

static void check_loops_in_regexps ( void   )  [static]

static char* check_name ( char *  name,
pos   
) [static]

Definition at line 1482 of file genautomata.c.

References error().

Referenced by gen_automaton(), gen_cpu_unit(), gen_insn_reserv(), gen_query_cpu_unit(), and gen_reserv().

static void check_unit_distributions_to_automata ( void   )  [static]

static void check_usage ( void   )  [static]

static void clear_arc_insns_equiv_num ( state_t  state  )  [static]

static int comb_vect_p ( state_ainsn_table_t  tab  )  [static]

static int compare_max_occ_cycle_nums ( void unit_decl_1,
const void unit_decl_2 
) const [static]

Definition at line 6457 of file genautomata.c.

References DECL_UNIT.

Referenced by units_to_automata_heuristic_distr().

static int compare_transition_els_num ( void state_ptr_1,
const void state_ptr_2 
) const [static]

Definition at line 7512 of file genautomata.c.

References out_state_arcs_num().

Referenced by output_state_alts_table(), and output_trans_table().

static void copy_equiv_class ( vla_ptr_t to,
const vla_ptr_t from 
) [static]

Definition at line 5883 of file genautomata.c.

References VLA_PTR_ADD, VLA_PTR_BEGIN, VLA_PTR_LAST, and VLA_PTR_NULLIFY.

Referenced by evaluate_equiv_classes().

static regexp_t copy_insn_regexp ( regexp_t  regexp  )  [static]

static void* copy_node ( void from,
size_t  size 
) const [static]

Definition at line 1471 of file genautomata.c.

References create_node(), memcpy, and result.

static void count_states_and_arcs ( automaton_t  automaton,
int *  states_num,
int *  arcs_num 
) [static]

Definition at line 6193 of file genautomata.c.

References incr_states_and_arcs_nums(), and pass_states().

Referenced by build_automaton().

static ainsn_t create_ainsns ( void   )  [static]

static void create_alt_states ( automaton_t  automaton  )  [static]

static void create_automata ( void   )  [static]

static void create_composed_state ( state_t  original_state,
arc_t  arcs_marked_by_insn,
vla_ptr_t state_stack 
) [static]

static void* create_node ( size_t  size  )  [static]

static state_ainsn_table_t create_state_ainsn_table ( automaton_t  automaton  )  [static]

static ticker_t create_ticker ( void   )  [static]

static int decl_eq_p ( void decl_1,
const void decl_2 
) const [static]

Definition at line 2322 of file genautomata.c.

References abort, d1, d2, DECL_RESERV, DECL_UNIT, decl::mode, NULL, and strcmp().

Referenced by initiate_decl_table().

static hashval_t decl_hash ( void decl  )  const [static]

Definition at line 2306 of file genautomata.c.

References abort, d, DECL_RESERV, DECL_UNIT, decl::mode, NULL, and string_hash().

Referenced by initiate_decl_table().

static void delete_ainsn_from_equiv_class ( ainsn_t  equiv_class_insn  )  [static]

Definition at line 6292 of file genautomata.c.

References ainsn::next_equiv_class_insn.

Referenced by process_insn_equiv_class().

static void enumerate_states ( automaton_t  automaton  )  [static]

Definition at line 6258 of file genautomata.c.

References pass_states(), and set_order_state_num().

Referenced by create_automata().

static double estimate_one_automaton_bound ( void   )  [static]

static void evaluate_equiv_classes ( automaton_t  automaton,
vla_ptr_t equiv_classes 
) [static]

static void evaluate_max_reserv_cycles ( void   )  [static]

void expand_automata ( void   ) 

Definition at line 9590 of file genautomata.c.

Referenced by main().

static const char* file_name_suffix ( char *  file_name  )  const [static]

Definition at line 9379 of file genautomata.c.

References NULL.

Referenced by initiate_automaton_gen().

static arc_t find_arc ( state_t  from_state,
state_t  to_state,
ainsn_t  insn 
) [static]

Definition at line 4213 of file genautomata.c.

References first_out_arc(), arc::insn, next_out_arc(), NULL, and arc::to_state.

Referenced by add_arc().

static decl_t find_automaton_decl ( char *  name  )  [static]

Definition at line 2159 of file genautomata.c.

References DECL_AUTOMATON, htab_find(), decl::mode, and work_automaton_decl.

Referenced by process_decls().

static struct bypass_decl* find_bypass ( struct bypass_decl bypass_list,
struct insn_reserv_decl in_insn_reserv 
) [static, read]

Definition at line 2654 of file genautomata.c.

References bypass_decl::in_insn_reserv, bypass_decl::next, and NULL.

Referenced by process_decls().

static decl_t find_decl ( char *  name  )  [static]

static decl_t find_insn_decl ( char *  name  )  [static]

Definition at line 2263 of file genautomata.c.

References DECL_INSN_RESERV, htab_find(), decl::mode, and work_insn_decl.

Referenced by process_decls().

static void finish_alt_states ( void   )  [static]

Definition at line 3539 of file genautomata.c.

Referenced by finish_states().

static void finish_arcs ( void   )  [static]

Definition at line 4291 of file genautomata.c.

Referenced by write_automata().

static void finish_automata_lists ( void   )  [static]

Definition at line 4444 of file genautomata.c.

References htab_delete().

Referenced by write_automata().

static void finish_automaton_decl_table ( void   )  [static]

Definition at line 2186 of file genautomata.c.

References htab_delete().

Referenced by write_automata().

static void finish_decl_table ( void   )  [static]

Definition at line 2396 of file genautomata.c.

References htab_delete().

Referenced by write_automata().

static void finish_forming_alt_state ( alt_state_t  alt_state,
automaton   
) [static]

Definition at line 5408 of file genautomata.c.

References free_state(), and insert_state().

Referenced by process_alts_for_forming_states().

static void finish_insn_decl_table ( void   )  [static]

Definition at line 2290 of file genautomata.c.

References htab_delete().

Referenced by write_automata().

static void finish_regexp_representation ( void   )  [static]

Definition at line 6772 of file genautomata.c.

References length, obstack_blank_fast, and obstack_object_size.

Referenced by output_print_reservation_func(), and output_regexp().

static void finish_states ( void   )  [static]

Definition at line 4155 of file genautomata.c.

References finish_alt_states(), htab_delete(), and VLA_PTR_DELETE.

Referenced by write_automata().

static arc_t first_out_arc ( state_t  state  )  [static]

static void form_ainsn_with_same_reservs ( automaton_t  automaton  )  [static]

static void form_arcs_marked_by_insn ( state_t  state  )  [static]

static void form_important_insn_automata_lists ( void   )  [static]

static void form_regexp ( regexp_t  regexp  )  [static]

static void form_the_same_automaton_unit_lists (  )  [static]

static void form_the_same_automaton_unit_lists_from_regexp ( regexp_t  regexp  )  [static]

static void free_alt_state ( alt_state_t  alt_state  )  [static]

Definition at line 3424 of file genautomata.c.

References NULL.

Referenced by free_alt_states(), and uniq_sort_alt_states().

static void free_alt_states ( alt_state_t  alt_states_list  )  [static]

Definition at line 3435 of file genautomata.c.

References free_alt_state(), alt_state::next_alt_state, and NULL.

Referenced by free_state().

static void free_arc ( arc_t  arc  )  [static]

Definition at line 4178 of file genautomata.c.

Referenced by merge_states(), and remove_arc().

static void free_automata_list ( automata_list_el_t  automata_list  )  [static]

static void free_automata_list_el ( automata_list_el_t  automata_list_el  )  [static]

Definition at line 4330 of file genautomata.c.

References NULL.

Referenced by free_automata_list().

static void free_state ( state_t  state  )  [static]

void gen_absence_set ( rtx  def  ) 

Definition at line 1787 of file genautomata.c.

Referenced by main().

void gen_automata_option ( rtx  def  ) 

Definition at line 1854 of file genautomata.c.

Referenced by main().

void gen_automaton ( rtx  def  ) 

Definition at line 1827 of file genautomata.c.

Referenced by main().

void gen_bypass ( rtx  def  ) 

Definition at line 1670 of file genautomata.c.

Referenced by main().

void gen_cpu_unit ( rtx  def  ) 

Definition at line 1611 of file genautomata.c.

Referenced by main().

void gen_excl_set ( rtx  def  ) 

Definition at line 1707 of file genautomata.c.

Referenced by main().

void gen_insn_reserv ( rtx  def  ) 

Definition at line 2057 of file genautomata.c.

Referenced by main().

void gen_presence_set ( rtx  def  ) 

Definition at line 1747 of file genautomata.c.

Referenced by main().

void gen_query_cpu_unit ( rtx  def  ) 

Definition at line 1640 of file genautomata.c.

Referenced by main().

static regexp_t gen_regexp ( char *  str  )  [static]

Definition at line 2024 of file genautomata.c.

References gen_regexp_sequence().

Referenced by gen_insn_reserv(), and gen_reserv().

static regexp_t gen_regexp_allof ( char *  str  )  [static]

static regexp_t gen_regexp_el ( char *  str  )  [static]

static regexp_t gen_regexp_oneof ( char *  str  )  [static]

static regexp_t gen_regexp_repeat ( char *  str  )  [static]

static regexp_t gen_regexp_sequence ( char *  str  )  [static]

void gen_reserv ( rtx  def  ) 

Definition at line 2037 of file genautomata.c.

Referenced by main().

static void generate ( void   )  [static]

static reserv_sets_t get_excl_set ( reserv_sets_t  in_set  )  [static]

Definition at line 4501 of file genautomata.c.

References CHAR_BIT, i, memset, and description::units_num.

Referenced by reserv_sets_are_intersected().

static alt_state_t get_free_alt_state ( void   )  [static]

static automata_list_el_t get_free_automata_list_el ( void   )  [static]

static state_t get_free_state ( int  with_reservs,
automaton_t  automaton 
) [static]

static reserv_sets_t get_presence_absence_set ( reserv_sets_t  in_set,
int  presence_p 
) [static]

Definition at line 4598 of file genautomata.c.

References CHAR_BIT, i, memset, and description::units_num.

Referenced by reserv_sets_are_intersected().

static char** get_str_vect ( char *  str,
int *  els_num,
int  sep,
int  par_flag 
) [static]

static void incr_states_and_arcs_nums ( state_t  state  )  [static]

Definition at line 6181 of file genautomata.c.

References first_out_arc(), next_out_arc(), and NULL.

Referenced by count_states_and_arcs().

static state_t init_equiv_class ( state_t states,
int  states_num 
) [static]

Definition at line 5927 of file genautomata.c.

References NULL.

Referenced by evaluate_equiv_classes().

static void initiate_alt_states ( void   )  [static]

Definition at line 3532 of file genautomata.c.

References NULL.

Referenced by initiate_states().

static void initiate_arcs ( void   )  [static]

Definition at line 4284 of file genautomata.c.

References NULL.

Referenced by generate().

static void initiate_automata_lists ( void   )  [static]

Definition at line 4395 of file genautomata.c.

References automata_list_eq_p(), automata_list_hash(), htab_create(), and NULL.

Referenced by generate().

static void initiate_automaton_decl_table ( void   )  [static]

void initiate_automaton_gen ( int  argc,
char **  argv 
)

Definition at line 9414 of file genautomata.c.

Referenced by main().

static void initiate_decl_table ( void   )  [static]

Definition at line 2386 of file genautomata.c.

References decl_eq_p(), decl_hash(), htab_create(), decl::mode, and work_decl.

Referenced by initiate_automaton_gen().

static void initiate_excl_sets ( void   )  [static]

static void initiate_insn_decl_table ( void   )  [static]

static void initiate_min_issue_delay_pass_states ( void   )  [static]

Definition at line 7724 of file genautomata.c.

Referenced by output_tables().

static void initiate_pass_states ( void   )  [static]

Definition at line 5816 of file genautomata.c.

Referenced by generate().

static void initiate_presence_absence_sets (  )  [static]

static void initiate_states ( void   )  [static]

static ainsn_t insert_ainsn_into_equiv_class ( ainsn_t  ainsn,
ainsn_t  cyclic_equiv_class_insn_list 
) [static]

Definition at line 6274 of file genautomata.c.

References ainsn::next_equiv_class_insn, and NULL.

Referenced by process_insn_equiv_class(), and set_insn_equiv_classes().

static decl_t insert_automaton_decl ( decl_t  automaton_decl  )  [static]

Definition at line 2138 of file genautomata.c.

References entry_ptr, htab_find_slot(), and NULL.

Referenced by process_decls().

static decl_t insert_decl ( decl_t  decl  )  [static]

Definition at line 2350 of file genautomata.c.

References entry_ptr, htab_find_slot(), and NULL.

Referenced by process_decls().

static decl_t insert_insn_decl ( decl_t  insn_decl  )  [static]

Definition at line 2242 of file genautomata.c.

References entry_ptr, htab_find_slot(), and NULL.

Referenced by process_decls().

static state_t insert_state ( state_t  state  )  [static]

static int insn_decl_eq_p ( void insn_decl_1,
const void insn_decl_2 
) const [static]

Definition at line 2217 of file genautomata.c.

References abort, DECL_INSN_RESERV, decl::mode, NULL, and strcmp().

Referenced by initiate_insn_decl_table().

static hashval_t insn_decl_hash ( void insn_decl  )  const [static]

Definition at line 2203 of file genautomata.c.

References abort, DECL_INSN_RESERV, decl::mode, NULL, and string_hash().

Referenced by initiate_insn_decl_table().

static int intersected_state_reservs_p ( state_t  state1,
state_t  state2 
) [static]

Definition at line 4070 of file genautomata.c.

References abort, state::automaton, reserv_sets_are_intersected(), and state::reservs.

Referenced by make_automaton().

static int it_is_empty_reserv_sets ( reserv_sets_t  operand  )  [static]

Definition at line 3719 of file genautomata.c.

References abort, and NULL.

static int longest_path_length ( state_t  state  )  [static]

static int loop_in_regexp ( regexp_t  regexp,
decl_t  start_decl 
) [static]

static void make_automaton ( automaton_t  automaton  )  [static]

static void make_bypass_attr ( void   )  [static]

static void make_default_insn_latency_attr ( void   )  [static]

static void make_insn_alts_attr ( void   )  [static]

static void make_internal_dfa_insn_code_attr ( void   )  [static]

static void merge_states ( automaton_t  automaton,
vla_ptr_t equiv_classes 
) [static]

static int min_issue_delay ( state_t  state,
ainsn_t  ainsn 
) [static]

Definition at line 7712 of file genautomata.c.

References min_issue_delay_pass_states().

Referenced by output_min_issue_delay_table().

static int min_issue_delay_pass_states ( state_t  state,
ainsn_t  ainsn 
) [static]

static void minimize_DFA ( automaton_t  automaton  )  [static]

static int n_sep_els ( char *  s,
int  sep,
int  par_flag 
) [static]

Definition at line 1555 of file genautomata.c.

References n.

Referenced by get_str_vect().

static void NDFA_to_DFA ( automaton_t  automaton  )  [static]

static arc_t next_out_arc ( arc_t  arc  )  [static]

static char* next_sep_el ( char **  pstr,
int  sep,
int  par_flag 
) [static]

Definition at line 1504 of file genautomata.c.

References ISSPACE, NULL, obstack_1grow, obstack_base, obstack_finish, and p.

Referenced by get_str_vect().

static int out_state_arcs_num ( state_t  state  )  [static]

static void output_automata_list_min_issue_delay_code ( automata_list_el_t  automata_list  )  [static]

static void output_automata_list_state_alts_code ( automata_list_el_t  automata_list  )  [static]

static void output_automata_list_transition_code ( automata_list_el_t  automata_list  )  [static]

static void output_automaton_descriptions ( void   )  [static]

static void output_automaton_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_automaton_units ( automaton_t  automaton  )  [static]

static void output_chip_definitions ( void   )  [static]

static void output_chip_member_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_cpu_unit_reservation_p ( void   )  [static]

static void output_cycle_reservs ( FILE f,
reserv_sets_t  reservs,
int  start_cycle,
int  repetition_num 
) [static]

Definition at line 3846 of file genautomata.c.

References abort, CHAR_BIT, fprintf(), NOTHING_NAME, TEST_BIT, and description::units_num.

Referenced by output_reserv_sets().

static void output_dead_lock_func ( void   )  [static]

static void output_dead_lock_vect ( automaton_t  automaton  )  [static]

static void output_dead_lock_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_description ( void   )  [static]

static void output_dfa_finish_func ( void   )  [static]

Definition at line 8766 of file genautomata.c.

References DFA_FINISH_FUNC_NAME, DFA_INSN_CODES_VARIABLE_NAME, and fprintf().

Referenced by write_automata().

static void output_dfa_insn_code_func ( void   )  [static]

static void output_dfa_max_issue_rate ( void   )  [static]

static void output_dfa_start_func ( void   )  [static]

static void output_get_cpu_unit_code_func ( void   )  [static]

static void output_insn_code_cases ( output_automata_list_code   )  [static]

static void output_insn_latency_func ( void   )  [static]

static void output_internal_dead_lock_func ( void   )  [static]

static void output_internal_insn_code_evaluation ( char *  insn_name,
const char *  insn_code_name,
int  code 
) const [static]

static void output_internal_insn_latency_func ( void   )  [static]

static void output_internal_min_issue_delay_func ( void   )  [static]

static void output_internal_reset_func ( void   )  [static]

Definition at line 8452 of file genautomata.c.

References CHIP_NAME, CHIP_PARAMETER_NAME, fprintf(), and INTERNAL_RESET_FUNC_NAME.

Referenced by write_automata().

static void output_internal_state_alts_func ( void   )  [static]

static void output_internal_trans_func ( void   )  [static]

static void output_max_insn_queue_index_def ( void   )  [static]

static void output_min_insn_conflict_delay_func ( void   )  [static]

static void output_min_issue_delay_func ( void   )  [static]

static void output_min_issue_delay_table ( automaton_t  automaton  )  [static]

static void output_min_issue_delay_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_print_reservation_func ( void   )  [static]

static void output_range_type ( FILE f,
long int  min_range_value,
long int  max_range_value 
) [static]

static void output_regexp ( regexp_t  regexp  )  [static]

Definition at line 8779 of file genautomata.c.

References finish_regexp_representation(), fprintf(), and regexp_representation().

Referenced by output_description().

static void output_reserv_sets ( FILE f,
reserv_sets_t  reservs 
) [static]

Definition at line 3889 of file genautomata.c.

References fprintf(), memcmp, and output_cycle_reservs().

Referenced by output_state().

static void output_reserved_units_table ( automaton_t  automaton  )  [static]

static void output_reserved_units_table_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_reset_func ( void   )  [static]

Definition at line 8473 of file genautomata.c.

References fprintf(), INTERNAL_RESET_FUNC_NAME, RESET_FUNC_NAME, STATE_NAME, and STATE_TYPE_NAME.

Referenced by write_automata().

static void output_size_func ( void   )  [static]

Definition at line 8465 of file genautomata.c.

References CHIP_NAME, fprintf(), and SIZE_FUNC_NAME.

Referenced by write_automata().

static void output_state ( state_t  state  )  [static]

static void output_state_ainsn_table ( state_ainsn_table_t  tab,
char *  table_name,
void output_full_vect_name_func,
void output_comb_vect_name_func,
void output_check_vect_name_func,
void output_base_vect_name_func 
) [static]

static void output_state_alts_base_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_state_alts_check_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_state_alts_comb_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_state_alts_full_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_state_alts_func ( void   )  [static]

static void output_state_alts_table ( automaton_t  automaton  )  [static]

static void output_state_arcs ( state_t  state  )  [static]

static void output_state_member_type ( FILE f,
automaton_t  automaton 
) [static]

static void output_statistics ( FILE f  )  [static]

static void output_tables ( void   )  [static]

static void output_temp_chip_member_name ( FILE f,
automaton_t  automaton 
) [static]

Definition at line 6946 of file genautomata.c.

References fprintf(), and output_chip_member_name().

Referenced by output_automata_list_transition_code().

static void output_time_statistics ( FILE f  )  [static]

Definition at line 9167 of file genautomata.c.

References fprintf(), and print_active_time().

Referenced by write_automata().

static void output_trans_base_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_trans_check_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_trans_comb_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_trans_full_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_trans_func ( void   )  [static]

static void output_trans_table ( automaton_t  automaton  )  [static]

static void output_translate_vect ( automaton_t  automaton  )  [static]

static void output_translate_vect_name ( FILE f,
automaton_t  automaton 
) [static]

static void output_unit_set_el_list ( unit_set_el_t  list  )  [static]

static void output_vect ( vect_el_t vect,
int  vect_length 
) [static]

static void set_unit_reserv PARAMS ( (reserv_sets_t, int, int)   )  [static]

static int reserv_sets_cmp PARAMS ( (reserv_sets_t, reserv_sets_t  )  [static]

static unsigned reserv_sets_hash_value PARAMS ( (reserv_sets_t  )  [static]

static int alt_states_eq PARAMS ( (alt_state_t, alt_state_t  )  [static]

static int alt_state_cmp PARAMS ( (const void *alt_state_ptr_1, const void *alt_state_ptr_2)   )  [static]

static void free_alt_state PARAMS ( (alt_state_t  )  [static]

static void print_active_time PARAMS ( (FILE *, ticker_t  )  [static]

static int active_time PARAMS ( (ticker_t  )  [static]

static void ticker_off PARAMS ( (ticker_t *)   )  [static]

static int process_regexp_cycles PARAMS ( (regexp_t, int)   )  [static]

static int loop_in_regexp PARAMS ( (regexp_t, decl_t  )  [static]

static regexp_t process_regexp PARAMS ( (regexp_t  )  [static]

static struct bypass_decl* find_bypass PARAMS ( (struct bypass_decl *, struct insn_reserv_decl *)   )  [static, read]

static void add_presence_absence PARAMS ( (unit_set_el_t, unit_set_el_t, pos_t, int)   )  [static]

static unit_set_el_t process_presence_absence PARAMS ( (char **, int, pos_t, int)   )  [static]

static void add_excls PARAMS ( (unit_set_el_t, unit_set_el_t, pos_t  )  [static]

static void initiate_automaton_decl_table PARAMS ( (void  )  [static, read]

Definition at line 77 of file cplus-dem.c.

static decl_t insert_automaton_decl PARAMS ( (decl_t  )  [static]

static int automaton_decl_eq_p PARAMS ( (const void *, const void *)   )  [static]

static hashval_t automaton_decl_hash PARAMS ( (const void *)   )  [static]

static unsigned string_hash PARAMS ( (const char *)   )  [static]

Definition at line 635 of file mips-tfile.c.

static regexp_t gen_regexp_el PARAMS ( (char *)   )  [static]

static char** get_str_vect PARAMS ( (char *, int *, int, int)   )  [static]

static int n_sep_els PARAMS ( (char *, int, int)   )  [static]

static char* next_sep_el PARAMS ( (char **, int, int)   )  [static]

static char* check_name PARAMS ( (char *, pos_t  )  [static]

static void* copy_node PARAMS ( (const void *, size_t  )  [static]

static void* create_node PARAMS ( (size_t  )  [static]

static int partition_equiv_class ( state_t equiv_class_ptr,
int  odd_iteration_flag,
vla_ptr_t next_iteration_classes,
int *  new_equiv_class_num_ptr 
) [static]

static void pass_state_graph ( state_t  start_state,
applied_func   
) [static]

Definition at line 5787 of file genautomata.c.

References first_out_arc(), next_out_arc(), NULL, and arc::to_state.

Referenced by pass_state_graph(), and pass_states().

static void pass_states ( automaton_t  automaton,
applied_func   
) [static]

static void print_active_time ( FILE f,
ticker_t  ticker 
) [static]

Definition at line 3318 of file genautomata.c.

References active_time(), and fprintf().

Referenced by output_time_statistics(), and write_automata().

static void process_alts_for_forming_states ( regexp_t  regexp,
automaton_t  automaton,
int  inside_oneof_p 
) [static]

static void process_decls ( void   )  [static]

static unit_set_el_t process_excls ( char **  names,
int  num,
excl_pos   
) [static]

static void process_insn_equiv_class ( ainsn_t  ainsn,
arc_t insn_arcs_array 
) [static]

static unit_set_el_t process_presence_absence ( char **  names,
int  num,
req_pos  ,
int  presence_p 
) [static]

static regexp_t process_regexp ( regexp_t  regexp  )  [static]

static int process_regexp_cycles ( regexp_t  regexp,
int  start_cycle 
) [static]

static void process_regexp_decls ( void   )  [static]

static int process_seq_for_forming_states ( regexp_t  regexp,
automaton_t  automaton,
int  curr_cycle 
) [static]

static void process_state_for_insn_equiv_partition ( state_t  state  )  [static]

static void process_state_longest_path_length ( state_t  state  )  [static]

Definition at line 6858 of file genautomata.c.

References longest_path_length().

Referenced by output_dfa_max_issue_rate().

static void process_unit_to_form_the_same_automaton_unit_lists ( regexp_t  unit,
regexp_t  regexp,
int  cycle 
) [static]

static const char* regexp_representation ( regexp_t  regexp  )  [static]

Definition at line 6761 of file genautomata.c.

References form_regexp(), obstack_1grow, and obstack_base.

Referenced by output_print_reservation_func(), and output_regexp().

static regexp_t regexp_transform_func ( regexp_t  regexp,
func   
) [static]

static void remove_arc ( state_t  from_state,
arc_t  arc 
) [static]

Definition at line 4187 of file genautomata.c.

References abort, free_arc(), arc::next_out_arc, and NULL.

Referenced by create_composed_state().

static void remove_state_duplicate_reservs ( void   )  [static]

Definition at line 9015 of file genautomata.c.

References NULL, reserv_sets_cmp(), VLA_PTR_BEGIN, VLA_PTR_LAST, and VLA_PTR_SHORTEN.

Referenced by output_state().

static void reserv_sets_and ( reserv_sets_t  result,
reserv_sets_t  operand_1,
reserv_sets_t  operand_2 
) [static]

Definition at line 3825 of file genautomata.c.

References abort, and NULL.

Referenced by state_shift(), and states_union().

static int reserv_sets_are_intersected ( reserv_sets_t  operand_1,
reserv_sets_t  operand_2 
) [static]

Definition at line 3739 of file genautomata.c.

References abort, get_excl_set(), get_presence_absence_set(), nonzero_p(), and NULL.

Referenced by intersected_state_reservs_p().

static int reserv_sets_cmp ( reserv_sets_t  reservs_1,
reserv_sets_t  reservs_2 
) [static]

Definition at line 3652 of file genautomata.c.

References abort, and NULL.

Referenced by remove_state_duplicate_reservs(), reserv_sets_eq(), and state_reservs_cmp().

static int reserv_sets_eq ( reserv_sets_t  reservs_1,
reserv_sets_t  reservs_2 
) [static]

Definition at line 3681 of file genautomata.c.

References reserv_sets_cmp().

Referenced by state_eq_p().

static unsigned reserv_sets_hash_value ( reserv_sets_t  reservs  )  [static]

Definition at line 3617 of file genautomata.c.

References CHAR_BIT, i, result, and unsigned.

Referenced by state_hash().

static void reserv_sets_or ( reserv_sets_t  result,
reserv_sets_t  operand_1,
reserv_sets_t  operand_2 
) [static]

Definition at line 3806 of file genautomata.c.

References abort, and NULL.

Referenced by reserv_sets_are_intersected(), and states_union().

static void reserv_sets_shift ( reserv_sets_t  result,
reserv_sets_t  operand 
) [static]

Definition at line 3792 of file genautomata.c.

References abort, i, and NULL.

Referenced by state_shift().

static void set_insn_equiv_classes ( automaton_t  automaton  )  [static]

static void set_new_cycle_flags ( state_t  state  )  [static]

static void set_order_state_num ( state_t  state  )  [static]

Definition at line 6249 of file genautomata.c.

Referenced by enumerate_states().

static int set_out_arc_insns_equiv_num ( state_t  state,
int  odd_iteration_flag 
) [static]

static void set_state_reserv ( state_t  state,
int  cycle_num,
int  unit_num 
) [static]

Definition at line 4059 of file genautomata.c.

References set_unit_reserv().

Referenced by process_seq_for_forming_states().

static void set_unit_reserv ( reserv_sets_t  reservs,
int  cycle_num,
int  unit_num 
) [static]

Definition at line 3691 of file genautomata.c.

References abort, CHAR_BIT, and SET_BIT.

Referenced by form_reservs_matter(), and set_state_reserv().

static int state_eq_p ( void state_1,
const void state_2 
) const [static]

Definition at line 4012 of file genautomata.c.

References alt_state::next_sorted_alt_state, NULL, reserv_sets_eq(), and alt_state::state.

Referenced by initiate_states().

static hashval_t state_hash ( void state  )  const [static]

static int state_is_differed ( state_t  state,
int  original_state_out_arcs_num,
int  odd_iteration_flag 
) [static]

static int state_reservs_cmp ( void reservs_ptr_1,
const void reservs_ptr_2 
) const [static]

Definition at line 9004 of file genautomata.c.

References reserv_sets_cmp().

Referenced by output_state().

static state_t state_shift ( state_t  state  )  [static]

static state_t states_union ( state_t  state1,
state_t  state2 
) [static]

static unsigned string_hash ( char *  string  )  const [static]

Definition at line 2078 of file genautomata.c.

References CHAR_BIT, i, and result.

Referenced by automaton_decl_hash(), decl_hash(), and insn_decl_hash().

static int test_unit_reserv ( reserv_sets_t  reservs,
int  cycle_num,
int  unit_num 
) [static]

Definition at line 3705 of file genautomata.c.

References abort, CHAR_BIT, and TEST_BIT.

Referenced by first_cycle_unit_presence(), and output_reserved_units_table().

static void ticker_off ( ticker_t ticker  )  [static]

static void ticker_on ( ticker_t ticker  )  [static]

Definition at line 3278 of file genautomata.c.

References get_run_time().

Referenced by build_automaton(), create_automata(), and write_automata().

static regexp_t transform_1 ( regexp_t  regexp  )  [static]

static regexp_t transform_2 ( regexp_t  regexp  )  [static]

static regexp_t transform_3 ( regexp_t  regexp  )  [static]

static void transform_insn_regexps ( void   )  [static]

static regexp_t transform_regexp ( regexp_t  regexp  )  [static]

Definition at line 5103 of file genautomata.c.

References regexp_transform_func(), transform_1(), transform_2(), and transform_3().

Referenced by transform_insn_regexps().

static alt_state_t uniq_sort_alt_states ( alt_state_t  alt_states_list  )  [static]

static int units_cmp ( void unit1,
void unit2 
) const [static]

Definition at line 8639 of file genautomata.c.

References unit_decl::name, and strcmp().

Referenced by output_get_cpu_unit_code_func().

static void units_to_automata_distr ( void   )  [static]

Definition at line 6563 of file genautomata.c.

References DECL_UNIT, description::decls, description::decls_num, i, decl::mode, and NULL.

Referenced by create_automata().

static void units_to_automata_heuristic_distr ( void   )  [static]

void write_automata ( void   ) 

Definition at line 9645 of file genautomata.c.

Referenced by main().


Variable Documentation

Definition at line 4537 of file genautomata.c.

Definition at line 3366 of file genautomata.c.

Definition at line 5823 of file genautomata.c.

Referenced by evaluate_equiv_classes(), and VEC().

ticker_t all_time [static]

Definition at line 3361 of file genautomata.c.

Referenced by print_time().

int allocated_alt_states_num = 0 [static]

Definition at line 3394 of file genautomata.c.

int allocated_arcs_num = 0 [static]

Definition at line 4173 of file genautomata.c.

int allocated_states_num = 0 [static]

Definition at line 3599 of file genautomata.c.

Definition at line 5351 of file genautomata.c.

Definition at line 4306 of file genautomata.c.

int automata_num [static]

Definition at line 3337 of file genautomata.c.

Definition at line 2130 of file genautomata.c.

Definition at line 3352 of file genautomata.c.

Definition at line 9510 of file genautomata.c.

Referenced by form_important_insn_automata_lists().

ticker_t check_time [static]

Definition at line 3359 of file genautomata.c.

ainsn_t curr_ainsn [static]

Definition at line 5426 of file genautomata.c.

int curr_counted_arcs_num [static]

Definition at line 6176 of file genautomata.c.

Definition at line 6175 of file genautomata.c.

int curr_loop_pass_num [static]

Definition at line 3044 of file genautomata.c.

Definition at line 5782 of file genautomata.c.

int curr_state_order_num [static]

Definition at line 6244 of file genautomata.c.

int curr_state_pass_num [static]

Definition at line 7660 of file genautomata.c.

int curr_unique_state_num [static]

Definition at line 3594 of file genautomata.c.

Definition at line 4303 of file genautomata.c.

htab_t decl_table [static]

Definition at line 2342 of file genautomata.c.

vla_ptr_t decls [static]

int els_in_cycle_reserv [static]

Definition at line 3569 of file genautomata.c.

int els_in_reservs [static]

Definition at line 3575 of file genautomata.c.

Definition at line 3585 of file genautomata.c.

ticker_t equiv_time [static]

Definition at line 3351 of file genautomata.c.

Definition at line 4458 of file genautomata.c.

Definition at line 3389 of file genautomata.c.

Definition at line 4168 of file genautomata.c.

Definition at line 4300 of file genautomata.c.

Definition at line 3592 of file genautomata.c.

Definition at line 3360 of file genautomata.c.

Definition at line 2235 of file genautomata.c.

int locked_states_num [static]

Definition at line 7821 of file genautomata.c.

int max_cycles_num [static]

Definition at line 3564 of file genautomata.c.

int max_dfa_issue_rate [static]

Definition at line 6852 of file genautomata.c.

Definition at line 3350 of file genautomata.c.

ticker_t NDFA_time [static]

Definition at line 3348 of file genautomata.c.

Definition at line 3349 of file genautomata.c.

Definition at line 3353 of file genautomata.c.

Definition at line 4537 of file genautomata.c.

int regexp_transformed_p [static]

Definition at line 4699 of file genautomata.c.

char* reserv_str [static]

Definition at line 1876 of file genautomata.c.

Definition at line 5348 of file genautomata.c.

Definition at line 8928 of file genautomata.c.

Referenced by output_state(), remove_state_duplicate_reservs(), and VEC().

htab_t state_table [static]

Definition at line 3588 of file genautomata.c.

Definition at line 5146 of file genautomata.c.

Definition at line 3347 of file genautomata.c.

Definition at line 7290 of file genautomata.c.

Definition at line 4541 of file genautomata.c.

Definition at line 4461 of file genautomata.c.

Definition at line 4541 of file genautomata.c.

Definition at line 3582 of file genautomata.c.

Definition at line 3579 of file genautomata.c.

Definition at line 2152 of file genautomata.c.

Referenced by find_automaton_decl(), and initiate_automaton_decl_table().

struct decl work_decl [static]

Definition at line 2363<