]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/pa/pa-protos.h
NEXT_INSN and PREV_INSN take a const rtx_insn
[thirdparty/gcc.git] / gcc / config / pa / pa-protos.h
CommitLineData
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 4This file is part of GCC.
519104fe 5
b7849684 6GCC is free software; you can redistribute it and/or modify
519104fe 7it under the terms of the GNU General Public License as published by
2f83c7d6 8the Free Software Foundation; either version 3, or (at your option)
519104fe
KG
9any later version.
10
b7849684 11GCC is distributed in the hope that it will be useful,
519104fe
KG
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
2f83c7d6
NC
17along 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 22extern rtx pa_eh_return_handler_rtx (void);
519104fe 23
fe19a83d 24/* Used in insn-*.c. */
b32d5189 25extern 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
29extern const char *pa_output_and (rtx *);
30extern const char *pa_output_64bit_and (rtx *);
31extern const char *pa_output_ior (rtx *);
32extern const char *pa_output_64bit_ior (rtx *);
33extern const char *pa_output_move_double (rtx *);
34extern const char *pa_output_fp_move_double (rtx *);
35extern const char *pa_output_block_move (rtx *, int);
36extern const char *pa_output_block_clear (rtx *, int);
b32d5189
DM
37extern const char *pa_output_cbranch (rtx *, int, rtx_insn *);
38extern const char *pa_output_lbranch (rtx, rtx_insn *, int);
39extern const char *pa_output_bb (rtx *, int, rtx_insn *, int);
40extern const char *pa_output_bvb (rtx *, int, rtx_insn *, int);
41extern const char *pa_output_dbra (rtx *, rtx_insn *, int);
42extern const char *pa_output_movb (rtx *, rtx_insn *, int, int);
43extern const char *pa_output_parallel_movb (rtx *, rtx_insn *);
44extern const char *pa_output_parallel_addb (rtx *, rtx_insn *);
432d483a
DM
45extern const char *pa_output_call (rtx_insn *, rtx, int);
46extern const char *pa_output_indirect_call (rtx_insn *, rtx);
b32d5189
DM
47extern const char *pa_output_millicode_call (rtx_insn *, rtx);
48extern const char *pa_output_mul_insn (int, rtx_insn *);
49extern const char *pa_output_div_insn (rtx *, int, rtx_insn *);
50extern const char *pa_output_mod_insn (int, rtx_insn *);
ae9d61ab 51extern const char *pa_singlemove_string (rtx *);
3ba07ad3
JDA
52extern void pa_output_addr_vec (rtx, rtx);
53extern void pa_output_addr_diff_vec (rtx, rtx);
ae9d61ab
JDA
54extern void pa_output_arg_descriptor (rtx);
55extern void pa_output_global_address (FILE *, rtx, int);
56extern void pa_print_operand (FILE *, rtx, int);
57extern void pa_encode_label (rtx);
58extern int pa_symbolic_expression_p (rtx);
432d483a 59extern int pa_adjust_insn_length (rtx_insn *, int);
ae9d61ab
JDA
60extern int pa_fmpyaddoperands (rtx *);
61extern int pa_fmpysuboperands (rtx *);
62extern void pa_emit_bcond_fp (rtx[]);
63extern int pa_emit_move_sequence (rtx *, enum machine_mode, rtx);
64extern int pa_emit_hpdiv_const (rtx *, int);
65extern int pa_is_function_label_plus_const (rtx);
b32d5189 66extern int pa_jump_in_call_delay (rtx_insn *);
ae9d61ab 67extern int pa_fpstore_bypass_p (rtx, rtx);
432d483a
DM
68extern int pa_attr_length_millicode_call (rtx_insn *);
69extern int pa_attr_length_call (rtx_insn *, int);
70extern int pa_attr_length_indirect_call (rtx_insn *);
1a04ac2b
JDA
71extern 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 76extern 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 81extern enum direction pa_function_arg_padding (enum machine_mode, const_tree);
84caa961 82#endif
519104fe 83#endif /* ARGS_SIZE_RTX */
ae9d61ab
JDA
84extern int pa_insn_refs_are_delayed (rtx);
85extern rtx pa_get_deferred_plabel (rtx);
519104fe
KG
86#endif /* RTX_CODE */
87
ae9d61ab
JDA
88extern int pa_and_mask_p (unsigned HOST_WIDE_INT);
89extern int pa_cint_ok_for_move (HOST_WIDE_INT);
90extern int pa_ior_mask_p (unsigned HOST_WIDE_INT);
91extern int pa_ldil_cint_p (HOST_WIDE_INT);
92extern int pa_shadd_constant_p (int);
93extern int pa_zdepi_cint_p (unsigned HOST_WIDE_INT);
94
95extern void pa_output_ascii (FILE *, const char *, int);
96extern HOST_WIDE_INT pa_compute_frame_size (HOST_WIDE_INT, int *);
97extern void pa_expand_prologue (void);
98extern void pa_expand_epilogue (void);
15768583 99extern bool pa_can_use_return_insn (void);
520babc7 100
d4482715 101/* Miscellaneous functions in pa.c. */
519104fe 102#ifdef TREE_CODE
ae9d61ab 103extern int pa_reloc_needed (tree);
586de218 104extern bool pa_return_in_memory (const_tree, const_tree);
519104fe 105#endif /* TREE_CODE */
9a55eab3 106
d4482715
JDA
107extern void pa_asm_output_aligned_bss (FILE *, const char *,
108 unsigned HOST_WIDE_INT,
109 unsigned int);
110extern void pa_asm_output_aligned_common (FILE *, const char *,
111 unsigned HOST_WIDE_INT,
112 unsigned int);
113extern void pa_asm_output_aligned_local (FILE *, const char *,
114 unsigned HOST_WIDE_INT,
115 unsigned int);
744b2d61 116extern void pa_hpux_asm_output_external (FILE *, tree, const char *);
6982c5d4
JDA
117extern bool pa_cannot_change_mode_class (enum machine_mode, enum machine_mode,
118 enum reg_class);
119extern bool pa_modes_tieable_p (enum machine_mode, enum machine_mode);
bc707992 120extern HOST_WIDE_INT pa_initial_elimination_offset (int, int);
d4482715 121
ae9d61ab 122extern const int pa_magic_milli[];