]>
Commit | Line | Data |
---|---|---|
519104fe | 1 | /* Prototypes for pa.c functions used in the md file & elsewhere. |
cbe34bb5 | 2 | Copyright (C) 2000-2017 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 | |
519104fe KG |
24 | /* Define functions in pa.c and used in insn-output.c. */ |
25 | ||
ae9d61ab JDA |
26 | extern const char *pa_output_and (rtx *); |
27 | extern const char *pa_output_64bit_and (rtx *); | |
28 | extern const char *pa_output_ior (rtx *); | |
29 | extern const char *pa_output_64bit_ior (rtx *); | |
30 | extern const char *pa_output_move_double (rtx *); | |
31 | extern const char *pa_output_fp_move_double (rtx *); | |
32 | extern const char *pa_output_block_move (rtx *, int); | |
33 | extern const char *pa_output_block_clear (rtx *, int); | |
b32d5189 DM |
34 | extern const char *pa_output_cbranch (rtx *, int, rtx_insn *); |
35 | extern const char *pa_output_lbranch (rtx, rtx_insn *, int); | |
36 | extern const char *pa_output_bb (rtx *, int, rtx_insn *, int); | |
37 | extern const char *pa_output_bvb (rtx *, int, rtx_insn *, int); | |
38 | extern const char *pa_output_dbra (rtx *, rtx_insn *, int); | |
39 | extern const char *pa_output_movb (rtx *, rtx_insn *, int, int); | |
40 | extern const char *pa_output_parallel_movb (rtx *, rtx_insn *); | |
41 | extern const char *pa_output_parallel_addb (rtx *, rtx_insn *); | |
432d483a DM |
42 | extern const char *pa_output_call (rtx_insn *, rtx, int); |
43 | extern const char *pa_output_indirect_call (rtx_insn *, rtx); | |
b32d5189 DM |
44 | extern const char *pa_output_millicode_call (rtx_insn *, rtx); |
45 | extern const char *pa_output_mul_insn (int, rtx_insn *); | |
46 | extern const char *pa_output_div_insn (rtx *, int, rtx_insn *); | |
47 | extern const char *pa_output_mod_insn (int, rtx_insn *); | |
ae9d61ab | 48 | extern const char *pa_singlemove_string (rtx *); |
3ba07ad3 JDA |
49 | extern void pa_output_addr_vec (rtx, rtx); |
50 | extern void pa_output_addr_diff_vec (rtx, rtx); | |
e0d80a58 | 51 | extern void pa_output_arg_descriptor (rtx_insn *); |
ae9d61ab JDA |
52 | extern void pa_output_global_address (FILE *, rtx, int); |
53 | extern void pa_print_operand (FILE *, rtx, int); | |
54 | extern void pa_encode_label (rtx); | |
55 | extern int pa_symbolic_expression_p (rtx); | |
432d483a | 56 | extern int pa_adjust_insn_length (rtx_insn *, int); |
ae9d61ab JDA |
57 | extern int pa_fmpyaddoperands (rtx *); |
58 | extern int pa_fmpysuboperands (rtx *); | |
59 | extern void pa_emit_bcond_fp (rtx[]); | |
ef4bddc2 | 60 | extern int pa_emit_move_sequence (rtx *, machine_mode, rtx); |
ae9d61ab JDA |
61 | extern int pa_emit_hpdiv_const (rtx *, int); |
62 | extern int pa_is_function_label_plus_const (rtx); | |
647d790d | 63 | extern int pa_fpstore_bypass_p (rtx_insn *, rtx_insn *); |
432d483a DM |
64 | extern int pa_attr_length_millicode_call (rtx_insn *); |
65 | extern int pa_attr_length_call (rtx_insn *, int); | |
66 | extern int pa_attr_length_indirect_call (rtx_insn *); | |
ef4bddc2 | 67 | extern rtx pa_legitimize_reload_address (rtx, machine_mode, |
1a04ac2b | 68 | int, int, int); |
519104fe KG |
69 | |
70 | /* Declare functions defined in pa.c and used in templates. */ | |
71 | ||
ae9d61ab | 72 | extern rtx pa_return_addr_rtx (int, rtx); |
519104fe | 73 | |
84034c69 | 74 | extern int pa_insn_refs_are_delayed (rtx_insn *); |
ae9d61ab | 75 | extern rtx pa_get_deferred_plabel (rtx); |
7e7c9d40 | 76 | extern rtx pa_maybe_emit_compare_and_swap_exchange_loop (rtx, rtx, rtx); |
519104fe KG |
77 | #endif /* RTX_CODE */ |
78 | ||
ae9d61ab | 79 | extern int pa_and_mask_p (unsigned HOST_WIDE_INT); |
5877e54e | 80 | extern int pa_cint_ok_for_move (unsigned HOST_WIDE_INT); |
ae9d61ab | 81 | extern int pa_ior_mask_p (unsigned HOST_WIDE_INT); |
5877e54e | 82 | extern int pa_ldil_cint_p (unsigned HOST_WIDE_INT); |
b47fbc53 | 83 | extern int pa_mem_shadd_constant_p (int); |
ae9d61ab JDA |
84 | extern int pa_shadd_constant_p (int); |
85 | extern int pa_zdepi_cint_p (unsigned HOST_WIDE_INT); | |
86 | ||
87 | extern void pa_output_ascii (FILE *, const char *, int); | |
f075bd95 | 88 | extern HOST_WIDE_INT pa_compute_frame_size (poly_int64, int *); |
ae9d61ab JDA |
89 | extern void pa_expand_prologue (void); |
90 | extern void pa_expand_epilogue (void); | |
15768583 | 91 | extern bool pa_can_use_return_insn (void); |
520babc7 | 92 | |
d4482715 | 93 | /* Miscellaneous functions in pa.c. */ |
519104fe | 94 | #ifdef TREE_CODE |
ae9d61ab | 95 | extern int pa_reloc_needed (tree); |
586de218 | 96 | extern bool pa_return_in_memory (const_tree, const_tree); |
519104fe | 97 | #endif /* TREE_CODE */ |
9a55eab3 | 98 | |
d4482715 JDA |
99 | extern void pa_asm_output_aligned_bss (FILE *, const char *, |
100 | unsigned HOST_WIDE_INT, | |
101 | unsigned int); | |
102 | extern void pa_asm_output_aligned_common (FILE *, const char *, | |
103 | unsigned HOST_WIDE_INT, | |
104 | unsigned int); | |
105 | extern void pa_asm_output_aligned_local (FILE *, const char *, | |
106 | unsigned HOST_WIDE_INT, | |
107 | unsigned int); | |
744b2d61 | 108 | extern void pa_hpux_asm_output_external (FILE *, tree, const char *); |
bc707992 | 109 | extern HOST_WIDE_INT pa_initial_elimination_offset (int, int); |
d4482715 | 110 | |
ae9d61ab | 111 | extern const int pa_magic_milli[]; |