1 /* Definitions of target machine for GNU compiler. TMS320C[34]x
2 Copyright (C) 1994-98, 1999 Free Software Foundation, Inc.
4 Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
5 and Herman Ten Brugge (Haj.Ten.Brugge@net.HCC.nl).
7 This file is part of GNU CC.
9 GNU CC is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
14 GNU CC is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with GNU CC; see the file COPYING. If not, write to
21 the Free Software Foundation, 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
24 extern void c4x_override_options
PARAMS ((void));
26 extern void c4x_optimization_options
PARAMS ((int, int));
28 extern void c4x_output_ascii
PARAMS ((FILE *, const char *, int));
30 extern void c4x_function_prologue
PARAMS ((FILE *, int));
32 extern void c4x_function_epilogue
PARAMS ((FILE *, int));
34 extern int c4x_null_epilogue_p
PARAMS ((void));
36 extern int c4x_handle_pragma
PARAMS ((int (* p_getc
) (void),
37 void (* p_ungetc
) (int),
41 extern void c4x_set_default_attributes
PARAMS ((tree
, tree
*));
43 extern void c4x_function_arg_advance
PARAMS ((CUMULATIVE_ARGS
*,
44 enum machine_mode
, tree
, int));
46 extern struct rtx_def
*c4x_function_arg
PARAMS ((CUMULATIVE_ARGS
*,
47 enum machine_mode
, tree
,
50 extern void c4x_encode_section_info
PARAMS ((tree
));
51 #endif /* TREE_CODE */
54 #if defined(RTX_CODE) && defined(TREE_CODE)
55 extern void c4x_init_cumulative_args
PARAMS ((CUMULATIVE_ARGS
*c
, tree
, rtx
));
57 extern void c4x_va_start
PARAMS ((int, tree
, rtx
));
59 extern struct rtx_def
*c4x_va_arg
PARAMS ((tree
, tree
));
60 #endif /* TREE_CODE and RTX_CODE*/
64 extern struct rtx_def
*c4x_gen_compare_reg
PARAMS ((enum rtx_code
, rtx
, rtx
));
66 extern int c4x_check_legit_addr
PARAMS ((enum machine_mode
, rtx
, int));
68 extern struct rtx_def
*c4x_legitimize_address
PARAMS ((rtx
,
71 extern struct rtx_def
*c4x_legitimize_reload_address
PARAMS ((rtx
, enum machine_mode
, rtx
));
73 extern int c4x_address_cost
PARAMS ((rtx
));
75 extern void c4x_print_operand
PARAMS ((FILE *, rtx
, int));
77 extern void c4x_print_operand_address
PARAMS ((FILE *, rtx
));
79 extern enum reg_class c4x_preferred_reload_class
PARAMS ((rtx
,
82 extern struct rtx_def
*c4x_operand_subword
PARAMS ((rtx
, int, int,
85 extern char *c4x_output_cbranch
PARAMS ((char *, rtx
));
87 extern int c4x_label_conflict
PARAMS ((rtx
, rtx
, rtx
));
89 extern int c4x_address_conflict
PARAMS ((rtx
, rtx
, int, int));
91 extern int c4x_adjust_cost
PARAMS ((rtx
, rtx
, rtx
, int));
93 extern void c4x_process_after_reload
PARAMS ((rtx
));
95 extern int c4x_rptb_nop_p
PARAMS ((rtx
));
97 extern int c4x_rptb_rpts_p
PARAMS ((rtx
, rtx
));
99 extern int c4x_autoinc_operand
PARAMS ((rtx
, enum machine_mode
));
101 extern int fp_zero_operand
PARAMS ((rtx
, enum machine_mode
));
103 extern int const_operand
PARAMS ((rtx
, enum machine_mode
));
105 extern int stik_const_operand
PARAMS ((rtx
, enum machine_mode
));
107 extern int not_const_operand
PARAMS ((rtx
, enum machine_mode
));
109 extern int parallel_operand
PARAMS ((rtx
, enum machine_mode
));
111 extern int reg_or_const_operand
PARAMS ((rtx
, enum machine_mode
));
113 extern int reg_operand
PARAMS ((rtx
, enum machine_mode
));
115 extern int mixed_subreg_operand
PARAMS ((rtx
, enum machine_mode
));
117 extern int reg_imm_operand
PARAMS ((rtx
, enum machine_mode
));
119 extern int r0r1_reg_operand
PARAMS ((rtx
, enum machine_mode
));
121 extern int r2r3_reg_operand
PARAMS ((rtx
, enum machine_mode
));
123 extern int ext_low_reg_operand
PARAMS ((rtx
, enum machine_mode
));
125 extern int ext_reg_operand
PARAMS ((rtx
, enum machine_mode
));
127 extern int std_reg_operand
PARAMS ((rtx
, enum machine_mode
));
129 extern int dst_operand
PARAMS ((rtx
, enum machine_mode
));
131 extern int src_operand
PARAMS ((rtx
, enum machine_mode
));
133 extern int src_hi_operand
PARAMS ((rtx
, enum machine_mode
));
135 extern int lsrc_operand
PARAMS ((rtx
, enum machine_mode
));
137 extern int tsrc_operand
PARAMS ((rtx
, enum machine_mode
));
139 extern int addr_reg_operand
PARAMS ((rtx
, enum machine_mode
));
141 extern int index_reg_operand
PARAMS ((rtx
, enum machine_mode
));
143 extern int dp_reg_operand
PARAMS ((rtx
, enum machine_mode
));
145 extern int sp_reg_operand
PARAMS ((rtx
, enum machine_mode
));
147 extern int rc_reg_operand
PARAMS ((rtx
, enum machine_mode
));
149 extern int st_reg_operand
PARAMS ((rtx
, enum machine_mode
));
151 extern int symbolic_address_operand
PARAMS ((rtx
, enum machine_mode
));
153 extern int ar0_reg_operand
PARAMS ((rtx
, enum machine_mode
));
155 extern int ar0_mem_operand
PARAMS ((rtx
, enum machine_mode
));
157 extern int ar1_reg_operand
PARAMS ((rtx
, enum machine_mode
));
159 extern int ar1_mem_operand
PARAMS ((rtx
, enum machine_mode
));
161 extern int ar2_reg_operand
PARAMS ((rtx
, enum machine_mode
));
163 extern int ar2_mem_operand
PARAMS ((rtx
, enum machine_mode
));
165 extern int ar3_reg_operand
PARAMS ((rtx
, enum machine_mode
));
167 extern int ar3_mem_operand
PARAMS ((rtx
, enum machine_mode
));
169 extern int ar4_reg_operand
PARAMS ((rtx
, enum machine_mode
));
171 extern int ar4_mem_operand
PARAMS ((rtx
, enum machine_mode
));
173 extern int ar5_reg_operand
PARAMS ((rtx
, enum machine_mode
));
175 extern int ar5_mem_operand
PARAMS ((rtx
, enum machine_mode
));
177 extern int ar6_reg_operand
PARAMS ((rtx
, enum machine_mode
));
179 extern int ar6_mem_operand
PARAMS ((rtx
, enum machine_mode
));
181 extern int ar7_reg_operand
PARAMS ((rtx
, enum machine_mode
));
183 extern int ar7_mem_operand
PARAMS ((rtx
, enum machine_mode
));
185 extern int ir0_reg_operand
PARAMS ((rtx
, enum machine_mode
));
187 extern int ir0_mem_operand
PARAMS ((rtx
, enum machine_mode
));
189 extern int ir1_reg_operand
PARAMS ((rtx
, enum machine_mode
));
191 extern int ir1_mem_operand
PARAMS ((rtx
, enum machine_mode
));
193 extern int group1_reg_operand
PARAMS ((rtx
, enum machine_mode
));
195 extern int group1_mem_operand
PARAMS ((rtx
, enum machine_mode
));
197 extern int arx_reg_operand
PARAMS ((rtx
, enum machine_mode
));
199 extern int call_address_operand
PARAMS ((rtx
, enum machine_mode
));
201 extern int par_ind_operand
PARAMS ((rtx
, enum machine_mode
));
203 extern int not_rc_reg
PARAMS ((rtx
, enum machine_mode
));
205 extern int not_modify_reg
PARAMS ((rtx
, enum machine_mode
));
207 extern int c4x_shiftable_constant
PARAMS ((rtx
));
209 extern int c4x_H_constant
PARAMS ((rtx
));
211 extern int c4x_I_constant
PARAMS ((rtx
));
213 extern int c4x_J_constant
PARAMS ((rtx
));
215 extern int c4x_L_constant
PARAMS ((rtx
));
217 extern int c4x_Q_constraint
PARAMS ((rtx
));
219 extern int c4x_R_constraint
PARAMS ((rtx
));
221 extern int c4x_S_constraint
PARAMS ((rtx
));
223 extern int c4x_T_constraint
PARAMS ((rtx
));
225 extern int c4x_U_constraint
PARAMS ((rtx
));
227 extern void c4x_emit_libcall
PARAMS ((const char *, enum rtx_code
,
229 enum machine_mode
, int, rtx
*));
231 extern void c4x_emit_libcall3
PARAMS ((const char *, enum rtx_code
,
232 enum machine_mode
, rtx
*));
234 extern void c4x_emit_libcall_mulhi
PARAMS ((char *, enum rtx_code
,
235 enum machine_mode
, rtx
*));
237 extern int c4x_emit_move_sequence
PARAMS ((rtx
*, enum machine_mode
));
239 extern int legitimize_operands
PARAMS ((enum rtx_code
, rtx
*,
242 extern int valid_operands
PARAMS ((enum rtx_code
, rtx
*, enum machine_mode
));
244 extern int valid_parallel_load_store
PARAMS ((rtx
*, enum machine_mode
));
246 extern int valid_parallel_operands_4
PARAMS ((rtx
*, enum machine_mode
));
248 extern int valid_parallel_operands_5
PARAMS ((rtx
*, enum machine_mode
));
250 extern int valid_parallel_operands_6
PARAMS ((rtx
*, enum machine_mode
));
252 #endif /* RTX_CODE */