]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/arm/arm-protos.h
Merge basic-improvements-branch to trunk
[thirdparty/gcc.git] / gcc / config / arm / arm-protos.h
CommitLineData
5d3f468b 1/* Prototypes for exported functions defined in arm.c and pe.c
c6933ba6 2 Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
5d3f468b 3 Contributed by Richard Earnshaw (rearnsha@arm.com)
4 Minor hacks by Nick Clifton (nickc@cygnus.com)
5
6This file is part of GNU CC.
7
8GNU CC is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 2, or (at your option)
11any later version.
12
13GNU CC is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with GNU CC; see the file COPYING. If not, write to
20the Free Software Foundation, 59 Temple Place - Suite 330,
21Boston, MA 02111-1307, USA. */
22
1fcd08b1 23#ifndef GCC_ARM_PROTOS_H
24#define GCC_ARM_PROTOS_H
25
77ec0c64 26extern void rdata_section PARAMS ((void));
cffb2a26 27extern void arm_override_options PARAMS ((void));
28extern int use_return_insn PARAMS ((int));
29extern int arm_regno_class PARAMS ((int));
95373f08 30extern void arm_finalize_pic PARAMS ((int));
cffb2a26 31extern int arm_volatile_func PARAMS ((void));
0bd59681 32extern const char * arm_output_epilogue PARAMS ((int));
cffb2a26 33extern void arm_expand_prologue PARAMS ((void));
a7712927 34extern HOST_WIDE_INT arm_get_frame_size PARAMS ((void));
cffb2a26 35/* Used in arm.md, but defined in output.c. */
36extern void assemble_align PARAMS ((int));
78fe751b 37extern const char * arm_strip_name_encoding PARAMS ((const char *));
d2fcdd8d 38extern void arm_asm_output_labelref PARAMS ((FILE *, const char *));
e27ad2d5 39extern unsigned long arm_current_func_type PARAMS ((void));
9966e02f 40extern unsigned int arm_compute_initial_elimination_offset PARAMS ((unsigned int, unsigned int));
5d3f468b 41
42#ifdef TREE_CODE
cffb2a26 43extern int arm_return_in_memory PARAMS ((tree));
0bd59681 44extern void arm_encode_call_attribute PARAMS ((tree, int));
5d3f468b 45#endif
5d3f468b 46#ifdef RTX_CODE
78aea6a2 47extern int arm_hard_regno_mode_ok PARAMS ((unsigned int,
48 enum machine_mode));
cffb2a26 49extern int const_ok_for_arm PARAMS ((HOST_WIDE_INT));
50extern int arm_split_constant PARAMS ((RTX_CODE, enum machine_mode,
51 HOST_WIDE_INT, rtx, rtx, int));
52extern RTX_CODE arm_canonicalize_comparison PARAMS ((RTX_CODE, rtx *));
53extern int legitimate_pic_operand_p PARAMS ((rtx));
54extern rtx legitimize_pic_address PARAMS ((rtx, enum machine_mode, rtx));
cffb2a26 55extern int arm_rtx_costs PARAMS ((rtx, RTX_CODE, RTX_CODE));
e750712b 56extern int const_double_rtx_ok_for_fpu PARAMS ((rtx));
e750712b 57extern int neg_const_double_rtx_ok_for_fpu PARAMS ((rtx));
cffb2a26 58
59/* Predicates. */
60extern int s_register_operand PARAMS ((rtx, enum machine_mode));
a0a72ac3 61extern int arm_hard_register_operand PARAMS ((rtx, enum machine_mode));
cffb2a26 62extern int f_register_operand PARAMS ((rtx, enum machine_mode));
63extern int reg_or_int_operand PARAMS ((rtx, enum machine_mode));
64extern int arm_reload_memory_operand PARAMS ((rtx, enum machine_mode));
65extern int arm_rhs_operand PARAMS ((rtx, enum machine_mode));
66extern int arm_rhsm_operand PARAMS ((rtx, enum machine_mode));
67extern int arm_add_operand PARAMS ((rtx, enum machine_mode));
68extern int arm_not_operand PARAMS ((rtx, enum machine_mode));
69extern int offsettable_memory_operand PARAMS ((rtx, enum machine_mode));
70extern int alignable_memory_operand PARAMS ((rtx, enum machine_mode));
71extern int bad_signed_byte_operand PARAMS ((rtx, enum machine_mode));
72extern int fpu_rhs_operand PARAMS ((rtx, enum machine_mode));
73extern int fpu_add_operand PARAMS ((rtx, enum machine_mode));
74extern int power_of_two_operand PARAMS ((rtx, enum machine_mode));
75extern int nonimmediate_di_operand PARAMS ((rtx, enum machine_mode));
76extern int di_operand PARAMS ((rtx, enum machine_mode));
77extern int nonimmediate_soft_df_operand PARAMS ((rtx, enum machine_mode));
78extern int soft_df_operand PARAMS ((rtx, enum machine_mode));
79extern int index_operand PARAMS ((rtx, enum machine_mode));
80extern int const_shift_operand PARAMS ((rtx, enum machine_mode));
8fa3ba89 81extern int arm_comparison_operator PARAMS ((rtx, enum machine_mode));
cffb2a26 82extern int shiftable_operator PARAMS ((rtx, enum machine_mode));
83extern int shift_operator PARAMS ((rtx, enum machine_mode));
84extern int equality_operator PARAMS ((rtx, enum machine_mode));
85extern int minmax_operator PARAMS ((rtx, enum machine_mode));
86extern int cc_register PARAMS ((rtx, enum machine_mode));
87extern int dominant_cc_register PARAMS ((rtx, enum machine_mode));
88extern int logical_binary_operator PARAMS ((rtx, enum machine_mode));
89extern int multi_register_push PARAMS ((rtx, enum machine_mode));
90extern int load_multiple_operation PARAMS ((rtx, enum machine_mode));
91extern int store_multiple_operation PARAMS ((rtx, enum machine_mode));
92
93extern int symbol_mentioned_p PARAMS ((rtx));
94extern int label_mentioned_p PARAMS ((rtx));
95extern RTX_CODE minmax_code PARAMS ((rtx));
96extern int adjacent_mem_locations PARAMS ((rtx, rtx));
97extern int load_multiple_sequence PARAMS ((rtx *, int, int *, int *,
98 HOST_WIDE_INT *));
0bd59681 99extern const char * emit_ldm_seq PARAMS ((rtx *, int));
cffb2a26 100extern int store_multiple_sequence PARAMS ((rtx *, int, int *, int *,
101 HOST_WIDE_INT *));
0bd59681 102extern const char * emit_stm_seq PARAMS ((rtx *, int));
cffb2a26 103extern rtx arm_gen_load_multiple PARAMS ((int, int, rtx, int, int, int,
104 int, int));
105extern rtx arm_gen_store_multiple PARAMS ((int, int, rtx, int, int, int,
106 int, int));
107extern int arm_gen_movstrqi PARAMS ((rtx *));
108extern rtx arm_gen_rotated_half_load PARAMS ((rtx));
109extern enum machine_mode arm_select_cc_mode PARAMS ((RTX_CODE, rtx, rtx));
110extern rtx arm_gen_compare_reg PARAMS ((RTX_CODE, rtx, rtx));
68121397 111extern rtx arm_gen_return_addr_mask PARAMS ((void));
cffb2a26 112extern void arm_reload_in_hi PARAMS ((rtx *));
113extern void arm_reload_out_hi PARAMS ((rtx *));
114extern void arm_reorg PARAMS ((rtx));
0bd59681 115extern const char * fp_immediate_constant PARAMS ((rtx));
116extern const char * output_call PARAMS ((rtx *));
117extern const char * output_call_mem PARAMS ((rtx *));
118extern const char * output_mov_long_double_fpu_from_arm PARAMS ((rtx *));
119extern const char * output_mov_long_double_arm_from_fpu PARAMS ((rtx *));
120extern const char * output_mov_long_double_arm_from_arm PARAMS ((rtx *));
121extern const char * output_mov_double_fpu_from_arm PARAMS ((rtx *));
122extern const char * output_mov_double_arm_from_fpu PARAMS ((rtx *));
123extern const char * output_move_double PARAMS ((rtx *));
124extern const char * output_mov_immediate PARAMS ((rtx *));
125extern const char * output_add_immediate PARAMS ((rtx *));
126extern const char * arithmetic_instr PARAMS ((rtx, int));
78aea6a2 127extern void output_ascii_pseudo_op PARAMS ((FILE *, const unsigned char *,
128 int));
0bd59681 129extern const char * output_return_instruction PARAMS ((rtx, int, int));
29122112 130extern void arm_poke_function_name PARAMS ((FILE *, const char *));
cffb2a26 131extern void arm_print_operand PARAMS ((FILE *, rtx, int));
a0a72ac3 132extern void arm_print_operand_address PARAMS ((FILE *, rtx));
cffb2a26 133extern void arm_final_prescan_insn PARAMS ((rtx));
134extern int arm_go_if_legitimate_address PARAMS ((enum machine_mode, rtx));
135extern int arm_debugger_arg_offset PARAMS ((int, rtx));
136extern int arm_is_longcall_p PARAMS ((rtx, int, int));
137
138#if defined TREE_CODE
139extern rtx arm_function_arg PARAMS ((CUMULATIVE_ARGS *,
140 enum machine_mode, tree, int));
141extern void arm_init_cumulative_args PARAMS ((CUMULATIVE_ARGS *, tree, rtx,
142 int));
78aea6a2 143extern rtx arm_va_arg PARAMS ((tree, tree));
144extern int arm_function_arg_pass_by_reference PARAMS ((CUMULATIVE_ARGS *,
145 enum machine_mode,
146 tree, int));
147
cffb2a26 148#endif
149
5d3f468b 150#if defined AOF_ASSEMBLER
cffb2a26 151extern rtx aof_pic_entry PARAMS ((rtx));
152extern void aof_dump_pic_table PARAMS ((FILE *));
153extern char * aof_text_section PARAMS ((void));
154extern char * aof_data_section PARAMS ((void));
29122112 155extern void aof_add_import PARAMS ((const char *));
156extern void aof_delete_import PARAMS ((const char *));
cffb2a26 157extern void aof_dump_imports PARAMS ((FILE *));
77ec0c64 158extern void zero_init_section PARAMS ((void));
159extern void common_section PARAMS ((void));
5d3f468b 160#endif /* AOF_ASSEMBLER */
161
5d3f468b 162#endif /* RTX_CODE */
163
3d94d3fa 164extern int arm_float_words_big_endian PARAMS ((void));
165
cffb2a26 166/* Thumb functions. */
167extern void arm_init_expanders PARAMS ((void));
168extern int thumb_far_jump_used_p PARAMS ((int));
0bd59681 169extern const char * thumb_unexpanded_epilogue PARAMS ((void));
a7712927 170extern HOST_WIDE_INT thumb_get_frame_size PARAMS ((void));
cffb2a26 171extern void thumb_expand_prologue PARAMS ((void));
172extern void thumb_expand_epilogue PARAMS ((void));
173#ifdef TREE_CODE
174extern int is_called_in_ARM_mode PARAMS ((tree));
175#endif
cffb2a26 176extern int thumb_shiftable_const PARAMS ((unsigned HOST_WIDE_INT));
0bd59681 177#ifdef RTX_CODE
cffb2a26 178extern void thumb_final_prescan_insn PARAMS ((rtx));
0bd59681 179extern const char * thumb_load_double_from_address
cffb2a26 180 PARAMS ((rtx *));
0bd59681 181extern const char * thumb_output_move_mem_multiple
cffb2a26 182 PARAMS ((int, rtx *));
183extern void thumb_expand_movstrqi PARAMS ((rtx *));
184extern int thumb_cmp_operand PARAMS ((rtx, enum machine_mode));
185extern rtx * thumb_legitimize_pic_address
186 PARAMS ((rtx, enum machine_mode, rtx));
187extern int thumb_go_if_legitimate_address
188 PARAMS ((enum machine_mode, rtx));
189extern rtx arm_return_addr PARAMS ((int, rtx));
190extern void thumb_reload_out_hi PARAMS ((rtx *));
191extern void thumb_reload_in_hi PARAMS ((rtx *));
192#endif
193
194/* Defined in pe.c. */
e19a3988 195extern int arm_dllexport_name_p PARAMS ((const char *));
196extern int arm_dllimport_name_p PARAMS ((const char *));
cffb2a26 197
198#ifdef TREE_CODE
cffb2a26 199extern void arm_pe_unique_section PARAMS ((tree, int));
41eb471c 200extern void arm_pe_encode_section_info PARAMS ((tree, int));
cffb2a26 201extern int arm_dllexport_p PARAMS ((tree));
202extern int arm_dllimport_p PARAMS ((tree));
203extern void arm_mark_dllexport PARAMS ((tree));
204extern void arm_mark_dllimport PARAMS ((tree));
205#endif
1fcd08b1 206
331beb1a 207extern void arm_init_builtins PARAMS ((void));
208#if defined (TREE_CODE) && defined (RTX_CODE)
209extern rtx arm_expand_builtin PARAMS ((tree, rtx, rtx,
210 enum machine_mode, int));
211#endif
212
9daad555 213#ifdef GCC_C_PRAGMA_H /* included from code that cares about pragmas */
1fcd08b1 214extern void arm_pr_long_calls PARAMS ((cpp_reader *));
215extern void arm_pr_no_long_calls PARAMS ((cpp_reader *));
216extern void arm_pr_long_calls_off PARAMS ((cpp_reader *));
217#endif
218
2a281353 219#endif /* ! GCC_ARM_PROTOS_H */