]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/frv/frv-protos.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / frv / frv-protos.h
CommitLineData
efb6037d 1/* Frv prototypes.
fbd26352 2 Copyright (C) 1999-2019 Free Software Foundation, Inc.
efb6037d 3 Contributed by Red Hat, Inc.
4
187b36cf 5This file is part of GCC.
efb6037d 6
187b36cf 7GCC is free software; you can redistribute it and/or modify
efb6037d 8it under the terms of the GNU General Public License as published by
038d1e19 9the Free Software Foundation; either version 3, or (at your option)
efb6037d 10any later version.
11
187b36cf 12GCC is distributed in the hope that it will be useful,
efb6037d 13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
038d1e19 18along with GCC; see the file COPYING3. If not see
19<http://www.gnu.org/licenses/>. */
efb6037d 20
efb6037d 21/* Define functions defined in frv.c */
ab2e8833 22extern void frv_expand_prologue (void);
d9b1ff5b 23extern void frv_expand_epilogue (bool);
ab2e8833 24extern frv_stack_t *frv_stack_info (void);
25extern void frv_debug_stack (frv_stack_t *);
ab2e8833 26extern int frv_initial_elimination_offset (int, int);
7f518cd8 27extern void frv_ifcvt_machdep_init (void *);
efb6037d 28
29#ifdef RTX_CODE
3754d046 30extern int frv_legitimate_address_p_1 (machine_mode, rtx,
3e7f6cce 31 int, int, int);
32extern rtx frv_find_base_term (rtx);
efb6037d 33
34#ifdef TREE_CODE
ab2e8833 35extern void frv_init_cumulative_args (CUMULATIVE_ARGS *, tree,
36 rtx, tree, int);
efb6037d 37
eeea81f9 38extern bool frv_function_value_regno_p (const unsigned int);
efb6037d 39#endif /* TREE_CODE */
40
ab2e8833 41extern int frv_expand_block_move (rtx *);
42extern int frv_expand_block_clear (rtx *);
43extern rtx frv_dynamic_chain_address (rtx);
44extern rtx frv_return_addr_rtx (int, rtx);
3754d046 45extern rtx frv_index_memory (rtx, machine_mode, int);
efb6037d 46extern const char *frv_asm_output_opcode
ab2e8833 47 (FILE *, const char *);
ed3e6e5d 48extern void frv_final_prescan_insn (rtx_insn *, rtx *, int);
3754d046 49extern void frv_emit_move (machine_mode, rtx, rtx);
ab2e8833 50extern int frv_emit_movsi (rtx, rtx);
51extern const char *output_move_single (rtx *, rtx);
52extern const char *output_move_double (rtx *, rtx);
efb6037d 53extern const char *output_condmove_single
ab2e8833 54 (rtx *, rtx);
74f4459c 55extern int frv_emit_cond_branch (rtx *);
56extern int frv_emit_scc (rtx *);
ab2e8833 57extern rtx frv_split_scc (rtx, rtx, rtx, rtx, HOST_WIDE_INT);
58extern int frv_emit_cond_move (rtx, rtx, rtx, rtx);
59extern rtx frv_split_cond_move (rtx *);
60extern rtx frv_split_minmax (rtx *);
61extern rtx frv_split_abs (rtx *);
62extern void frv_split_double_load (rtx, rtx);
63extern void frv_split_double_store (rtx, rtx);
99a10418 64#ifdef BB_HEAD
e5a23585 65extern void frv_ifcvt_init_extra_fields (struct ce_if_block *);
66extern void frv_ifcvt_modify_tests (struct ce_if_block *, rtx *, rtx *);
efb6037d 67extern void frv_ifcvt_modify_multiple_tests
e5a23585 68 (struct ce_if_block *, basic_block,
ab2e8833 69 rtx *, rtx *);
6b63fbbe 70extern rtx frv_ifcvt_modify_insn (struct ce_if_block *, rtx, rtx_insn *);
e5a23585 71extern void frv_ifcvt_modify_final (struct ce_if_block *);
72extern void frv_ifcvt_modify_cancel (struct ce_if_block *);
efb6037d 73#endif
efb6037d 74extern enum reg_class frv_secondary_reload_class
a3eb7c77 75 (enum reg_class,
3754d046 76 machine_mode, rtx);
8deb3959 77extern int frv_class_max_nregs (enum reg_class rclass,
3754d046 78 machine_mode mode);
79extern machine_mode frv_select_cc_mode (enum rtx_code, rtx, rtx);
efb6037d 80#endif /* RTX_CODE */
81
2da3e390 82extern int frv_trampoline_size (void);
ab2e8833 83extern int direct_return_p (void);
52cce740 84extern int frv_issue_rate (void);
85extern int frv_acc_group (rtx);
efb6037d 86
87#ifdef TREE_CODE
ab2e8833 88extern int frv_adjust_field_align (tree, int);
efb6037d 89#endif
90
efb6037d 91#ifdef RTX_CODE
3754d046 92extern int integer_register_operand (rtx, machine_mode);
93extern int frv_load_operand (rtx, machine_mode);
94extern int gpr_or_fpr_operand (rtx, machine_mode);
95extern int gpr_no_subreg_operand (rtx, machine_mode);
96extern int gpr_or_int6_operand (rtx, machine_mode);
97extern int fpr_or_int6_operand (rtx, machine_mode);
98extern int gpr_or_int_operand (rtx, machine_mode);
99extern int gpr_or_int12_operand (rtx, machine_mode);
100extern int gpr_fpr_or_int12_operand (rtx, machine_mode);
101extern int gpr_or_int10_operand (rtx, machine_mode);
102extern int move_source_operand (rtx, machine_mode);
103extern int move_destination_operand (rtx, machine_mode);
104extern int condexec_source_operand (rtx, machine_mode);
105extern int condexec_dest_operand (rtx, machine_mode);
106extern int lr_operand (rtx, machine_mode);
107extern int gpr_or_memory_operand (rtx, machine_mode);
108extern int fpr_or_memory_operand (rtx, machine_mode);
109extern int reg_or_0_operand (rtx, machine_mode);
110extern int fcc_operand (rtx, machine_mode);
111extern int icc_operand (rtx, machine_mode);
112extern int cc_operand (rtx, machine_mode);
113extern int fcr_operand (rtx, machine_mode);
114extern int icr_operand (rtx, machine_mode);
115extern int cr_operand (rtx, machine_mode);
116extern int call_operand (rtx, machine_mode);
117extern int fpr_operand (rtx, machine_mode);
118extern int even_reg_operand (rtx, machine_mode);
119extern int odd_reg_operand (rtx, machine_mode);
120extern int even_gpr_operand (rtx, machine_mode);
121extern int odd_gpr_operand (rtx, machine_mode);
122extern int quad_fpr_operand (rtx, machine_mode);
123extern int even_fpr_operand (rtx, machine_mode);
124extern int odd_fpr_operand (rtx, machine_mode);
125extern int dbl_memory_one_insn_operand (rtx, machine_mode);
126extern int dbl_memory_two_insn_operand (rtx, machine_mode);
127extern int int12_operand (rtx, machine_mode);
128extern int int6_operand (rtx, machine_mode);
129extern int int5_operand (rtx, machine_mode);
130extern int uint5_operand (rtx, machine_mode);
131extern int uint4_operand (rtx, machine_mode);
132extern int uint1_operand (rtx, machine_mode);
133extern int int_2word_operand (rtx, machine_mode);
134extern int pic_register_operand (rtx, machine_mode);
135extern int pic_symbolic_operand (rtx, machine_mode);
136extern int small_data_register_operand (rtx, machine_mode);
137extern int small_data_symbolic_operand (rtx, machine_mode);
138extern int upper_int16_operand (rtx, machine_mode);
139extern int uint16_operand (rtx, machine_mode);
140extern int symbolic_operand (rtx, machine_mode);
141extern int relational_operator (rtx, machine_mode);
142extern int signed_relational_operator (rtx, machine_mode);
143extern int unsigned_relational_operator (rtx, machine_mode);
144extern int float_relational_operator (rtx, machine_mode);
145extern int ccr_eqne_operator (rtx, machine_mode);
146extern int minmax_operator (rtx, machine_mode);
147extern int condexec_si_binary_operator (rtx, machine_mode);
148extern int condexec_si_media_operator (rtx, machine_mode);
149extern int condexec_si_divide_operator (rtx, machine_mode);
150extern int condexec_si_unary_operator (rtx, machine_mode);
151extern int condexec_sf_conv_operator (rtx, machine_mode);
152extern int condexec_sf_add_operator (rtx, machine_mode);
153extern int condexec_memory_operand (rtx, machine_mode);
154extern int intop_compare_operator (rtx, machine_mode);
155extern int acc_operand (rtx, machine_mode);
156extern int even_acc_operand (rtx, machine_mode);
157extern int quad_acc_operand (rtx, machine_mode);
158extern int accg_operand (rtx, machine_mode);
ab2e8833 159extern rtx frv_matching_accg_for_acc (rtx);
d9b1ff5b 160extern void frv_expand_fdpic_call (rtx *, bool, bool);
3e7f6cce 161extern rtx frv_gen_GPsym2reg (rtx, rtx);
3754d046 162extern int frv_legitimate_memory_operand (rtx, machine_mode, int);
52ba7179 163
164/* Information about a relocation unspec. SYMBOL is the relocation symbol
165 (a SYMBOL_REF or LABEL_REF), RELOC is the type of relocation and OFFSET
166 is the constant addend. */
167struct frv_unspec {
168 rtx symbol;
169 int reloc;
170 HOST_WIDE_INT offset;
171};
172
173extern bool frv_const_unspec_p (rtx, struct frv_unspec *);
174
efb6037d 175#endif
176