00001
00002
00003
00004 #ifndef GCC_INSN_ATTR_H
00005 #define GCC_INSN_ATTR_H
00006
00007 #define HAVE_ATTR_alternative
00008 #define get_attr_alternative(insn) which_alternative
00009 #define HAVE_ATTR_itanium_class
00010 enum attr_itanium_class {ITANIUM_CLASS_UNKNOWN, ITANIUM_CLASS_IGNORE, ITANIUM_CLASS_STOP_BIT, ITANIUM_CLASS_BR, ITANIUM_CLASS_FCMP, ITANIUM_CLASS_FCVTFX, ITANIUM_CLASS_FLD, ITANIUM_CLASS_FMAC, ITANIUM_CLASS_FMISC, ITANIUM_CLASS_FRAR_I, ITANIUM_CLASS_FRAR_M, ITANIUM_CLASS_FRBR, ITANIUM_CLASS_FRFR, ITANIUM_CLASS_FRPR, ITANIUM_CLASS_IALU, ITANIUM_CLASS_ICMP, ITANIUM_CLASS_ILOG, ITANIUM_CLASS_ISHF, ITANIUM_CLASS_LD, ITANIUM_CLASS_CHK_S, ITANIUM_CLASS_LONG_I, ITANIUM_CLASS_MMMUL, ITANIUM_CLASS_MMSHF, ITANIUM_CLASS_MMSHFI, ITANIUM_CLASS_RSE_M, ITANIUM_CLASS_SCALL, ITANIUM_CLASS_SEM, ITANIUM_CLASS_STF, ITANIUM_CLASS_ST, ITANIUM_CLASS_SYST_M0, ITANIUM_CLASS_SYST_M, ITANIUM_CLASS_TBIT, ITANIUM_CLASS_TOAR_I, ITANIUM_CLASS_TOAR_M, ITANIUM_CLASS_TOBR, ITANIUM_CLASS_TOFR, ITANIUM_CLASS_TOPR, ITANIUM_CLASS_XMPY, ITANIUM_CLASS_XTD, ITANIUM_CLASS_NOP_B, ITANIUM_CLASS_NOP_F, ITANIUM_CLASS_NOP_I, ITANIUM_CLASS_NOP_M, ITANIUM_CLASS_NOP_X, ITANIUM_CLASS_LFETCH};
00011 extern enum attr_itanium_class get_attr_itanium_class PARAMS ((rtx));
00012
00013 #define HAVE_ATTR_type
00014 enum attr_type {TYPE_UNKNOWN, TYPE_A, TYPE_I, TYPE_M, TYPE_F, TYPE_B, TYPE_L, TYPE_X, TYPE_S};
00015 extern enum attr_type get_attr_type PARAMS ((rtx));
00016
00017 #define HAVE_ATTR_itanium_requires_unit0
00018 enum attr_itanium_requires_unit0 {ITANIUM_REQUIRES_UNIT0_NO, ITANIUM_REQUIRES_UNIT0_YES};
00019 extern enum attr_itanium_requires_unit0 get_attr_itanium_requires_unit0 PARAMS ((rtx));
00020
00021 #define HAVE_ATTR_predicable
00022 enum attr_predicable {PREDICABLE_NO, PREDICABLE_YES};
00023 extern enum attr_predicable get_attr_predicable PARAMS ((rtx));
00024
00025 #define TRADITIONAL_PIPELINE_INTERFACE 1
00026 #define INSN_SCHEDULING
00027
00028 extern int result_ready_cost PARAMS ((rtx));
00029 extern int function_units_used PARAMS ((rtx));
00030
00031 extern const struct function_unit_desc
00032 {
00033 const char *const name;
00034 const int bitmask;
00035 const int multiplicity;
00036 const int simultaneity;
00037 const int default_cost;
00038 const int max_issue_delay;
00039 int (*const ready_cost_function) PARAMS ((rtx));
00040 int (*const conflict_cost_function) PARAMS ((rtx, rtx));
00041 const int max_blockage;
00042 unsigned int (*const blockage_range_function) PARAMS ((rtx));
00043 int (*const blockage_function) PARAMS ((rtx, rtx));
00044 } function_units[];
00045
00046 #define FUNCTION_UNITS_SIZE 2
00047 #define MIN_MULTIPLICITY 1
00048 #define MAX_MULTIPLICITY 6
00049 #define MIN_SIMULTANEITY 1
00050 #define MAX_SIMULTANEITY 1
00051 #define MIN_READY_COST 1
00052 #define MAX_READY_COST 13
00053 #define MIN_ISSUE_DELAY 1
00054 #define MAX_ISSUE_DELAY 1
00055 #define MIN_BLOCKAGE 1
00056 #define MAX_BLOCKAGE 13
00057 #define BLOCKAGE_BITS 5
00058 #define INSN_QUEUE_SIZE 16
00059
00060
00061 #ifndef AUTOMATON_STATE_ALTS
00062 #define AUTOMATON_STATE_ALTS 0
00063 #endif
00064
00065 #ifndef CPU_UNITS_QUERY
00066 #define CPU_UNITS_QUERY 0
00067 #endif
00068
00069 extern int max_dfa_issue_rate;
00070
00071
00072
00073
00074
00075
00076 #define MAX_DFA_ISSUE_RATE max_dfa_issue_rate
00077
00078
00079 extern int insn_default_latency PARAMS ((rtx));
00080
00081
00082
00083 extern int bypass_p PARAMS ((rtx));
00084
00085
00086
00087
00088 extern int insn_latency PARAMS ((rtx, rtx));
00089
00090
00091
00092
00093 extern int insn_alts PARAMS ((rtx));
00094
00095
00096
00097 extern int max_insn_queue_index;
00098
00099
00100 typedef void *state_t;
00101
00102
00103 extern int state_size PARAMS ((void));
00104
00105
00106
00107 extern void state_reset PARAMS ((state_t));
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117 extern int state_transition PARAMS ((state_t, rtx));
00118
00119 #if AUTOMATON_STATE_ALTS
00120
00121
00122
00123
00124
00125
00126 extern int state_alts PARAMS ((state_t, rtx));
00127 #endif
00128
00129 extern int min_issue_delay PARAMS ((state_t, rtx));
00130
00131
00132 extern int state_dead_lock_p PARAMS ((state_t));
00133
00134
00135
00136
00137
00138
00139 extern int min_insn_conflict_delay PARAMS ((state_t, rtx, rtx));
00140
00141
00142
00143 extern void print_reservation PARAMS ((FILE *, rtx));
00144
00145 #if CPU_UNITS_QUERY
00146
00147
00148 extern int get_cpu_unit_code PARAMS ((const char *));
00149
00150
00151
00152 extern int cpu_unit_reservation_p PARAMS ((state_t, int));
00153 #endif
00154
00155
00156
00157
00158 extern void dfa_start PARAMS ((void));
00159 extern void dfa_finish PARAMS ((void));
00160
00161 #define ATTR_FLAG_forward 0x1
00162 #define ATTR_FLAG_backward 0x2
00163 #define ATTR_FLAG_likely 0x4
00164 #define ATTR_FLAG_very_likely 0x8
00165 #define ATTR_FLAG_unlikely 0x10
00166 #define ATTR_FLAG_very_unlikely 0x20
00167
00168 #endif