1 /* Prototypes for exported functions defined in m68hc11.c
2 Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
3 Contributed by Stephane Carrez (stcarrez@nerim.fr)
5 This file is part of GNU CC.
7 GNU CC is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
12 GNU CC is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GNU CC; see the file COPYING. If not, write to
19 the Free Software Foundation, 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
23 extern int m68hc11_override_options
PARAMS((void));
24 extern int m68hc11_optimization_options
PARAMS((int,int));
25 extern void m68hc11_conditional_register_usage
PARAMS((void));
26 extern int hard_regno_mode_ok
PARAMS((int, enum machine_mode
));
27 extern int m68hc11_hard_regno_rename_ok
PARAMS((int, int));
29 extern int m68hc11_total_frame_size
PARAMS((void));
30 extern int m68hc11_initial_frame_pointer_offset
PARAMS((void));
31 extern int m68hc11_initial_elimination_offset
PARAMS((int, int));
33 extern void expand_prologue
PARAMS((void));
34 extern void expand_epilogue
PARAMS((void));
37 extern void m68hc11_function_arg_advance
PARAMS((CUMULATIVE_ARGS
*,
44 extern void m68hc11_initialize_trampoline
PARAMS((rtx
, rtx
, rtx
));
46 extern rtx m68hc11_expand_compare_and_branch
PARAMS((enum rtx_code
,
48 extern enum reg_class preferred_reload_class
PARAMS((rtx
, enum reg_class
));
50 extern int m68hc11_go_if_legitimate_address
PARAMS((rtx
,
54 extern int m68hc11_legitimize_address
PARAMS((rtx
*, rtx
, enum machine_mode
));
56 extern void m68hc11_notice_update_cc
PARAMS((rtx
, rtx
));
57 extern void m68hc11_notice_keep_cc
PARAMS((rtx
));
59 extern void m68hc11_gen_movqi
PARAMS((rtx
, rtx
*));
60 extern void m68hc11_gen_movhi
PARAMS((rtx
, rtx
*));
61 extern void m68hc11_gen_rotate
PARAMS((enum rtx_code
, rtx
, rtx
*));
63 extern void m68hc11_output_swap
PARAMS((rtx
,rtx
*));
65 extern int next_insn_test_reg
PARAMS((rtx
,rtx
));
67 extern void print_operand
PARAMS((FILE*,rtx
,int));
68 extern void print_operand_address
PARAMS((FILE*,rtx
));
70 extern int m68hc11_reload_operands
PARAMS((rtx
*));
72 extern int dead_register_here
PARAMS((rtx
, rtx
));
74 extern int push_pop_operand_p
PARAMS((rtx
));
75 extern void m68hc11_split_move
PARAMS((rtx
, rtx
, rtx
));
76 extern void m68hc11_split_compare_and_branch
PARAMS((enum rtx_code
,
78 extern void aux_restore_IX_IY
PARAMS((rtx
));
79 extern void aux_validate_IX_IY
PARAMS((rtx
));
81 extern rtx m68hc11_gen_lowpart
PARAMS((enum machine_mode
, rtx
));
82 extern rtx m68hc11_gen_highpart
PARAMS((enum machine_mode
, rtx
));
84 #ifdef HAVE_MACHINE_MODES
85 extern int m68hc11_memory_move_cost
PARAMS((enum machine_mode
, enum reg_class
,
87 extern int m68hc11_register_move_cost
PARAMS((enum machine_mode
,
88 enum reg_class
, enum reg_class
));
90 extern void m68hc11_emit_libcall
PARAMS((const char*, enum rtx_code
,
91 enum machine_mode
, enum machine_mode
,
93 extern int m68hc11_small_indexed_indirect_p
PARAMS((rtx
, enum machine_mode
));
94 extern int m68hc11_symbolic_p
PARAMS((rtx
, enum machine_mode
));
95 extern int m68hc11_indirect_p
PARAMS((rtx
, enum machine_mode
));
96 extern int go_if_legitimate_address2
PARAMS((rtx
, enum machine_mode
, int));
98 extern int reg_or_indexed_operand
PARAMS((rtx
,enum machine_mode
));
99 extern int tst_operand
PARAMS((rtx
,enum machine_mode
));
100 extern int cmp_operand
PARAMS((rtx
,enum machine_mode
));
101 extern int memory_indexed_operand
PARAMS((rtx
, enum machine_mode
));
103 extern void m68hc11_split_logical
PARAMS((enum machine_mode
, int, rtx
*));
105 extern int m68hc11_register_indirect_p
PARAMS((rtx
, enum machine_mode
));
107 extern int symbolic_memory_operand
PARAMS((rtx
, enum machine_mode
));
109 extern int memory_reload_operand
PARAMS((rtx
, enum machine_mode
));
110 extern int stack_register_operand
PARAMS((rtx
, enum machine_mode
));
111 extern int d_register_operand
PARAMS((rtx
, enum machine_mode
));
112 extern int hard_addr_reg_operand
PARAMS((rtx
, enum machine_mode
));
113 extern int arith_src_operand
PARAMS((rtx
, enum machine_mode
));
114 extern int m68hc11_logical_operator
PARAMS((rtx
, enum machine_mode
));
115 extern int m68hc11_arith_operator
PARAMS((rtx
, enum machine_mode
));
116 extern int m68hc11_non_shift_operator
PARAMS((rtx
, enum machine_mode
));
117 extern int m68hc11_shift_operator
PARAMS((rtx
, enum machine_mode
));
118 extern int m68hc11_unary_operator
PARAMS((rtx
, enum machine_mode
));
119 extern int m68hc11_eq_compare_operator
PARAMS((rtx
, enum machine_mode
));
120 extern int non_push_operand
PARAMS((rtx
, enum machine_mode
));
121 extern int hard_reg_operand
PARAMS((rtx
, enum machine_mode
));
122 extern int soft_reg_operand
PARAMS((rtx
, enum machine_mode
));
123 extern int reg_or_some_mem_operand
PARAMS((rtx
, enum machine_mode
));
125 #if defined TREE_CODE
126 extern void m68hc11_init_cumulative_args
PARAMS((CUMULATIVE_ARGS
*,
130 extern rtx m68hc11_function_arg
PARAMS((const CUMULATIVE_ARGS
* ,
133 extern int m68hc11_function_arg_pass_by_reference
PARAMS((const CUMULATIVE_ARGS
*,
137 extern int m68hc11_function_arg_padding
PARAMS((enum machine_mode
, tree
));
139 extern void m68hc11_function_epilogue
PARAMS((FILE*,int));
141 extern int m68hc11_is_far_symbol
PARAMS((rtx
));
142 extern int m68hc11_is_trap_symbol
PARAMS((rtx
));
144 #endif /* TREE_CODE */
146 extern HOST_WIDE_INT m68hc11_min_offset
;
147 extern HOST_WIDE_INT m68hc11_max_offset
;
149 #endif /* HAVE_MACHINE_MODES */
150 #endif /* RTX_CODE */