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 GNU CC.
9 GNU CC 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 GNU CC 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 GNU CC; 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 enum attr_cc 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 const char *emit_a_rotate
PARAMS ((enum rtx_code
, rtx
*));
35 extern const char *output_simode_bld
PARAMS ((int, rtx
[]));
36 extern void print_operand_address
PARAMS ((FILE *, rtx
));
37 extern int const_costs
PARAMS ((rtx
, enum rtx_code
, enum rtx_code
));
38 extern int h8300_and_costs
PARAMS ((rtx
));
39 extern int h8300_shift_costs
PARAMS ((rtx
));
40 extern void print_operand
PARAMS ((FILE *, rtx
, int));
41 extern void final_prescan_insn
PARAMS ((rtx
, rtx
*, int));
42 extern int do_movsi
PARAMS ((rtx
[]));
43 extern void notice_update_cc
PARAMS ((rtx
, rtx
));
44 extern const char *output_logical_op
PARAMS ((enum machine_mode
, rtx
*));
45 extern unsigned int compute_logical_op_length
PARAMS ((enum machine_mode
,
47 extern int compute_logical_op_cc
PARAMS ((enum machine_mode
, rtx
*));
48 extern void expand_a_shift
PARAMS ((enum machine_mode
, int, rtx
[]));
49 extern int h8300_shift_needs_scratch_p
PARAMS ((int, enum machine_mode
));
50 extern int expand_a_rotate
PARAMS ((enum rtx_code
, rtx
[]));
51 extern int fix_bit_operand
PARAMS ((rtx
*, int, enum rtx_code
));
52 extern int h8300_adjust_insn_length
PARAMS ((rtx
, int));
53 extern void split_adds_subs
PARAMS ((enum machine_mode
, rtx
[], int));
55 extern int general_operand_src
PARAMS ((rtx
, enum machine_mode
));
56 extern int general_operand_dst
PARAMS ((rtx
, enum machine_mode
));
57 extern int single_one_operand
PARAMS ((rtx
, enum machine_mode
));
58 extern int single_zero_operand
PARAMS ((rtx
, enum machine_mode
));
59 extern int call_insn_operand
PARAMS ((rtx
, enum machine_mode
));
60 extern int two_insn_adds_subs_operand
PARAMS ((rtx
, enum machine_mode
));
61 extern int small_call_insn_operand
PARAMS ((rtx
, enum machine_mode
));
62 extern int jump_address_operand
PARAMS ((rtx
, enum machine_mode
));
63 extern int bit_operand
PARAMS ((rtx
, enum machine_mode
));
64 extern int bit_memory_operand
PARAMS ((rtx
, enum machine_mode
));
65 extern int stack_pointer_operand
PARAMS ((rtx
, enum machine_mode
));
66 extern int const_int_le_2_operand
PARAMS ((rtx
, enum machine_mode
));
67 extern int const_int_le_6_operand
PARAMS ((rtx
, enum machine_mode
));
68 extern int const_int_gt_2_operand
PARAMS ((rtx
, enum machine_mode
));
69 extern int const_int_ge_8_operand
PARAMS ((rtx
, enum machine_mode
));
70 extern int const_int_qi_operand
PARAMS ((rtx
, enum machine_mode
));
71 extern int const_int_hi_operand
PARAMS ((rtx
, enum machine_mode
));
72 extern int incdec_operand
PARAMS ((rtx
, enum machine_mode
));
73 extern int bit_operator
PARAMS ((rtx
, enum machine_mode
));
74 extern int nshift_operator
PARAMS ((rtx
, enum machine_mode
));
75 extern int eqne_operator
PARAMS ((rtx
, enum machine_mode
));
77 extern int h8300_eightbit_constant_address_p
PARAMS ((rtx
));
78 extern int h8300_tiny_constant_address_p
PARAMS ((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_current_function_interrupt_function_p
PARAMS ((void));
94 extern void asm_file_start
PARAMS ((FILE *));
95 extern void asm_file_end
PARAMS ((FILE *));
96 extern int h8300_initial_elimination_offset
PARAMS ((int, int));
98 extern void h8300_pr_interrupt
PARAMS ((struct cpp_reader
*));
99 extern void h8300_pr_saveall
PARAMS ((struct cpp_reader
*));
101 #endif /* ! GCC_H8300_PROTOS_H */