]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/m68k/m68k-protos.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / m68k / m68k-protos.h
CommitLineData
5505f548 1/* Definitions of target machine for GNU compiler. Sun 68000/68020 version.
a945c346 2 Copyright (C) 2000-2024 Free Software Foundation, Inc.
5505f548 3
7ec022b2 4This file is part of GCC.
5505f548 5
7ec022b2 6GCC is free software; you can redistribute it and/or modify
5505f548 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)
5505f548
KG
9any later version.
10
7ec022b2 11GCC is distributed in the hope that it will be useful,
5505f548
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/>. */
5505f548
KG
19
20/* Define functions defined in aux-output.c and used in templates. */
21
22#ifdef RTX_CODE
a4242737 23extern enum m68k_function_kind m68k_get_function_kind (tree);
860c4900 24extern HOST_WIDE_INT m68k_initial_elimination_offset (int from, int to);
01e304f8
RZ
25
26extern void split_di (rtx[], int, rtx[], rtx[]);
27
bda2a571 28extern bool valid_mov3q_const (HOST_WIDE_INT);
8a4a2253
BI
29extern const char *output_move_simode (rtx *);
30extern const char *output_move_himode (rtx *);
31extern const char *output_move_qimode (rtx *);
32extern const char *output_move_stricthi (rtx *);
33extern const char *output_move_strictqi (rtx *);
34extern const char *output_move_double (rtx *);
35extern const char *output_move_const_single (rtx *);
36extern const char *output_move_const_double (rtx *);
c85e862a 37extern const char *output_btst (rtx *, rtx, rtx, rtx_insn *, int);
8a4a2253
BI
38extern const char *output_scc_di (rtx, rtx, rtx, rtx);
39extern const char *output_addsi3 (rtx *);
40extern const char *output_andsi3 (rtx *);
41extern const char *output_iorsi3 (rtx *);
42extern const char *output_xorsi3 (rtx *);
29ca003a 43extern const char *output_call (rtx);
f7e70894 44extern const char *output_sibcall (rtx);
6cebc6cb
BS
45extern void m68k_init_cc ();
46extern void output_dbcc_and_branch (rtx *, rtx_code);
47extern rtx_code m68k_output_compare_di (rtx, rtx, rtx, rtx, rtx_insn *, rtx_code);
48extern rtx_code m68k_output_compare_si (rtx, rtx, rtx_code);
49extern rtx_code m68k_output_compare_hi (rtx, rtx, rtx_code);
50extern rtx_code m68k_output_compare_qi (rtx, rtx, rtx_code);
51extern rtx_code m68k_output_compare_fp (rtx, rtx, rtx_code);
52extern rtx_code m68k_output_btst (rtx, rtx, rtx_code, int);
53extern rtx_code m68k_output_bftst (rtx, rtx, rtx, rtx_code);
54extern rtx_code m68k_find_flags_value (rtx, rtx, rtx_code);
55
56extern const char *m68k_output_scc (rtx_code);
57extern const char *m68k_output_scc_float (rtx_code);
58extern const char *m68k_output_branch_integer (rtx_code);
59extern const char *m68k_output_branch_integer_rev (rtx_code);
60extern const char *m68k_output_branch_float (rtx_code);
61extern const char *m68k_output_branch_float_rev (rtx_code);
8a4a2253 62extern int floating_exact_log2 (rtx);
ef4bddc2 63extern bool strict_low_part_peephole_ok (machine_mode mode,
c85e862a 64 rtx_insn *first_insn, rtx target);
5505f548 65
e53b6e56 66/* Functions from m68k.cc used in macros. */
8a4a2253
BI
67extern int standard_68881_constant_p (rtx);
68extern void print_operand_address (FILE *, rtx);
69extern void print_operand (FILE *, rtx, int);
70extern void notice_update_cc (rtx, rtx);
fc2241eb
RS
71extern bool m68k_legitimate_base_reg_p (rtx, bool);
72extern bool m68k_legitimate_index_reg_p (rtx, bool);
7ffb5e78 73extern bool m68k_illegitimate_symbolic_constant_p (rtx);
ef4bddc2 74extern bool m68k_legitimate_constant_p (machine_mode, rtx);
fc2241eb
RS
75extern bool m68k_matches_q_p (rtx);
76extern bool m68k_matches_u_p (rtx);
ef4bddc2 77extern rtx legitimize_pic_address (rtx, machine_mode, rtx);
75df395f
MK
78extern rtx m68k_legitimize_tls_address (rtx);
79extern bool m68k_tls_reference_p (rtx, bool);
ef4bddc2
RS
80extern int valid_dbcc_comparison_p_2 (rtx, machine_mode);
81extern rtx m68k_libcall_value (machine_mode);
586de218 82extern rtx m68k_function_value (const_tree, const_tree);
ef4bddc2 83extern int emit_move_sequence (rtx *, machine_mode, rtx);
a40ed0f3
KH
84extern bool m68k_movem_pattern_p (rtx, rtx, HOST_WIDE_INT, bool);
85extern const char *m68k_output_movem (rtx *, rtx, HOST_WIDE_INT, bool);
175aed00 86extern bool m68k_epilogue_uses (int);
55bc61a7 87extern void m68k_final_prescan_insn (rtx_insn *, rtx *, int);
cfca21cb 88
e53b6e56 89/* Functions from m68k.cc used in constraints.md. */
75df395f
MK
90extern rtx m68k_unwrap_symbol (rtx, bool);
91
e53b6e56 92/* Functions from m68k.cc used in genattrtab. */
fb7803cb
MK
93#ifdef HAVE_ATTR_cpu
94extern enum attr_cpu m68k_sched_cpu;
826fadba 95extern enum attr_mac m68k_sched_mac;
fb7803cb 96
647d790d
DM
97extern enum attr_opx_type m68k_sched_attr_opx_type (rtx_insn *, int);
98extern enum attr_opy_type m68k_sched_attr_opy_type (rtx_insn *, int);
84034c69
DM
99extern enum attr_size m68k_sched_attr_size (rtx_insn *);
100extern enum attr_op_mem m68k_sched_attr_op_mem (rtx_insn *);
fb7803cb
MK
101#endif /* HAVE_ATTR_cpu */
102
5505f548
KG
103#endif /* RTX_CODE */
104
ffa2596e 105extern enum reg_class m68k_secondary_reload_class (enum reg_class,
ef4bddc2 106 machine_mode, rtx);
ffa2596e 107extern enum reg_class m68k_preferred_reload_class (rtx, enum reg_class);
a40ed0f3 108extern void m68k_expand_prologue (void);
a2bda628 109extern bool m68k_use_return_insn (void);
f7e70894 110extern void m68k_expand_epilogue (bool);
7eb4f044
NS
111extern const char *m68k_cpp_cpu_ident (const char *);
112extern const char *m68k_cpp_cpu_family (const char *);
8a4a2253 113extern void init_68881_table (void);
29ca003a 114extern rtx m68k_legitimize_call_address (rtx);
f7e70894 115extern rtx m68k_legitimize_sibcall_address (rtx);
cfca21cb 116extern int m68k_hard_regno_rename_ok(unsigned int, unsigned int);
7b4df2bf 117extern poly_int64 m68k_push_rounding (poly_int64);