1 /* Prototypes for pa.c functions used in the md file & elsewhere.
2 Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
4 This file is part of GNU CC.
6 GNU CC is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
11 GNU CC is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU CC; see the file COPYING. If not, write to
18 the Free Software Foundation, 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */
22 /* Prototype function used in MACHINE_DEPENDENT_REORG macro. */
23 extern void pa_reorg
PARAMS ((rtx
));
25 /* Prototype function used in various macros. */
26 extern int symbolic_operand
PARAMS ((rtx
, enum machine_mode
));
28 /* Used in insn-*.c. */
29 extern int following_call
PARAMS ((rtx
));
30 extern int function_label_operand
PARAMS ((rtx
, enum machine_mode
));
31 extern int lhs_lshift_cint_operand
PARAMS ((rtx
, enum machine_mode
));
34 extern void hppa_va_start
PARAMS ((tree
, rtx
));
35 extern rtx hppa_va_arg
PARAMS ((tree
, tree
));
36 #endif /* TREE_CODE */
37 extern rtx hppa_legitimize_address
PARAMS ((rtx
, rtx
, enum machine_mode
));
39 /* Define functions in pa.c and used in insn-output.c. */
41 extern const char *output_and
PARAMS ((rtx
*));
42 extern const char *output_ior
PARAMS ((rtx
*));
43 extern const char *output_move_double
PARAMS ((rtx
*));
44 extern const char *output_fp_move_double
PARAMS ((rtx
*));
45 extern const char *output_block_move
PARAMS ((rtx
*, int));
46 extern const char *output_cbranch
PARAMS ((rtx
*, int, int, int, rtx
));
47 extern const char *output_bb
PARAMS ((rtx
*, int, int, int, rtx
, int));
48 extern const char *output_bvb
PARAMS ((rtx
*, int, int, int, rtx
, int));
49 extern const char *output_dbra
PARAMS ((rtx
*, rtx
, int));
50 extern const char *output_movb
PARAMS ((rtx
*, rtx
, int, int));
51 extern const char *output_parallel_movb
PARAMS ((rtx
*, int));
52 extern const char *output_parallel_addb
PARAMS ((rtx
*, int));
53 extern const char *output_call
PARAMS ((rtx
, rtx
, int));
54 extern const char *output_indirect_call
PARAMS ((rtx
, rtx
));
55 extern const char *output_millicode_call
PARAMS ((rtx
, rtx
));
56 extern const char *output_mul_insn
PARAMS ((int, rtx
));
57 extern const char *output_div_insn
PARAMS ((rtx
*, int, rtx
));
58 extern const char *output_mod_insn
PARAMS ((int, rtx
));
59 extern const char *singlemove_string
PARAMS ((rtx
*));
60 extern void output_arg_descriptor
PARAMS ((rtx
));
61 extern void output_global_address
PARAMS ((FILE *, rtx
, int));
62 extern void print_operand
PARAMS ((FILE *, rtx
, int));
63 extern rtx legitimize_pic_address
PARAMS ((rtx
, enum machine_mode
, rtx
));
64 extern struct rtx_def
*gen_cmp_fp
PARAMS ((enum rtx_code
, rtx
, rtx
));
65 extern void hppa_encode_label
PARAMS ((rtx
));
66 extern int arith11_operand
PARAMS ((rtx
, enum machine_mode
));
67 extern int adddi3_operand
PARAMS ((rtx
, enum machine_mode
));
68 extern int symbolic_expression_p
PARAMS ((rtx
));
69 extern int symbolic_memory_operand
PARAMS ((rtx
, enum machine_mode
));
70 extern int pa_adjust_insn_length
PARAMS ((rtx
, int));
71 extern int int11_operand
PARAMS ((rtx
, enum machine_mode
));
72 extern int reg_or_cint_move_operand
PARAMS ((rtx
, enum machine_mode
));
73 extern int arith5_operand
PARAMS ((rtx
, enum machine_mode
));
74 extern int uint5_operand
PARAMS ((rtx
, enum machine_mode
));
75 extern int pic_label_operand
PARAMS ((rtx
, enum machine_mode
));
76 extern int plus_xor_ior_operator
PARAMS ((rtx
, enum machine_mode
));
77 extern int basereg_operand
PARAMS ((rtx
, enum machine_mode
));
78 extern int shadd_operand
PARAMS ((rtx
, enum machine_mode
));
79 extern int arith_operand
PARAMS ((rtx
, enum machine_mode
));
80 extern int read_only_operand
PARAMS ((rtx
, enum machine_mode
));
81 extern int move_operand
PARAMS ((rtx
, enum machine_mode
));
82 extern int and_operand
PARAMS ((rtx
, enum machine_mode
));
83 extern int ior_operand
PARAMS ((rtx
, enum machine_mode
));
84 extern int arith32_operand
PARAMS ((rtx
, enum machine_mode
));
85 extern int uint32_operand
PARAMS ((rtx
, enum machine_mode
));
86 extern int reg_or_nonsymb_mem_operand
PARAMS ((rtx
, enum machine_mode
));
87 extern int reg_before_reload_operand
PARAMS ((rtx
, enum machine_mode
));
88 extern int reg_or_0_operand
PARAMS ((rtx
, enum machine_mode
));
89 extern int reg_or_0_or_nonsymb_mem_operand
PARAMS ((rtx
, enum machine_mode
));
90 extern int pre_cint_operand
PARAMS ((rtx
, enum machine_mode
));
91 extern int post_cint_operand
PARAMS ((rtx
, enum machine_mode
));
92 extern int div_operand
PARAMS ((rtx
, enum machine_mode
));
93 extern int int5_operand
PARAMS ((rtx
, enum machine_mode
));
94 extern int movb_comparison_operator
PARAMS ((rtx
, enum machine_mode
));
95 extern int ireg_or_int5_operand
PARAMS ((rtx
, enum machine_mode
));
96 extern int fmpyaddoperands
PARAMS ((rtx
*));
97 extern int fmpysuboperands
PARAMS ((rtx
*));
98 extern int call_operand_address
PARAMS ((rtx
, enum machine_mode
));
99 extern int ior_operand
PARAMS ((rtx
, enum machine_mode
));
100 extern void emit_bcond_fp
PARAMS ((enum rtx_code
, rtx
));
101 extern int emit_move_sequence
PARAMS ((rtx
*, enum machine_mode
, rtx
));
102 extern int emit_hpdiv_const
PARAMS ((rtx
*, int));
103 extern int is_function_label_plus_const
PARAMS ((rtx
));
104 extern int jump_in_call_delay
PARAMS ((rtx
));
105 extern enum reg_class secondary_reload_class
PARAMS ((enum reg_class
,
106 enum machine_mode
, rtx
));
107 extern int hppa_fpstore_bypass_p
PARAMS ((rtx
, rtx
));
108 extern int attr_length_millicode_call
PARAMS ((rtx
));
109 extern int attr_length_call
PARAMS ((rtx
, int));
110 extern int attr_length_indirect_call
PARAMS ((rtx
));
111 extern int attr_length_save_restore_dltp
PARAMS ((rtx
));
113 /* Declare functions defined in pa.c and used in templates. */
115 extern struct rtx_def
*return_addr_rtx
PARAMS ((int, rtx
));
117 extern int fp_reg_operand
PARAMS ((rtx
, enum machine_mode
));
118 extern int arith_double_operand
PARAMS ((rtx
, enum machine_mode
));
119 extern int ireg_operand
PARAMS ((rtx
, enum machine_mode
));
120 extern int lhs_lshift_operand
PARAMS ((rtx
, enum machine_mode
));
121 extern int pc_or_label_operand
PARAMS ((rtx
, enum machine_mode
));
123 /* expr.h defines ARGS_SIZE_RTX and `enum direction' */
125 extern enum direction function_arg_padding
PARAMS ((enum machine_mode
, tree
));
127 #endif /* ARGS_SIZE_RTX */
128 extern int non_hard_reg_operand
PARAMS ((rtx
, enum machine_mode
));
129 extern int eq_neq_comparison_operator
PARAMS ((rtx
, enum machine_mode
));
130 extern int insn_refs_are_delayed
PARAMS ((rtx
));
131 #endif /* RTX_CODE */
133 /* Prototype function used in macro CONST_OK_FOR_LETTER_P. */
134 extern int zdepi_cint_p
PARAMS ((unsigned HOST_WIDE_INT
));
136 extern struct rtx_def
*hppa_builtin_saveregs
PARAMS ((void));
138 extern void output_deferred_plabels
PARAMS ((FILE *));
139 extern void override_options
PARAMS ((void));
140 extern void output_ascii
PARAMS ((FILE *, const char *, int));
141 extern int compute_frame_size
PARAMS ((int, int *));
142 extern int and_mask_p
PARAMS ((unsigned HOST_WIDE_INT
));
143 extern int cint_ok_for_move
PARAMS ((HOST_WIDE_INT
));
144 extern void hppa_expand_prologue
PARAMS ((void));
145 extern void hppa_expand_epilogue
PARAMS ((void));
146 extern int hppa_can_use_return_insn_p
PARAMS ((void));
147 extern int ior_mask_p
PARAMS ((unsigned HOST_WIDE_INT
));
148 extern void compute_zdepdi_operands
PARAMS ((unsigned HOST_WIDE_INT
,
151 extern const char * output_64bit_and
PARAMS ((rtx
*));
152 extern const char * output_64bit_ior
PARAMS ((rtx
*));
153 extern int cmpib_comparison_operator
PARAMS ((rtx
, enum machine_mode
));
159 extern int reloc_needed
PARAMS ((tree
));
161 extern rtx function_arg
PARAMS ((CUMULATIVE_ARGS
*, enum machine_mode
,
163 extern rtx function_value
PARAMS ((tree
, tree
));
165 extern int function_arg_partial_nregs
PARAMS ((CUMULATIVE_ARGS
*,
168 #endif /* TREE_CODE */