1 /* Definitions of target machine for GNU compiler.
2 Hitachi H8/300 version generating coff
3 Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
4 Contributed by Steve Chamberlain (sac@cygnus.com),
5 Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
7 This file is part of GCC.
9 GCC is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
14 GCC is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with GCC; see the file COPYING. If not, write to
21 the Free Software Foundation, 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
24 #ifndef GCC_H8300_PROTOS_H
25 #define GCC_H8300_PROTOS_H
27 /* Declarations for functions used in insn-output.c. */
29 extern const char *output_plussi
PARAMS ((rtx
*));
30 extern unsigned int compute_plussi_length
PARAMS ((rtx
*));
31 extern int compute_plussi_cc
PARAMS ((rtx
*));
32 extern const char *output_a_shift
PARAMS ((rtx
*));
33 extern unsigned int compute_a_shift_length
PARAMS ((rtx
, rtx
*));
34 extern int compute_a_shift_cc
PARAMS ((rtx
, rtx
*));
35 extern const char *emit_a_rotate
PARAMS ((enum rtx_code
, rtx
*));
36 extern const char *output_simode_bld
PARAMS ((int, rtx
[]));
37 extern void print_operand_address
PARAMS ((FILE *, rtx
));
38 extern void print_operand
PARAMS ((FILE *, rtx
, int));
39 extern void final_prescan_insn
PARAMS ((rtx
, rtx
*, int));
40 extern int do_movsi
PARAMS ((rtx
[]));
41 extern void notice_update_cc
PARAMS ((rtx
, rtx
));
42 extern const char *output_logical_op
PARAMS ((enum machine_mode
, rtx
*));
43 extern unsigned int compute_logical_op_length
PARAMS ((enum machine_mode
,
45 extern int compute_logical_op_cc
PARAMS ((enum machine_mode
, rtx
*));
46 extern void expand_a_shift
PARAMS ((enum machine_mode
, int, rtx
[]));
47 extern int h8300_shift_needs_scratch_p
PARAMS ((int, enum machine_mode
));
48 extern int expand_a_rotate
PARAMS ((enum rtx_code
, rtx
[]));
49 extern int fix_bit_operand
PARAMS ((rtx
*, int, enum rtx_code
));
50 extern int h8300_adjust_insn_length
PARAMS ((rtx
, int));
51 extern void split_adds_subs
PARAMS ((enum machine_mode
, rtx
[]));
53 extern int general_operand_src
PARAMS ((rtx
, enum machine_mode
));
54 extern int general_operand_dst
PARAMS ((rtx
, enum machine_mode
));
55 extern int single_one_operand
PARAMS ((rtx
, enum machine_mode
));
56 extern int single_zero_operand
PARAMS ((rtx
, enum machine_mode
));
57 extern int call_insn_operand
PARAMS ((rtx
, enum machine_mode
));
58 extern int two_insn_adds_subs_operand
PARAMS ((rtx
, enum machine_mode
));
59 extern int small_call_insn_operand
PARAMS ((rtx
, enum machine_mode
));
60 extern int jump_address_operand
PARAMS ((rtx
, enum machine_mode
));
61 extern int bit_operand
PARAMS ((rtx
, enum machine_mode
));
62 extern int bit_memory_operand
PARAMS ((rtx
, enum machine_mode
));
63 extern int stack_pointer_operand
PARAMS ((rtx
, enum machine_mode
));
64 extern int const_int_gt_2_operand
PARAMS ((rtx
, enum machine_mode
));
65 extern int const_int_ge_8_operand
PARAMS ((rtx
, enum machine_mode
));
66 extern int const_int_qi_operand
PARAMS ((rtx
, enum machine_mode
));
67 extern int const_int_hi_operand
PARAMS ((rtx
, enum machine_mode
));
68 extern int incdec_operand
PARAMS ((rtx
, enum machine_mode
));
69 extern int bit_operator
PARAMS ((rtx
, enum machine_mode
));
70 extern int nshift_operator
PARAMS ((rtx
, enum machine_mode
));
71 extern int eqne_operator
PARAMS ((rtx
, enum machine_mode
));
72 extern int gtle_operator
PARAMS ((rtx
, enum machine_mode
));
73 extern int gtuleu_operator
PARAMS ((rtx
, enum machine_mode
));
74 extern int iorxor_operator
PARAMS ((rtx
, enum machine_mode
));
76 extern int h8300_eightbit_constant_address_p
PARAMS ((rtx
));
77 extern int h8300_tiny_constant_address_p
PARAMS ((rtx
));
78 extern int byte_accesses_mergeable_p
PARAMS ((rtx
, rtx
));
80 /* Used in builtins.c */
81 extern rtx h8300_return_addr_rtx
PARAMS ((int, rtx
));
85 extern struct rtx_def
*function_arg
PARAMS ((CUMULATIVE_ARGS
*,
86 enum machine_mode
, tree
, int));
87 extern int h8300_funcvec_function_p
PARAMS ((tree
));
88 extern int h8300_eightbit_data_p
PARAMS ((tree
));
89 extern int h8300_tiny_data_p
PARAMS ((tree
));
90 #endif /* TREE_CODE */
92 extern void h8300_init_once
PARAMS ((void));
93 extern int h8300_can_use_return_insn_p
PARAMS ((void));
94 extern void h8300_expand_prologue
PARAMS ((void));
95 extern void h8300_expand_epilogue
PARAMS ((void));
96 extern int h8300_current_function_interrupt_function_p
PARAMS ((void));
97 extern void asm_file_start
PARAMS ((FILE *));
98 extern int h8300_initial_elimination_offset
PARAMS ((int, int));
101 extern void h8300_pr_interrupt
PARAMS ((struct cpp_reader
*));
102 extern void h8300_pr_saveall
PARAMS ((struct cpp_reader
*));
104 #endif /* ! GCC_H8300_PROTOS_H */