/* Generated automatically by the program `genattr'
from the machine description file `md'.  */

#define HAVE_ATTR_alternative
#define get_attr_alternative(insn) which_alternative
#define HAVE_ATTR_type
enum attr_type {TYPE_INTEGER, TYPE_LOAD, TYPE_STORE, TYPE_FPLOAD, TYPE_FPSTORE, TYPE_IMUL, TYPE_IDIV, TYPE_BRANCH, TYPE_COMPARE, TYPE_DELAYED_COMPARE, TYPE_FPCOMPARE, TYPE_MTJMPR, TYPE_FP, TYPE_DMUL, TYPE_SDIV, TYPE_DDIV, TYPE_SSQRT, TYPE_DSQRT, TYPE_JMPREG};
extern enum attr_type get_attr_type ();

#define HAVE_ATTR_length
extern int get_attr_length ();
extern void init_lengths ();
extern void shorten_branches PROTO((rtx));
extern int insn_default_length PROTO((rtx));
extern int insn_variable_length_p PROTO((rtx));
extern int insn_current_length PROTO((rtx));

extern int *insn_addresses;
extern int insn_current_address;

#define HAVE_ATTR_cpu
enum attr_cpu {CPU_RIOS1, CPU_RIOS2, CPU_MPCCORE, CPU_PPC403, CPU_PPC601, CPU_PPC603, CPU_PPC604, CPU_PPC604E, CPU_PPC620, CPU_PPC750};
extern enum attr_cpu get_attr_cpu ();

#define INSN_SCHEDULING

extern int result_ready_cost PROTO((rtx));
extern int function_units_used PROTO((rtx));

extern struct function_unit_desc
{
  char *name;
  int bitmask;
  int multiplicity;
  int simultaneity;
  int default_cost;
  int max_issue_delay;
  int (*ready_cost_function) ();
  int (*conflict_cost_function) ();
  int max_blockage;
  unsigned int (*blockage_range_function) ();
  int (*blockage_function) ();
} function_units[];

#define FUNCTION_UNITS_SIZE 7
#define MIN_MULTIPLICITY 1
#define MAX_MULTIPLICITY 2
#define MIN_SIMULTANEITY 0
#define MAX_SIMULTANEITY 0
#define MIN_READY_COST 1
#define MAX_READY_COST 37
#define MIN_ISSUE_DELAY 1
#define MAX_ISSUE_DELAY 36
#define MIN_BLOCKAGE 1
#define MAX_BLOCKAGE 37
#define BLOCKAGE_BITS 7
#define INSN_QUEUE_SIZE 64

#define ATTR_FLAG_forward	0x1
#define ATTR_FLAG_backward	0x2
#define ATTR_FLAG_likely	0x4
#define ATTR_FLAG_very_likely	0x8
#define ATTR_FLAG_unlikely	0x10
#define ATTR_FLAG_very_unlikely	0x20
