
void show_instructions (struct instruction *instructions);
void initialize_linearization (VOID);
void evaluate_arguments_and_free_addresses (union instruction_parameter arguments[],int n_arguments);
void get_n_virtual_registers (int *n_virtual_a_regs_p,int *n_virtual_d_regs_p,int *n_virtual_f_regs_p);
void calculate_and_linearize_branch_false (LABEL *label,INSTRUCTION_GRAPH graph);
void calculate_and_linearize_branch_true (LABEL *label,INSTRUCTION_GRAPH graph);
void calculate_and_linearize_graph (INSTRUCTION_GRAPH graph);

void free_all_aregisters (VOID);
void free_all_dregisters (VOID);
void free_all_fregisters (VOID);
void allocate_aregister (int aregister);
void allocate_dregister (int dregister);
void allocate_fregister (int fregister);
#ifdef M68000
void instruction_pd (int instruction_code,int register_1);
#endif
void i_jmp_l (LABEL *label,int n_a_registers);
void i_jmp_id (int offset_1,int register_1,int n_a_registers);
#if ! (defined (sparc) || defined (G_POWER))
	void i_jsr_id (int offset,int register_1,int n_a_registers);
	void i_jsr_l (LABEL *label,int n_a_registers);
	void i_rts (void);
# ifdef I486
	void i_rts_i (int offset);
	void i_rts_profile (void);
	void i_jmp_r_profile (int a_reg);
	void i_jmp_l_profile (LABEL *label,int offset);
	void i_jmp_id_profile (int offset_1,int register_1,int n_a_registers);
# endif
#else
	void i_jsr_id_id (int offset_1,int register_1,int offset_2);
	void i_jsr_l_id (LABEL *label,int offset);
	void i_rts (int offset_1,int offset_2);
# ifdef G_POWER
		void i_rts_c (void);
		void i_rts_r (int register1,int offset_1);
		void i_rts_r_profile (int register1,int offset_1);
		void i_jmp_l_profile (LABEL *label,int offset);
		void i_jmp_id_profile (int offset_1,int register_1,int n_a_registers);
		void i_rts_profile (int offset_1,int offset_2);
		void i_jsr_id_idu (int offset_1,int register_1,int offset_2);
		void i_jsr_l_idu (LABEL *label,int offset);
# endif
#endif
#if defined (sparc)
	void i_call_l (LABEL *label);
	void i_call_r (int register_1);
#elif defined (G_POWER)
	void i_call_l (LABEL *label,int frame_size);
	void i_call_r (int register_1,int frame_size);
#endif
void i_beq_l (LABEL *label);
#ifdef M68000
	extern LONG *i_bmi_i (VOID);
	void i_bmi_l (LABEL *label);
#endif
#ifdef G_POWER
	void i_and_i_r (LONG value,int register_1);
	void i_bnep_l (LABEL *label);
	void i_or_i_r (LONG value,int register_1);
	void i_mtctr (int register_1);
#endif
#if defined (sparc) || defined (I486) || defined (G_POWER)
	void i_btst_i_r (LONG i,int register_1);
#endif
void i_ext_r (int register_1);
void i_fmove_fr_fr (int register_1,int register_2);
void i_fmove_fr_id (int register_1,int offset,int register_2);
#ifdef M68000
	void i_fmove_fr_pd (int register_1,int register_2);
	void i_fmove_fr_pi (int register_1,int register_2);
#endif
void i_fmove_id_fr (int offset,int register_2,int register_1);
#ifdef M68000
	void i_fmove_pd_fr (int register_1,int register_2);
	void i_fmove_pi_fr (int register_1,int register_2);
	void i_move_id_pd (int offset,int register_1,int register_2);
#endif
void i_move_id_id (int offset_1,int register_1,int offset_2,int register_2);
void i_move_id_r (int offset,int register_1,int register_2);
#ifdef G_POWER
	void i_move_idu_r (int offset,int register_1,int register_2);
	void i_move_id_idu (int offset1,int register_1,int offset2,int register_2);
	void i_move_r_idu (int register_1,int offset,int register_2);
	void i_movew_id_idu (int offset1,int register_1,int offset2,int register_2);
	void i_movew_r_idu (int register_1,int offset,int register_2);
#endif
void i_move_i_r (LONG i,int register_1);
void i_move_l_r (LABEL *label,int register_1);
#ifdef M68000
void i_move_pi_id (int register_1,int offset_2,int register_2);
void i_move_pi_r (int register_1,int register_2);
void i_move_pd_r (int register_1,int register_2);
#endif
#if defined (I486)
	void i_move_r_l (int register_1,LABEL *label);
#endif
void i_move_r_id (int register_1,int offset,int register_2);
#ifdef M68000
void i_move_r_pd (int register_1,int register_2);
void i_move_r_pi (int register_1,int register_2);
#endif
void i_move_r_r (int register_1,int register_2);
#ifdef M68000
void i_movem_pd (int register_1,int n_arguments,int arguments[]);
void i_movem_pi (int register_1,int n_arguments,int arguments[]);
void i_movem_id_r (int offset,int register_1,int register_2);
void i_movew_id_pd (int offset_1,int register_1,int register_2);
void i_movew_pi_id (int register_1,int offset_2,int register_2);
void i_movew_pi_r (int register_1,int register_2);
void i_movew_r_pd (int register_1,int register_2);
#endif
void i_movew_id_r (int offset,int register_1,int register_2);
void i_lea_id_r (int offset,int register_1,int register_2);
void i_lea_l_i_r (LABEL *label,int offset,int register_1);
void i_add_i_r (LONG value,int register_1);
void i_add_r_r (int register_1,int register_2);
void i_schedule_i (int value);
void i_sub_i_r (LONG value,int register_1);
void i_tst_r (int register_1);
void i_word_i (int value);

extern int local_data_offset;
extern int condition_to_set_instruction[];
