]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/arm/arm-protos.h
cpp_type_traits.h: Rename _M_type fields to __value...
[thirdparty/gcc.git] / gcc / config / arm / arm-protos.h
CommitLineData
eb3921e8 1/* Prototypes for exported functions defined in arm.c and pe.c
b12a00f1 2 Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
9b66ebb1 3 Free Software Foundation, Inc.
eb3921e8
NC
4 Contributed by Richard Earnshaw (rearnsha@arm.com)
5 Minor hacks by Nick Clifton (nickc@cygnus.com)
6
4f448245 7 This file is part of GCC.
eb3921e8 8
4f448245
NC
9 GCC 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)
12 any later version.
eb3921e8 13
4f448245
NC
14 GCC 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.
eb3921e8 18
4f448245
NC
19 You should have received a copy of the GNU General Public License
20 along with GCC; see the file COPYING. If not, write to
21 the Free Software Foundation, 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
eb3921e8 23
8b97c5f8
ZW
24#ifndef GCC_ARM_PROTOS_H
25#define GCC_ARM_PROTOS_H
26
e32bac5b 27extern void arm_override_options (void);
a72d4945 28extern int use_return_insn (int, rtx);
e32bac5b 29extern int arm_regno_class (int);
fe013435 30extern void arm_load_pic_register (unsigned int);
e32bac5b 31extern int arm_volatile_func (void);
a72d4945 32extern const char *arm_output_epilogue (rtx);
e32bac5b 33extern void arm_expand_prologue (void);
e32bac5b
RE
34extern const char *arm_strip_name_encoding (const char *);
35extern void arm_asm_output_labelref (FILE *, const char *);
36extern unsigned long arm_current_func_type (void);
b3f8d95d
MM
37extern HOST_WIDE_INT arm_compute_initial_elimination_offset (unsigned int,
38 unsigned int);
5848830f
PB
39extern HOST_WIDE_INT thumb_compute_initial_elimination_offset (unsigned int,
40 unsigned int);
eb3921e8
NC
41
42#ifdef TREE_CODE
e32bac5b
RE
43extern int arm_return_in_memory (tree);
44extern void arm_encode_call_attribute (tree, int);
eb3921e8 45#endif
eb3921e8 46#ifdef RTX_CODE
f676971a 47extern bool arm_vector_mode_supported_p (enum machine_mode);
e32bac5b
RE
48extern int arm_hard_regno_mode_ok (unsigned int, enum machine_mode);
49extern int const_ok_for_arm (HOST_WIDE_INT);
a406f566
MM
50extern int arm_split_constant (RTX_CODE, enum machine_mode, rtx,
51 HOST_WIDE_INT, rtx, rtx, int);
e32bac5b
RE
52extern RTX_CODE arm_canonicalize_comparison (RTX_CODE, rtx *);
53extern int legitimate_pic_operand_p (rtx);
54extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx);
1e1ab407 55extern int arm_legitimate_address_p (enum machine_mode, rtx, RTX_CODE, int);
e32bac5b
RE
56extern int thumb_legitimate_address_p (enum machine_mode, rtx, int);
57extern int thumb_legitimate_offset_p (enum machine_mode, HOST_WIDE_INT);
58extern rtx arm_legitimize_address (rtx, rtx, enum machine_mode);
6f5b4f3e 59extern rtx thumb_legitimize_address (rtx, rtx, enum machine_mode);
9b66ebb1 60extern int arm_const_double_rtx (rtx);
e32bac5b 61extern int neg_const_double_rtx_ok_for_fpa (rtx);
9b66ebb1 62extern enum reg_class vfp_secondary_reload_class (enum machine_mode, rtx);
d5b7b3ae 63
e32bac5b 64extern int cirrus_memory_offset (rtx);
fdd695fd 65extern int arm_coproc_mem_operand (rtx, bool);
9b66ebb1
PB
66extern int arm_no_early_store_addr_dep (rtx, rtx);
67extern int arm_no_early_alu_shift_dep (rtx, rtx);
68extern int arm_no_early_alu_shift_value_dep (rtx, rtx);
69extern int arm_no_early_mul_dep (rtx, rtx);
e32bac5b
RE
70
71extern int symbol_mentioned_p (rtx);
72extern int label_mentioned_p (rtx);
73extern RTX_CODE minmax_code (rtx);
74extern int adjacent_mem_locations (rtx, rtx);
75extern int load_multiple_sequence (rtx *, int, int *, int *, HOST_WIDE_INT *);
76extern const char *emit_ldm_seq (rtx *, int);
77extern int store_multiple_sequence (rtx *, int, int *, int *, HOST_WIDE_INT *);
78extern const char * emit_stm_seq (rtx *, int);
50ed9cea
RH
79extern rtx arm_gen_load_multiple (int, int, rtx, int, int,
80 rtx, HOST_WIDE_INT *);
81extern rtx arm_gen_store_multiple (int, int, rtx, int, int,
82 rtx, HOST_WIDE_INT *);
70128ad9 83extern int arm_gen_movmemqi (rtx *);
e32bac5b
RE
84extern rtx arm_gen_rotated_half_load (rtx);
85extern enum machine_mode arm_select_cc_mode (RTX_CODE, rtx, rtx);
86extern enum machine_mode arm_select_dominance_cc_mode (rtx, rtx,
87 HOST_WIDE_INT);
88extern rtx arm_gen_compare_reg (RTX_CODE, rtx, rtx);
89extern rtx arm_gen_return_addr_mask (void);
90extern void arm_reload_in_hi (rtx *);
91extern void arm_reload_out_hi (rtx *);
2075b05d 92extern int arm_const_double_inline_cost (rtx);
e32bac5b
RE
93extern const char *fp_immediate_constant (rtx);
94extern const char *output_call (rtx *);
95extern const char *output_call_mem (rtx *);
96extern const char *output_mov_long_double_fpa_from_arm (rtx *);
97extern const char *output_mov_long_double_arm_from_fpa (rtx *);
98extern const char *output_mov_long_double_arm_from_arm (rtx *);
99extern const char *output_mov_double_fpa_from_arm (rtx *);
100extern const char *output_mov_double_arm_from_fpa (rtx *);
101extern const char *output_move_double (rtx *);
102extern const char *output_mov_immediate (rtx *);
103extern const char *output_add_immediate (rtx *);
104extern const char *arithmetic_instr (rtx, int);
105extern void output_ascii_pseudo_op (FILE *, const unsigned char *, int);
106extern const char *output_return_instruction (rtx, int, int);
107extern void arm_poke_function_name (FILE *, const char *);
108extern void arm_print_operand (FILE *, rtx, int);
109extern void arm_print_operand_address (FILE *, rtx);
110extern void arm_final_prescan_insn (rtx);
111extern int arm_go_if_legitimate_address (enum machine_mode, rtx);
112extern int arm_debugger_arg_offset (int, rtx);
113extern int arm_is_longcall_p (rtx, int, int);
5a9335ef
NC
114extern int arm_emit_vector_const (FILE *, rtx);
115extern const char * arm_output_load_gr (rtx *);
9b66ebb1 116extern const char *vfp_output_fstmx (rtx *);
c9ca9b88 117extern void arm_set_return_address (rtx, rtx);
d5b7b3ae
RE
118
119#if defined TREE_CODE
e32bac5b
RE
120extern rtx arm_function_arg (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
121extern void arm_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
5848830f 122extern bool arm_needs_doubleword_align (enum machine_mode, tree);
d4453b7a 123extern rtx arm_function_value(tree, tree);
d5b7b3ae
RE
124#endif
125
f676971a 126#if defined AOF_ASSEMBLER
e32bac5b
RE
127extern rtx aof_pic_entry (rtx);
128extern char *aof_text_section (void);
129extern char *aof_data_section (void);
130extern void aof_add_import (const char *);
131extern void aof_delete_import (const char *);
132extern void zero_init_section (void);
133extern void common_section (void);
eb3921e8
NC
134#endif /* AOF_ASSEMBLER */
135
eb3921e8
NC
136#endif /* RTX_CODE */
137
e32bac5b 138extern int arm_float_words_big_endian (void);
3717da94 139
d5b7b3ae 140/* Thumb functions. */
e32bac5b 141extern void arm_init_expanders (void);
e32bac5b 142extern const char *thumb_unexpanded_epilogue (void);
e32bac5b
RE
143extern void thumb_expand_prologue (void);
144extern void thumb_expand_epilogue (void);
d5b7b3ae 145#ifdef TREE_CODE
e32bac5b 146extern int is_called_in_ARM_mode (tree);
d5b7b3ae 147#endif
e32bac5b 148extern int thumb_shiftable_const (unsigned HOST_WIDE_INT);
cd2b33d0 149#ifdef RTX_CODE
e32bac5b
RE
150extern void thumb_final_prescan_insn (rtx);
151extern const char *thumb_load_double_from_address (rtx *);
152extern const char *thumb_output_move_mem_multiple (int, rtx *);
b12a00f1 153extern const char *thumb_call_via_reg (rtx);
70128ad9 154extern void thumb_expand_movmemqi (rtx *);
e32bac5b
RE
155extern rtx *thumb_legitimize_pic_address (rtx, enum machine_mode, rtx);
156extern int thumb_go_if_legitimate_address (enum machine_mode, rtx);
157extern rtx arm_return_addr (int, rtx);
158extern void thumb_reload_out_hi (rtx *);
159extern void thumb_reload_in_hi (rtx *);
c9ca9b88 160extern void thumb_set_return_address (rtx, rtx);
d5b7b3ae
RE
161#endif
162
163/* Defined in pe.c. */
e32bac5b
RE
164extern int arm_dllexport_name_p (const char *);
165extern int arm_dllimport_name_p (const char *);
d5b7b3ae
RE
166
167#ifdef TREE_CODE
e32bac5b
RE
168extern void arm_pe_unique_section (tree, int);
169extern void arm_pe_encode_section_info (tree, rtx, int);
170extern int arm_dllexport_p (tree);
171extern int arm_dllimport_p (tree);
172extern void arm_mark_dllexport (tree);
173extern void arm_mark_dllimport (tree);
d5b7b3ae 174#endif
8b97c5f8 175
e32bac5b
RE
176extern void arm_pr_long_calls (struct cpp_reader *);
177extern void arm_pr_no_long_calls (struct cpp_reader *);
178extern void arm_pr_long_calls_off (struct cpp_reader *);
8b97c5f8 179
88657302 180#endif /* ! GCC_ARM_PROTOS_H */