]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/rs6000/rs6000-protos.h
configure.in (HAVE_LD_PIE): Check for ld -pie.
[thirdparty/gcc.git] / gcc / config / rs6000 / rs6000-protos.h
CommitLineData
9ebbca7d 1/* Definitions of target machine for GNU compiler, for IBM RS/6000.
5de601cf 2 Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
9ebbca7d
GK
3 Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
4
5de601cf 5 This file is part of GCC.
9ebbca7d 6
5de601cf
NC
7 GCC is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published
9 by the Free Software Foundation; either version 2, or (at your
10 option) any later version.
9ebbca7d 11
5de601cf
NC
12 GCC is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
9ebbca7d 16
5de601cf
NC
17 You should have received a copy of the GNU General Public License
18 along with GCC; see the file COPYING. If not, write to the
19 Free Software Foundation, 59 Temple Place - Suite 330, Boston,
20 MA 02111-1307, USA. */
9ebbca7d 21
a5c76ee6
ZW
22#ifndef GCC_RS6000_PROTOS_H
23#define GCC_RS6000_PROTOS_H
24
9ebbca7d
GK
25/* Declare functions in rs6000.c */
26
27#ifdef RTX_CODE
28
29#ifdef TREE_CODE
30extern void init_cumulative_args PARAMS ((CUMULATIVE_ARGS *, tree, rtx, int));
e5faf155 31extern void rs6000_va_start PARAMS ((tree, rtx));
9ebbca7d
GK
32#endif /* TREE_CODE */
33
34extern struct rtx_def *rs6000_got_register PARAMS ((rtx));
35extern struct rtx_def *find_addr_reg PARAMS ((rtx));
36extern int any_operand PARAMS ((rtx, enum machine_mode));
37extern int short_cint_operand PARAMS ((rtx, enum machine_mode));
38extern int u_short_cint_operand PARAMS ((rtx, enum machine_mode));
39extern int non_short_cint_operand PARAMS ((rtx, enum machine_mode));
2bfcf297 40extern int exact_log2_cint_operand PARAMS ((rtx, enum machine_mode));
9ebbca7d
GK
41extern int gpc_reg_operand PARAMS ((rtx, enum machine_mode));
42extern int cc_reg_operand PARAMS ((rtx, enum machine_mode));
43extern int cc_reg_not_cr0_operand PARAMS ((rtx, enum machine_mode));
44extern int reg_or_short_operand PARAMS ((rtx, enum machine_mode));
45extern int reg_or_neg_short_operand PARAMS ((rtx, enum machine_mode));
768070a0 46extern int reg_or_aligned_short_operand PARAMS ((rtx, enum machine_mode));
9ebbca7d
GK
47extern int reg_or_u_short_operand PARAMS ((rtx, enum machine_mode));
48extern int reg_or_cint_operand PARAMS ((rtx, enum machine_mode));
f6bf7de2 49extern int reg_or_arith_cint_operand PARAMS ((rtx, enum machine_mode));
2bfcf297
DB
50extern int reg_or_add_cint64_operand PARAMS ((rtx, enum machine_mode));
51extern int reg_or_sub_cint64_operand PARAMS ((rtx, enum machine_mode));
1d328b19 52extern int reg_or_logical_cint_operand PARAMS ((rtx, enum machine_mode));
9ebbca7d
GK
53extern int got_operand PARAMS ((rtx, enum machine_mode));
54extern int got_no_const_operand PARAMS ((rtx, enum machine_mode));
55extern int num_insns_constant PARAMS ((rtx, enum machine_mode));
56extern int easy_fp_constant PARAMS ((rtx, enum machine_mode));
d744e06e
AH
57extern int easy_vector_constant PARAMS ((rtx, enum machine_mode));
58extern const char *output_vec_const_move PARAMS ((rtx *));
50a0b056 59extern int zero_fp_constant PARAMS ((rtx, enum machine_mode));
69ef87e2 60extern int zero_constant PARAMS ((rtx, enum machine_mode));
9ebbca7d
GK
61extern int volatile_mem_operand PARAMS ((rtx, enum machine_mode));
62extern int offsettable_mem_operand PARAMS ((rtx, enum machine_mode));
63extern int mem_or_easy_const_operand PARAMS ((rtx, enum machine_mode));
64extern int add_operand PARAMS ((rtx, enum machine_mode));
65extern int non_add_cint_operand PARAMS ((rtx, enum machine_mode));
66extern int non_logical_cint_operand PARAMS ((rtx, enum machine_mode));
9ebbca7d 67extern int logical_operand PARAMS ((rtx, enum machine_mode));
9ebbca7d 68extern int mask_operand PARAMS ((rtx, enum machine_mode));
0ba1b2ff 69extern int mask_operand_wrap PARAMS ((rtx, enum machine_mode));
9ebbca7d 70extern int mask64_operand PARAMS ((rtx, enum machine_mode));
0ba1b2ff
AM
71extern int mask64_2_operand PARAMS ((rtx, enum machine_mode));
72extern void build_mask64_2_operands PARAMS ((rtx, rtx *));
9ebbca7d 73extern int and64_operand PARAMS ((rtx, enum machine_mode));
0ba1b2ff 74extern int and64_2_operand PARAMS ((rtx, enum machine_mode));
9ebbca7d
GK
75extern int and_operand PARAMS ((rtx, enum machine_mode));
76extern int count_register_operand PARAMS ((rtx, enum machine_mode));
77extern int xer_operand PARAMS ((rtx, enum machine_mode));
78extern int reg_or_mem_operand PARAMS ((rtx, enum machine_mode));
79extern int lwa_operand PARAMS ((rtx, enum machine_mode));
80extern int call_operand PARAMS ((rtx, enum machine_mode));
81extern int current_file_function_operand PARAMS ((rtx, enum machine_mode));
82extern int input_operand PARAMS ((rtx, enum machine_mode));
83extern int small_data_operand PARAMS ((rtx, enum machine_mode));
b3656137 84extern int s8bit_cint_operand PARAMS ((rtx, enum machine_mode));
4d588c14 85extern bool legitimate_constant_pool_address_p PARAMS ((rtx));
9ebbca7d
GK
86extern int expand_block_move PARAMS ((rtx[]));
87extern int load_multiple_operation PARAMS ((rtx, enum machine_mode));
9caa3eb2 88extern const char * rs6000_output_load_multiple PARAMS ((rtx[]));
9ebbca7d
GK
89extern int store_multiple_operation PARAMS ((rtx, enum machine_mode));
90extern int branch_comparison_operator PARAMS ((rtx, enum machine_mode));
39a10a29
GK
91extern int branch_positive_comparison_operator
92 PARAMS ((rtx, enum machine_mode));
9ebbca7d
GK
93extern int scc_comparison_operator PARAMS ((rtx, enum machine_mode));
94extern int trap_comparison_operator PARAMS ((rtx, enum machine_mode));
dfbdccdb 95extern int boolean_operator PARAMS ((rtx, enum machine_mode));
1d328b19 96extern int boolean_or_operator PARAMS ((rtx, enum machine_mode));
50a0b056 97extern int min_max_operator PARAMS ((rtx, enum machine_mode));
9ebbca7d
GK
98extern int includes_lshift_p PARAMS ((rtx, rtx));
99extern int includes_rshift_p PARAMS ((rtx, rtx));
c5059423
AM
100extern int includes_rldic_lshift_p PARAMS ((rtx, rtx));
101extern int includes_rldicr_lshift_p PARAMS ((rtx, rtx));
9ebbca7d
GK
102extern int registers_ok_for_quad_peep PARAMS ((rtx, rtx));
103extern int addrs_ok_for_quad_peep PARAMS ((rtx, rtx));
104extern enum reg_class secondary_reload_class PARAMS ((enum reg_class,
105 enum machine_mode, rtx));
106extern int ccr_bit PARAMS ((rtx, int));
0ba1b2ff
AM
107extern int extract_MB PARAMS ((rtx));
108extern int extract_ME PARAMS ((rtx));
9ebbca7d
GK
109extern void print_operand PARAMS ((FILE *, rtx, int));
110extern void print_operand_address PARAMS ((FILE *, rtx));
39a10a29
GK
111extern enum rtx_code rs6000_reverse_condition PARAMS ((enum machine_mode,
112 enum rtx_code));
113extern void rs6000_emit_sCOND PARAMS ((enum rtx_code, rtx));
114extern void rs6000_emit_cbranch PARAMS ((enum rtx_code, rtx));
12a4e8c5 115extern char * output_cbranch PARAMS ((rtx, const char *, int, rtx));
2bfcf297 116extern rtx rs6000_emit_set_const PARAMS ((rtx, enum machine_mode, rtx, int));
50a0b056
GK
117extern int rs6000_emit_cmove PARAMS ((rtx, rtx, rtx, rtx));
118extern void rs6000_emit_minmax PARAMS ((rtx, enum rtx_code, rtx, rtx));
a9098fd0 119extern void output_toc PARAMS ((FILE *, rtx, int, enum machine_mode));
9ebbca7d
GK
120extern void rs6000_initialize_trampoline PARAMS ((rtx, rtx, rtx));
121extern struct rtx_def *rs6000_longcall_ref PARAMS ((rtx));
122extern void rs6000_fatal_bad_address PARAMS ((rtx));
123extern int stmw_operation PARAMS ((rtx, enum machine_mode));
124extern int mtcrf_operation PARAMS ((rtx, enum machine_mode));
125extern int lmw_operation PARAMS ((rtx, enum machine_mode));
126extern struct rtx_def *create_TOC_reference PARAMS ((rtx));
127extern void rs6000_emit_eh_toc_restore PARAMS ((rtx));
fb4d4348 128extern void rs6000_emit_move PARAMS ((rtx, rtx, enum machine_mode));
9ebbca7d 129extern rtx rs6000_legitimize_address PARAMS ((rtx, rtx, enum machine_mode));
24ea750e
DJ
130extern rtx rs6000_legitimize_reload_address PARAMS ((rtx, enum machine_mode,
131 int, int, int, int *));
258bfae2 132extern int rs6000_legitimate_address PARAMS ((enum machine_mode, rtx, int));
4d588c14 133extern bool rs6000_mode_dependent_address PARAMS ((rtx));
608ab802 134extern rtx rs6000_return_addr PARAMS ((int, rtx));
28e510bd 135extern void rs6000_output_symbol_ref PARAMS ((FILE*, rtx));
ee890fe2
SS
136
137extern rtx rs6000_machopic_legitimize_pic_address PARAMS ((rtx orig, enum machine_mode mode, rtx reg));
138
9ebbca7d
GK
139#endif /* RTX_CODE */
140
141#ifdef TREE_CODE
142extern void function_arg_advance PARAMS ((CUMULATIVE_ARGS *, enum machine_mode,
143 tree, int));
144extern int function_arg_boundary PARAMS ((enum machine_mode, tree));
145extern struct rtx_def *function_arg PARAMS ((CUMULATIVE_ARGS *,
146 enum machine_mode, tree, int));
147extern int function_arg_partial_nregs PARAMS ((CUMULATIVE_ARGS *,
148 enum machine_mode, tree, int));
149extern int function_arg_pass_by_reference PARAMS ((CUMULATIVE_ARGS *,
150 enum machine_mode,
151 tree, int));
152extern void setup_incoming_varargs PARAMS ((CUMULATIVE_ARGS *,
153 enum machine_mode, tree,
154 int *, int));
a6ebc39a 155extern rtx rs6000_function_value (tree, tree);
9ebbca7d 156extern struct rtx_def *rs6000_va_arg PARAMS ((tree, tree));
5e1bf043 157extern int function_ok_for_sibcall PARAMS ((tree));
9ebbca7d
GK
158#ifdef ARGS_SIZE_RTX
159/* expr.h defines ARGS_SIZE_RTX and `enum direction' */
160extern enum direction function_arg_padding PARAMS ((enum machine_mode, tree));
161#endif /* ARGS_SIZE_RTX */
ee890fe2 162
9ebbca7d
GK
163#endif /* TREE_CODE */
164
165extern void optimization_options PARAMS ((int, int));
166extern void rs6000_override_options PARAMS ((const char *));
167extern void rs6000_file_start PARAMS ((FILE *, const char *));
9ebbca7d 168extern int direct_return PARAMS ((void));
9ebbca7d 169extern union tree_node *rs6000_build_va_list PARAMS ((void));
9ebbca7d
GK
170extern int first_reg_to_save PARAMS ((void));
171extern int first_fp_reg_to_save PARAMS ((void));
172extern rs6000_stack_t *rs6000_stack_info PARAMS ((void));
9ebbca7d
GK
173extern void output_ascii PARAMS ((FILE *, const char *, int));
174extern void rs6000_gen_section_name PARAMS ((char **, const char *,
175 const char *));
176extern void output_function_profiler PARAMS ((FILE *, int));
411707f4 177extern void output_profile_hook PARAMS ((int));
9ebbca7d
GK
178extern int rs6000_trampoline_size PARAMS ((void));
179extern void toc_section PARAMS ((void));
180extern void sdata_section PARAMS ((void));
181extern void sdata2_section PARAMS ((void));
182extern void sbss_section PARAMS ((void));
183extern void private_data_section PARAMS ((void));
55710451
KG
184extern void read_only_data_section PARAMS ((void));
185extern void read_only_private_data_section PARAMS ((void));
9ebbca7d
GK
186extern int get_TOC_alias_set PARAMS ((void));
187extern int uses_TOC PARAMS ((void));
188extern void rs6000_emit_prologue PARAMS ((void));
189extern void rs6000_emit_load_toc_table PARAMS ((int));
190extern void rs6000_aix_emit_builtin_unwind_init PARAMS ((void));
191extern void rs6000_emit_epilogue PARAMS ((int));
192extern void debug_stack_info PARAMS ((rs6000_stack_t *));
9caa3eb2 193extern const char * output_isel PARAMS ((rtx *));
a3170dc6 194extern int vrsave_operation PARAMS ((rtx, enum machine_mode));
34bb030a
DE
195extern int rs6000_register_move_cost PARAMS ((enum machine_mode,
196 enum reg_class, enum reg_class));
197extern int rs6000_memory_move_cost PARAMS ((enum machine_mode,
198 enum reg_class, int));
c4501e62
JJ
199extern bool rs6000_tls_referenced_p PARAMS ((rtx));
200extern int rs6000_tls_symbol_ref PARAMS ((rtx, enum machine_mode));
ee890fe2 201
4c4eb375
GK
202/* Declare functions in rs6000-c.c */
203
e150159c
SS
204extern void rs6000_pragma_longcall PARAMS ((struct cpp_reader *));
205extern void rs6000_cpu_cpp_builtins PARAMS ((struct cpp_reader *));
a5c76ee6
ZW
206
207#endif /* rs6000-protos.h */