]>
Commit | Line | Data |
---|---|---|
519104fe | 1 | /* Prototypes for pa.c functions used in the md file & elsewhere. |
23a5b65a | 2 | Copyright (C) 2000-2014 Free Software Foundation, Inc. |
519104fe | 3 | |
b7849684 | 4 | This file is part of GCC. |
519104fe | 5 | |
b7849684 | 6 | GCC is free software; you can redistribute it and/or modify |
519104fe | 7 | it under the terms of the GNU General Public License as published by |
2f83c7d6 | 8 | the Free Software Foundation; either version 3, or (at your option) |
519104fe KG |
9 | any later version. |
10 | ||
b7849684 | 11 | GCC is distributed in the hope that it will be useful, |
519104fe KG |
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. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
2f83c7d6 NC |
17 | along with GCC; see the file COPYING3. If not see |
18 | <http://www.gnu.org/licenses/>. */ | |
519104fe KG |
19 | |
20 | #ifdef RTX_CODE | |
fe19a83d | 21 | /* Prototype function used in various macros. */ |
16c16a24 | 22 | extern rtx pa_eh_return_handler_rtx (void); |
519104fe | 23 | |
fe19a83d | 24 | /* Used in insn-*.c. */ |
b32d5189 | 25 | extern int pa_following_call (rtx_insn *); |
519104fe | 26 | |
519104fe KG |
27 | /* Define functions in pa.c and used in insn-output.c. */ |
28 | ||
ae9d61ab JDA |
29 | extern const char *pa_output_and (rtx *); |
30 | extern const char *pa_output_64bit_and (rtx *); | |
31 | extern const char *pa_output_ior (rtx *); | |
32 | extern const char *pa_output_64bit_ior (rtx *); | |
33 | extern const char *pa_output_move_double (rtx *); | |
34 | extern const char *pa_output_fp_move_double (rtx *); | |
35 | extern const char *pa_output_block_move (rtx *, int); | |
36 | extern const char *pa_output_block_clear (rtx *, int); | |
b32d5189 DM |
37 | extern const char *pa_output_cbranch (rtx *, int, rtx_insn *); |
38 | extern const char *pa_output_lbranch (rtx, rtx_insn *, int); | |
39 | extern const char *pa_output_bb (rtx *, int, rtx_insn *, int); | |
40 | extern const char *pa_output_bvb (rtx *, int, rtx_insn *, int); | |
41 | extern const char *pa_output_dbra (rtx *, rtx_insn *, int); | |
42 | extern const char *pa_output_movb (rtx *, rtx_insn *, int, int); | |
43 | extern const char *pa_output_parallel_movb (rtx *, rtx_insn *); | |
44 | extern const char *pa_output_parallel_addb (rtx *, rtx_insn *); | |
432d483a DM |
45 | extern const char *pa_output_call (rtx_insn *, rtx, int); |
46 | extern const char *pa_output_indirect_call (rtx_insn *, rtx); | |
b32d5189 DM |
47 | extern const char *pa_output_millicode_call (rtx_insn *, rtx); |
48 | extern const char *pa_output_mul_insn (int, rtx_insn *); | |
49 | extern const char *pa_output_div_insn (rtx *, int, rtx_insn *); | |
50 | extern const char *pa_output_mod_insn (int, rtx_insn *); | |
ae9d61ab | 51 | extern const char *pa_singlemove_string (rtx *); |
3ba07ad3 JDA |
52 | extern void pa_output_addr_vec (rtx, rtx); |
53 | extern void pa_output_addr_diff_vec (rtx, rtx); | |
ae9d61ab JDA |
54 | extern void pa_output_arg_descriptor (rtx); |
55 | extern void pa_output_global_address (FILE *, rtx, int); | |
56 | extern void pa_print_operand (FILE *, rtx, int); | |
57 | extern void pa_encode_label (rtx); | |
58 | extern int pa_symbolic_expression_p (rtx); | |
432d483a | 59 | extern int pa_adjust_insn_length (rtx_insn *, int); |
ae9d61ab JDA |
60 | extern int pa_fmpyaddoperands (rtx *); |
61 | extern int pa_fmpysuboperands (rtx *); | |
62 | extern void pa_emit_bcond_fp (rtx[]); | |
63 | extern int pa_emit_move_sequence (rtx *, enum machine_mode, rtx); | |
64 | extern int pa_emit_hpdiv_const (rtx *, int); | |
65 | extern int pa_is_function_label_plus_const (rtx); | |
b32d5189 | 66 | extern int pa_jump_in_call_delay (rtx_insn *); |
ae9d61ab | 67 | extern int pa_fpstore_bypass_p (rtx, rtx); |
432d483a DM |
68 | extern int pa_attr_length_millicode_call (rtx_insn *); |
69 | extern int pa_attr_length_call (rtx_insn *, int); | |
70 | extern int pa_attr_length_indirect_call (rtx_insn *); | |
1a04ac2b JDA |
71 | extern rtx pa_legitimize_reload_address (rtx, enum machine_mode, |
72 | int, int, int); | |
519104fe KG |
73 | |
74 | /* Declare functions defined in pa.c and used in templates. */ | |
75 | ||
ae9d61ab | 76 | extern rtx pa_return_addr_rtx (int, rtx); |
519104fe | 77 | |
519104fe KG |
78 | #ifdef ARGS_SIZE_RTX |
79 | /* expr.h defines ARGS_SIZE_RTX and `enum direction' */ | |
84caa961 | 80 | #ifdef TREE_CODE |
ae9d61ab | 81 | extern enum direction pa_function_arg_padding (enum machine_mode, const_tree); |
84caa961 | 82 | #endif |
519104fe | 83 | #endif /* ARGS_SIZE_RTX */ |
ae9d61ab JDA |
84 | extern int pa_insn_refs_are_delayed (rtx); |
85 | extern rtx pa_get_deferred_plabel (rtx); | |
519104fe KG |
86 | #endif /* RTX_CODE */ |
87 | ||
ae9d61ab JDA |
88 | extern int pa_and_mask_p (unsigned HOST_WIDE_INT); |
89 | extern int pa_cint_ok_for_move (HOST_WIDE_INT); | |
90 | extern int pa_ior_mask_p (unsigned HOST_WIDE_INT); | |
91 | extern int pa_ldil_cint_p (HOST_WIDE_INT); | |
92 | extern int pa_shadd_constant_p (int); | |
93 | extern int pa_zdepi_cint_p (unsigned HOST_WIDE_INT); | |
94 | ||
95 | extern void pa_output_ascii (FILE *, const char *, int); | |
96 | extern HOST_WIDE_INT pa_compute_frame_size (HOST_WIDE_INT, int *); | |
97 | extern void pa_expand_prologue (void); | |
98 | extern void pa_expand_epilogue (void); | |
15768583 | 99 | extern bool pa_can_use_return_insn (void); |
520babc7 | 100 | |
d4482715 | 101 | /* Miscellaneous functions in pa.c. */ |
519104fe | 102 | #ifdef TREE_CODE |
ae9d61ab | 103 | extern int pa_reloc_needed (tree); |
586de218 | 104 | extern bool pa_return_in_memory (const_tree, const_tree); |
519104fe | 105 | #endif /* TREE_CODE */ |
9a55eab3 | 106 | |
d4482715 JDA |
107 | extern void pa_asm_output_aligned_bss (FILE *, const char *, |
108 | unsigned HOST_WIDE_INT, | |
109 | unsigned int); | |
110 | extern void pa_asm_output_aligned_common (FILE *, const char *, | |
111 | unsigned HOST_WIDE_INT, | |
112 | unsigned int); | |
113 | extern void pa_asm_output_aligned_local (FILE *, const char *, | |
114 | unsigned HOST_WIDE_INT, | |
115 | unsigned int); | |
744b2d61 | 116 | extern void pa_hpux_asm_output_external (FILE *, tree, const char *); |
6982c5d4 JDA |
117 | extern bool pa_cannot_change_mode_class (enum machine_mode, enum machine_mode, |
118 | enum reg_class); | |
119 | extern bool pa_modes_tieable_p (enum machine_mode, enum machine_mode); | |
bc707992 | 120 | extern HOST_WIDE_INT pa_initial_elimination_offset (int, int); |
d4482715 | 121 | |
ae9d61ab | 122 | extern const int pa_magic_milli[]; |