OSDN Git Service

* config/m68hc11/m68hc11.c (m68hc11_initial_elimination_offset):
[pf3gnuchains/gcc-fork.git] / gcc / config / c4x / c4x-protos.h
1 /* Definitions of target machine for GNU compiler.  TMS320C[34]x
2    Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999
3    Free Software Foundation, Inc.
4
5    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
6               and Herman Ten Brugge (Haj.Ten.Brugge@net.HCC.nl).
7
8    This file is part of GNU CC.
9
10    GNU CC is free software; you can redistribute it and/or modify
11    it under the terms of the GNU General Public License as published by
12    the Free Software Foundation; either version 2, or (at your option)
13    any later version.
14
15    GNU CC is distributed in the hope that it will be useful,
16    but WITHOUT ANY WARRANTY; without even the implied warranty of
17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18    GNU General Public License for more details.
19
20    You should have received a copy of the GNU General Public License
21    along with GNU CC; see the file COPYING.  If not, write to
22    the Free Software Foundation, 59 Temple Place - Suite 330,
23    Boston, MA 02111-1307, USA.  */
24
25 #ifndef GCC_C4X_PROTOS_H
26 #define GCC_C4X_PROTOS_H
27
28 extern void c4x_override_options PARAMS ((void));
29
30 extern void c4x_optimization_options PARAMS ((int, int));
31
32 extern void c4x_output_ascii PARAMS ((FILE *, const char *, int));
33
34 extern int c4x_interrupt_function_p PARAMS ((void));
35
36 extern void c4x_expand_prologue PARAMS ((void));
37
38 extern void c4x_expand_epilogue PARAMS ((void));
39
40 extern int c4x_null_epilogue_p PARAMS ((void));
41
42 extern int c4x_handle_pragma PARAMS ((int (* p_getc) (void),
43                                       void (* p_ungetc) (int),
44                                       char *));
45
46 extern void c4x_global_label (const char *);
47
48 extern void c4x_external_ref (const char *);
49
50 extern void c4x_file_end (FILE *);
51
52 #ifdef TREE_CODE
53 extern void c4x_set_default_attributes PARAMS ((tree, tree *));
54
55 extern void c4x_function_arg_advance PARAMS ((CUMULATIVE_ARGS *, 
56                                               enum machine_mode, tree, int));
57
58 extern struct rtx_def *c4x_function_arg PARAMS ((CUMULATIVE_ARGS *,
59                                                  enum machine_mode, tree,
60                                                  int));
61
62 extern void c4x_encode_section_info PARAMS ((tree));
63
64 #endif /* TREE_CODE */
65
66
67 #if defined(RTX_CODE) && defined(TREE_CODE)
68 extern void c4x_init_cumulative_args PARAMS ((CUMULATIVE_ARGS *c, tree, rtx));
69
70 extern void c4x_va_start PARAMS ((int, tree, rtx));
71
72 extern struct rtx_def *c4x_va_arg PARAMS ((tree, tree));
73
74 extern rtx c4x_expand_builtin PARAMS((tree, rtx, rtx,
75                                       enum machine_mode, int));
76
77 extern void c4x_init_builtins PARAMS((tree));
78
79 #endif /* TREE_CODE and RTX_CODE*/
80
81
82 #ifdef RTX_CODE
83 extern struct rtx_def *c4x_gen_compare_reg PARAMS ((enum rtx_code, rtx, rtx));
84
85 extern int c4x_check_legit_addr PARAMS ((enum machine_mode, rtx, int));
86
87 extern int c4x_hard_regno_mode_ok PARAMS ((unsigned int, enum machine_mode));
88
89 extern int c4x_hard_regno_rename_ok PARAMS ((unsigned int, unsigned int));
90
91 extern struct rtx_def *c4x_legitimize_address PARAMS ((rtx,
92                                                        enum machine_mode));
93
94 extern int c4x_address_cost PARAMS ((rtx));
95
96 extern void c4x_print_operand PARAMS ((FILE *, rtx, int));
97
98 extern void c4x_print_operand_address PARAMS ((FILE *, rtx));
99
100 extern enum reg_class c4x_preferred_reload_class PARAMS ((rtx,
101                                                           enum reg_class));
102
103 extern struct rtx_def *c4x_operand_subword PARAMS ((rtx, int, int,
104                                                    enum machine_mode));
105
106 extern char *c4x_output_cbranch PARAMS ((const char *, rtx));
107
108 extern int c4x_label_conflict PARAMS ((rtx, rtx, rtx));
109
110 extern int c4x_address_conflict PARAMS ((rtx, rtx, int, int));
111
112 extern int c4x_adjust_cost PARAMS ((rtx, rtx, rtx, int));
113
114 extern void c4x_process_after_reload PARAMS ((rtx));
115
116 extern void c4x_rptb_insert PARAMS ((rtx insn));
117
118 extern int c4x_rptb_nop_p PARAMS ((rtx));
119
120 extern int c4x_rptb_rpts_p PARAMS ((rtx, rtx));
121
122 extern int c4x_check_laj_p PARAMS ((rtx));
123
124 extern int c4x_autoinc_operand PARAMS ((rtx, enum machine_mode));
125
126 extern int any_operand PARAMS ((rtx, enum machine_mode));
127
128 extern int fp_zero_operand PARAMS ((rtx, enum machine_mode));
129
130 extern int const_operand PARAMS ((rtx, enum machine_mode));
131
132 extern int stik_const_operand PARAMS ((rtx, enum machine_mode));
133
134 extern int not_const_operand PARAMS ((rtx, enum machine_mode));
135
136 extern int parallel_operand PARAMS ((rtx, enum machine_mode));
137
138 extern int reg_or_const_operand PARAMS ((rtx, enum machine_mode));
139
140 extern int reg_operand PARAMS ((rtx, enum machine_mode));
141
142 extern int mixed_subreg_operand PARAMS ((rtx, enum machine_mode));
143
144 extern int reg_imm_operand PARAMS ((rtx, enum machine_mode));
145
146 extern int r0r1_reg_operand PARAMS ((rtx, enum machine_mode));
147
148 extern int r2r3_reg_operand PARAMS ((rtx, enum machine_mode));
149
150 extern int ext_low_reg_operand PARAMS ((rtx, enum machine_mode));
151
152 extern int ext_reg_operand PARAMS ((rtx, enum machine_mode));
153
154 extern int std_reg_operand PARAMS ((rtx, enum machine_mode));
155
156 extern int std_or_reg_operand PARAMS ((rtx, enum machine_mode));
157
158 extern int dst_operand PARAMS ((rtx, enum machine_mode));
159
160 extern int src_operand PARAMS ((rtx, enum machine_mode));
161
162 extern int src_hi_operand PARAMS ((rtx, enum machine_mode));
163
164 extern int lsrc_operand PARAMS ((rtx, enum machine_mode));
165
166 extern int tsrc_operand PARAMS ((rtx, enum machine_mode));
167
168 extern int addr_reg_operand PARAMS ((rtx, enum machine_mode));
169
170 extern int index_reg_operand PARAMS ((rtx, enum machine_mode));
171
172 extern int dp_reg_operand PARAMS ((rtx, enum machine_mode));
173
174 extern int sp_reg_operand PARAMS ((rtx, enum machine_mode));
175
176 extern int rc_reg_operand PARAMS ((rtx, enum machine_mode));
177
178 extern int st_reg_operand PARAMS ((rtx, enum machine_mode));
179
180 extern int symbolic_address_operand PARAMS ((rtx, enum machine_mode));
181
182 extern int ar0_reg_operand PARAMS ((rtx, enum machine_mode));
183
184 extern int ar0_mem_operand PARAMS ((rtx, enum machine_mode));
185
186 extern int ar1_reg_operand PARAMS ((rtx, enum machine_mode));
187
188 extern int ar1_mem_operand PARAMS ((rtx, enum machine_mode));
189
190 extern int ar2_reg_operand PARAMS ((rtx, enum machine_mode));
191
192 extern int ar2_mem_operand PARAMS ((rtx, enum machine_mode));
193
194 extern int ar3_reg_operand PARAMS ((rtx, enum machine_mode));
195
196 extern int ar3_mem_operand PARAMS ((rtx, enum machine_mode));
197
198 extern int ar4_reg_operand PARAMS ((rtx, enum machine_mode));
199
200 extern int ar4_mem_operand PARAMS ((rtx, enum machine_mode));
201
202 extern int ar5_reg_operand PARAMS ((rtx, enum machine_mode));
203
204 extern int ar5_mem_operand PARAMS ((rtx, enum machine_mode));
205
206 extern int ar6_reg_operand PARAMS ((rtx, enum machine_mode));
207
208 extern int ar6_mem_operand PARAMS ((rtx, enum machine_mode));
209
210 extern int ar7_reg_operand PARAMS ((rtx, enum machine_mode));
211
212 extern int ar7_mem_operand PARAMS ((rtx, enum machine_mode));
213
214 extern int ir0_reg_operand PARAMS ((rtx, enum machine_mode));
215
216 extern int ir0_mem_operand PARAMS ((rtx, enum machine_mode));
217
218 extern int ir1_reg_operand PARAMS ((rtx, enum machine_mode));
219
220 extern int ir1_mem_operand PARAMS ((rtx, enum machine_mode));
221
222 extern int group1_reg_operand PARAMS ((rtx, enum machine_mode));
223
224 extern int group1_mem_operand PARAMS ((rtx, enum machine_mode));
225
226 extern int arx_reg_operand PARAMS ((rtx, enum machine_mode));
227
228 extern int call_address_operand PARAMS ((rtx, enum machine_mode));
229
230 extern int par_ind_operand PARAMS ((rtx, enum machine_mode));
231
232 extern int not_rc_reg PARAMS ((rtx, enum machine_mode));
233
234 extern int not_modify_reg PARAMS ((rtx, enum machine_mode));
235
236 extern int c4x_shiftable_constant PARAMS ((rtx));
237
238 extern int c4x_H_constant PARAMS ((rtx));
239
240 extern int c4x_I_constant PARAMS ((rtx));
241
242 extern int c4x_J_constant PARAMS ((rtx));
243
244 extern int c4x_L_constant PARAMS ((rtx));
245
246 extern int c4x_Q_constraint PARAMS ((rtx));
247
248 extern int c4x_R_constraint PARAMS ((rtx));
249
250 extern int c4x_S_constraint PARAMS ((rtx));
251
252 extern int c4x_T_constraint PARAMS ((rtx));
253
254 extern int c4x_U_constraint PARAMS ((rtx));
255
256 extern void c4x_emit_libcall PARAMS ((rtx, enum rtx_code,
257                                       enum machine_mode,
258                                       enum machine_mode, int, rtx *));
259
260 extern void c4x_emit_libcall3 PARAMS ((rtx, enum rtx_code, 
261                                        enum machine_mode, rtx *));
262
263 extern void c4x_emit_libcall_mulhi PARAMS ((rtx, enum rtx_code,
264                                             enum machine_mode, rtx *));
265
266 extern int c4x_emit_move_sequence PARAMS ((rtx *, enum machine_mode));
267
268 extern int legitimize_operands PARAMS ((enum rtx_code, rtx *, 
269                                         enum machine_mode));
270
271 extern int valid_operands PARAMS ((enum rtx_code, rtx *, enum machine_mode));
272
273 extern int valid_parallel_load_store PARAMS ((rtx *, enum machine_mode));
274
275 extern int valid_parallel_operands_4 PARAMS ((rtx *, enum machine_mode));
276
277 extern int valid_parallel_operands_5 PARAMS ((rtx *, enum machine_mode));
278
279 extern int valid_parallel_operands_6 PARAMS ((rtx *, enum machine_mode));
280
281 extern rtx smulhi3_libfunc;
282 extern rtx umulhi3_libfunc;
283 extern rtx fix_truncqfhi2_libfunc;
284 extern rtx fixuns_truncqfhi2_libfunc;
285 extern rtx fix_trunchfhi2_libfunc;
286 extern rtx fixuns_trunchfhi2_libfunc;
287 extern rtx floathiqf2_libfunc;
288 extern rtx floatunshiqf2_libfunc;
289 extern rtx floathihf2_libfunc;
290 extern rtx floatunshihf2_libfunc;
291
292 extern struct rtx_def *c4x_compare_op0; /* Operand 0 for comparisons.  */
293 extern struct rtx_def *c4x_compare_op1; /* Operand 1 for comparisons.  */
294
295 #endif /* RTX_CODE */
296
297 /* Smallest class containing REGNO.  */
298 extern enum reg_class c4x_regclass_map[];
299 extern enum machine_mode c4x_caller_save_map[];
300
301 extern int c4x_rpts_cycles;             /* Max cycles for RPTS.  */
302 extern int c4x_cpu_version;             /* Cpu version C30/31/32/40/44.  */
303
304 #ifdef GCC_C_PRAGMA_H
305 extern void c4x_pr_CODE_SECTION         PARAMS ((cpp_reader *));
306 extern void c4x_pr_DATA_SECTION         PARAMS ((cpp_reader *));
307 extern void c4x_pr_FUNC_IS_PURE         PARAMS ((cpp_reader *));
308 extern void c4x_pr_FUNC_NEVER_RETURNS   PARAMS ((cpp_reader *));
309 extern void c4x_pr_INTERRUPT            PARAMS ((cpp_reader *));
310 extern void c4x_pr_ignored              PARAMS ((cpp_reader *));
311 extern void c4x_init_pragma             PARAMS ((int (*) (tree *)));
312 #endif
313
314 #endif /* ! GCC_C4X_PROTOS_H */