]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/c4x/c4x-protos.h
Merge from pch-branch up to tag pch-commit-20020603.
[thirdparty/gcc.git] / gcc / config / c4x / c4x-protos.h
CommitLineData
27529606 1/* Definitions of target machine for GNU compiler. TMS320C[34]x
71d5e3f0 2 Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999
3 Free Software Foundation, Inc.
27529606 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
1fcd08b1 25#ifndef GCC_C4X_PROTOS_H
26#define GCC_C4X_PROTOS_H
27
27529606 28extern void c4x_override_options PARAMS ((void));
29
30extern void c4x_optimization_options PARAMS ((int, int));
31
32extern void c4x_output_ascii PARAMS ((FILE *, const char *, int));
33
5f21b6cd 34extern int c4x_interrupt_function_p PARAMS ((void));
27529606 35
5f21b6cd 36extern void c4x_expand_prologue PARAMS ((void));
37
38extern void c4x_expand_epilogue PARAMS ((void));
27529606 39
40extern int c4x_null_epilogue_p PARAMS ((void));
41
dc9a8d76 42extern void c4x_global_label (const char *);
d26296cf 43
dc9a8d76 44extern void c4x_external_ref (const char *);
d26296cf 45
46extern void c4x_file_end (FILE *);
47
27529606 48#ifdef TREE_CODE
27529606 49extern void c4x_function_arg_advance PARAMS ((CUMULATIVE_ARGS *,
50 enum machine_mode, tree, int));
51
52extern struct rtx_def *c4x_function_arg PARAMS ((CUMULATIVE_ARGS *,
53 enum machine_mode, tree,
54 int));
55
27529606 56#endif /* TREE_CODE */
57
58
59#if defined(RTX_CODE) && defined(TREE_CODE)
60extern void c4x_init_cumulative_args PARAMS ((CUMULATIVE_ARGS *c, tree, rtx));
61
62extern void c4x_va_start PARAMS ((int, tree, rtx));
63
64extern struct rtx_def *c4x_va_arg PARAMS ((tree, tree));
ee212a99 65
fc2a2dcb 66extern rtx c4x_expand_builtin PARAMS ((tree, rtx, rtx,
67 enum machine_mode, int));
dd78529e 68
fc2a2dcb 69extern void c4x_init_builtins PARAMS ((void));
dd78529e 70
27529606 71#endif /* TREE_CODE and RTX_CODE*/
72
73
74#ifdef RTX_CODE
75extern struct rtx_def *c4x_gen_compare_reg PARAMS ((enum rtx_code, rtx, rtx));
76
77extern int c4x_check_legit_addr PARAMS ((enum machine_mode, rtx, int));
78
5f21b6cd 79extern int c4x_hard_regno_mode_ok PARAMS ((unsigned int, enum machine_mode));
792db0c2 80
f67ce828 81extern int c4x_hard_regno_rename_ok PARAMS ((unsigned int, unsigned int));
82
27529606 83extern struct rtx_def *c4x_legitimize_address PARAMS ((rtx,
84 enum machine_mode));
85
27529606 86extern int c4x_address_cost PARAMS ((rtx));
87
88extern void c4x_print_operand PARAMS ((FILE *, rtx, int));
89
90extern void c4x_print_operand_address PARAMS ((FILE *, rtx));
91
92extern enum reg_class c4x_preferred_reload_class PARAMS ((rtx,
93 enum reg_class));
94
95extern struct rtx_def *c4x_operand_subword PARAMS ((rtx, int, int,
96 enum machine_mode));
97
5f21b6cd 98extern char *c4x_output_cbranch PARAMS ((const char *, rtx));
27529606 99
100extern int c4x_label_conflict PARAMS ((rtx, rtx, rtx));
101
102extern int c4x_address_conflict PARAMS ((rtx, rtx, int, int));
103
27529606 104extern void c4x_process_after_reload PARAMS ((rtx));
105
5f21b6cd 106extern void c4x_rptb_insert PARAMS ((rtx insn));
107
27529606 108extern int c4x_rptb_nop_p PARAMS ((rtx));
109
110extern int c4x_rptb_rpts_p PARAMS ((rtx, rtx));
111
7b0df2aa 112extern int c4x_check_laj_p PARAMS ((rtx));
113
27529606 114extern int c4x_autoinc_operand PARAMS ((rtx, enum machine_mode));
115
5f21b6cd 116extern int any_operand PARAMS ((rtx, enum machine_mode));
117
27529606 118extern int fp_zero_operand PARAMS ((rtx, enum machine_mode));
119
120extern int const_operand PARAMS ((rtx, enum machine_mode));
121
122extern int stik_const_operand PARAMS ((rtx, enum machine_mode));
123
124extern int not_const_operand PARAMS ((rtx, enum machine_mode));
125
126extern int parallel_operand PARAMS ((rtx, enum machine_mode));
127
128extern int reg_or_const_operand PARAMS ((rtx, enum machine_mode));
129
130extern int reg_operand PARAMS ((rtx, enum machine_mode));
131
132extern int mixed_subreg_operand PARAMS ((rtx, enum machine_mode));
133
134extern int reg_imm_operand PARAMS ((rtx, enum machine_mode));
135
136extern int r0r1_reg_operand PARAMS ((rtx, enum machine_mode));
137
138extern int r2r3_reg_operand PARAMS ((rtx, enum machine_mode));
139
140extern int ext_low_reg_operand PARAMS ((rtx, enum machine_mode));
141
142extern int ext_reg_operand PARAMS ((rtx, enum machine_mode));
143
144extern int std_reg_operand PARAMS ((rtx, enum machine_mode));
145
e877bdb9 146extern int std_or_reg_operand PARAMS ((rtx, enum machine_mode));
147
27529606 148extern int dst_operand PARAMS ((rtx, enum machine_mode));
149
150extern int src_operand PARAMS ((rtx, enum machine_mode));
151
152extern int src_hi_operand PARAMS ((rtx, enum machine_mode));
153
154extern int lsrc_operand PARAMS ((rtx, enum machine_mode));
155
156extern int tsrc_operand PARAMS ((rtx, enum machine_mode));
157
ffb0737e 158extern int nonimmediate_src_operand PARAMS ((rtx, enum machine_mode));
159
160extern int nonimmediate_lsrc_operand PARAMS ((rtx, enum machine_mode));
161
27529606 162extern int addr_reg_operand PARAMS ((rtx, enum machine_mode));
163
164extern int index_reg_operand PARAMS ((rtx, enum machine_mode));
165
166extern int dp_reg_operand PARAMS ((rtx, enum machine_mode));
167
168extern int sp_reg_operand PARAMS ((rtx, enum machine_mode));
169
170extern int rc_reg_operand PARAMS ((rtx, enum machine_mode));
171
172extern int st_reg_operand PARAMS ((rtx, enum machine_mode));
173
174extern int symbolic_address_operand PARAMS ((rtx, enum machine_mode));
175
176extern int ar0_reg_operand PARAMS ((rtx, enum machine_mode));
177
178extern int ar0_mem_operand PARAMS ((rtx, enum machine_mode));
179
180extern int ar1_reg_operand PARAMS ((rtx, enum machine_mode));
181
182extern int ar1_mem_operand PARAMS ((rtx, enum machine_mode));
183
184extern int ar2_reg_operand PARAMS ((rtx, enum machine_mode));
185
186extern int ar2_mem_operand PARAMS ((rtx, enum machine_mode));
187
188extern int ar3_reg_operand PARAMS ((rtx, enum machine_mode));
189
190extern int ar3_mem_operand PARAMS ((rtx, enum machine_mode));
191
192extern int ar4_reg_operand PARAMS ((rtx, enum machine_mode));
193
194extern int ar4_mem_operand PARAMS ((rtx, enum machine_mode));
195
196extern int ar5_reg_operand PARAMS ((rtx, enum machine_mode));
197
198extern int ar5_mem_operand PARAMS ((rtx, enum machine_mode));
199
200extern int ar6_reg_operand PARAMS ((rtx, enum machine_mode));
201
202extern int ar6_mem_operand PARAMS ((rtx, enum machine_mode));
203
204extern int ar7_reg_operand PARAMS ((rtx, enum machine_mode));
205
206extern int ar7_mem_operand PARAMS ((rtx, enum machine_mode));
207
208extern int ir0_reg_operand PARAMS ((rtx, enum machine_mode));
209
210extern int ir0_mem_operand PARAMS ((rtx, enum machine_mode));
211
212extern int ir1_reg_operand PARAMS ((rtx, enum machine_mode));
213
214extern int ir1_mem_operand PARAMS ((rtx, enum machine_mode));
215
216extern int group1_reg_operand PARAMS ((rtx, enum machine_mode));
217
218extern int group1_mem_operand PARAMS ((rtx, enum machine_mode));
219
220extern int arx_reg_operand PARAMS ((rtx, enum machine_mode));
221
222extern int call_address_operand PARAMS ((rtx, enum machine_mode));
223
224extern int par_ind_operand PARAMS ((rtx, enum machine_mode));
225
226extern int not_rc_reg PARAMS ((rtx, enum machine_mode));
227
228extern int not_modify_reg PARAMS ((rtx, enum machine_mode));
229
230extern int c4x_shiftable_constant PARAMS ((rtx));
231
232extern int c4x_H_constant PARAMS ((rtx));
233
234extern int c4x_I_constant PARAMS ((rtx));
235
236extern int c4x_J_constant PARAMS ((rtx));
237
238extern int c4x_L_constant PARAMS ((rtx));
239
240extern int c4x_Q_constraint PARAMS ((rtx));
241
242extern int c4x_R_constraint PARAMS ((rtx));
243
244extern int c4x_S_constraint PARAMS ((rtx));
245
246extern int c4x_T_constraint PARAMS ((rtx));
247
248extern int c4x_U_constraint PARAMS ((rtx));
249
6cc56c00 250extern void c4x_emit_libcall PARAMS ((rtx, enum rtx_code,
27529606 251 enum machine_mode,
252 enum machine_mode, int, rtx *));
253
6cc56c00 254extern void c4x_emit_libcall3 PARAMS ((rtx, enum rtx_code,
27529606 255 enum machine_mode, rtx *));
256
6cc56c00 257extern void c4x_emit_libcall_mulhi PARAMS ((rtx, enum rtx_code,
27529606 258 enum machine_mode, rtx *));
259
260extern int c4x_emit_move_sequence PARAMS ((rtx *, enum machine_mode));
261
262extern int legitimize_operands PARAMS ((enum rtx_code, rtx *,
263 enum machine_mode));
264
265extern int valid_operands PARAMS ((enum rtx_code, rtx *, enum machine_mode));
266
267extern int valid_parallel_load_store PARAMS ((rtx *, enum machine_mode));
268
269extern int valid_parallel_operands_4 PARAMS ((rtx *, enum machine_mode));
270
271extern int valid_parallel_operands_5 PARAMS ((rtx *, enum machine_mode));
272
273extern int valid_parallel_operands_6 PARAMS ((rtx *, enum machine_mode));
274
1f3233d1 275extern GTY(()) rtx smulhi3_libfunc;
276extern GTY(()) rtx umulhi3_libfunc;
277extern GTY(()) rtx fix_truncqfhi2_libfunc;
278extern GTY(()) rtx fixuns_truncqfhi2_libfunc;
279extern GTY(()) rtx fix_trunchfhi2_libfunc;
280extern GTY(()) rtx fixuns_trunchfhi2_libfunc;
281extern GTY(()) rtx floathiqf2_libfunc;
282extern GTY(()) rtx floatunshiqf2_libfunc;
283extern GTY(()) rtx floathihf2_libfunc;
284extern GTY(()) rtx floatunshihf2_libfunc;
285
286extern GTY(()) rtx c4x_compare_op0; /* Operand 0 for comparisons. */
287extern GTY(()) rtx c4x_compare_op1; /* Operand 1 for comparisons. */
792db0c2 288
27529606 289#endif /* RTX_CODE */
290
792db0c2 291/* Smallest class containing REGNO. */
30bf3329 292extern enum reg_class c4x_regclass_map[FIRST_PSEUDO_REGISTER];
293extern enum machine_mode c4x_caller_save_map[FIRST_PSEUDO_REGISTER];
792db0c2 294
295extern int c4x_rpts_cycles; /* Max cycles for RPTS. */
296extern int c4x_cpu_version; /* Cpu version C30/31/32/40/44. */
1fcd08b1 297
be61f6d4 298#ifdef GCC_C_PRAGMA_H
1fcd08b1 299extern void c4x_pr_CODE_SECTION PARAMS ((cpp_reader *));
300extern void c4x_pr_DATA_SECTION PARAMS ((cpp_reader *));
301extern void c4x_pr_FUNC_IS_PURE PARAMS ((cpp_reader *));
302extern void c4x_pr_FUNC_NEVER_RETURNS PARAMS ((cpp_reader *));
303extern void c4x_pr_INTERRUPT PARAMS ((cpp_reader *));
304extern void c4x_pr_ignored PARAMS ((cpp_reader *));
cb991abf 305extern void c4x_init_pragma PARAMS ((int (*) (tree *)));
1fcd08b1 306#endif
307
1f3233d1 308extern GTY(()) tree code_tree;
309extern GTY(()) tree data_tree;
310extern GTY(()) tree pure_tree;
311extern GTY(()) tree noreturn_tree;
312extern GTY(()) tree interrupt_tree;
313
2a281353 314#endif /* ! GCC_C4X_PROTOS_H */