1 /* Prototypes for pa.c functions used in the md file & elsewhere.
2 Copyright (C) 2000 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 ((int, 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_millicode_call
PARAMS ((rtx
, rtx
));
55 extern const char *output_mul_insn
PARAMS ((int, rtx
));
56 extern const char *output_div_insn
PARAMS ((rtx
*, int, rtx
));
57 extern const char *output_mod_insn
PARAMS ((int, rtx
));
58 extern const char *singlemove_string
PARAMS ((rtx
*));
59 extern void output_arg_descriptor
PARAMS ((rtx
));
60 extern void output_global_address
PARAMS ((FILE *, rtx
, int));
61 extern void print_operand
PARAMS ((FILE *, rtx
, int));
62 extern rtx legitimize_pic_address
PARAMS ((rtx
, enum machine_mode
, rtx
));
63 extern struct rtx_def
*gen_cmp_fp
PARAMS ((enum rtx_code
, rtx
, rtx
));
64 extern void hppa_encode_label
PARAMS ((rtx
, int));
65 extern int arith11_operand
PARAMS ((rtx
, enum machine_mode
));
66 extern int symbolic_expression_p
PARAMS ((rtx
));
67 extern int hppa_address_cost
PARAMS ((rtx
));
68 extern int symbolic_memory_operand
PARAMS ((rtx
, enum machine_mode
));
69 extern int pa_adjust_cost
PARAMS ((rtx
, rtx
, rtx
, int));
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_or_0_operand
PARAMS ((rtx
, enum machine_mode
));
88 extern int reg_or_0_or_nonsymb_mem_operand
PARAMS ((rtx
, enum machine_mode
));
89 extern int pre_cint_operand
PARAMS ((rtx
, enum machine_mode
));
90 extern int post_cint_operand
PARAMS ((rtx
, enum machine_mode
));
91 extern int div_operand
PARAMS ((rtx
, enum machine_mode
));
92 extern int int5_operand
PARAMS ((rtx
, enum machine_mode
));
93 extern int movb_comparison_operator
PARAMS ((rtx
, enum machine_mode
));
94 extern int ireg_or_int5_operand
PARAMS ((rtx
, enum machine_mode
));
95 extern int fmpyaddoperands
PARAMS ((rtx
*));
96 extern int fmpysuboperands
PARAMS ((rtx
*));
97 extern int call_operand_address
PARAMS ((rtx
, enum machine_mode
));
98 extern int ior_operand
PARAMS ((rtx
, enum machine_mode
));
99 extern void emit_bcond_fp
PARAMS ((enum rtx_code
, rtx
));
100 extern int emit_move_sequence
PARAMS ((rtx
*, enum machine_mode
, rtx
));
101 extern int emit_hpdiv_const
PARAMS ((rtx
*, int));
102 extern int is_function_label_plus_const
PARAMS ((rtx
));
103 extern int jump_in_call_delay
PARAMS ((rtx
));
104 extern enum reg_class secondary_reload_class
PARAMS ((enum reg_class
,
105 enum machine_mode
, rtx
));
107 /* Declare functions defined in pa.c and used in templates. */
109 extern struct rtx_def
*return_addr_rtx
PARAMS ((int, rtx
));
111 extern int fp_reg_operand
PARAMS ((rtx
, enum machine_mode
));
112 extern int arith_double_operand
PARAMS ((rtx
, enum machine_mode
));
113 extern int ireg_operand
PARAMS ((rtx
, enum machine_mode
));
114 extern int lhs_lshift_operand
PARAMS ((rtx
, enum machine_mode
));
115 extern int pc_or_label_operand
PARAMS ((rtx
, enum machine_mode
));
117 /* expr.h defines ARGS_SIZE_RTX and `enum direction' */
119 extern enum direction function_arg_padding
PARAMS ((enum machine_mode
, tree
));
121 #endif /* ARGS_SIZE_RTX */
122 extern int non_hard_reg_operand
PARAMS ((rtx
, enum machine_mode
));
123 extern int eq_neq_comparison_operator
PARAMS ((rtx
, enum machine_mode
));
124 extern int insn_refs_are_delayed
PARAMS ((rtx
));
125 #endif /* RTX_CODE */
127 /* Prototype function used in macro CONST_OK_FOR_LETTER_P. */
128 extern int zdepi_cint_p
PARAMS ((unsigned HOST_WIDE_INT
));
130 extern struct rtx_def
*hppa_builtin_saveregs
PARAMS ((void));
132 extern void output_deferred_plabels
PARAMS ((FILE *));
133 extern void override_options
PARAMS ((void));
134 extern void output_ascii
PARAMS ((FILE *, const unsigned char *, int));
135 extern void output_function_prologue
PARAMS ((FILE *, int));
136 extern void output_function_epilogue
PARAMS ((FILE *, int));
137 extern int compute_frame_size
PARAMS ((int, int *));
138 extern int and_mask_p
PARAMS ((unsigned HOST_WIDE_INT
));
139 extern int cint_ok_for_move
PARAMS ((HOST_WIDE_INT
));
140 extern void hppa_expand_prologue
PARAMS ((void));
141 extern void hppa_expand_epilogue
PARAMS ((void));
142 extern int hppa_can_use_return_insn_p
PARAMS ((void));
143 extern int ior_mask_p
PARAMS ((unsigned HOST_WIDE_INT
));
144 extern void compute_zdepdi_operands
PARAMS ((unsigned HOST_WIDE_INT
,
147 extern char * output_64bit_and
PARAMS ((rtx
*));
148 extern char * output_64bit_ior
PARAMS ((rtx
*));
149 extern int cmpib_comparison_operator
PARAMS ((rtx
, enum machine_mode
));
155 extern int reloc_needed
PARAMS ((tree
));
157 extern rtx function_arg
PARAMS ((CUMULATIVE_ARGS
*, enum machine_mode
,
160 extern int function_arg_partial_nregs
PARAMS ((CUMULATIVE_ARGS
*,
163 #endif /* TREE_CODE */