1 /* Definitions of target machine for GNU compiler, for Intel 80960
3 Free Software Foundation, Inc.
4 Contributed by Steven McGeady, Intel Corp.
5 Additional Work by Glenn Colon-Bonet, Jonathan Shapiro, Andy Wilson
6 Converted to GCC 2.0 by Jim Wilson and Michael Tiemann, Cygnus Support.
8 This file is part of GNU CC.
10 GNU CC is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2, or (at your option)
15 GNU CC is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with GNU CC; see the file COPYING. If not, write to
22 the Free Software Foundation, 59 Temple Place - Suite 330,
23 Boston, MA 02111-1307, USA. */
25 #ifndef GCC_I960_PROTOS_H
26 #define GCC_I960_PROTOS_H
29 extern struct rtx_def
*legitimize_address
PARAMS ((rtx
, rtx
, enum machine_mode
));
30 /* Define the function that build the compare insn for scc and bcc. */
32 extern struct rtx_def
*gen_compare_reg
PARAMS ((enum rtx_code
, rtx
, rtx
));
34 /* Define functions in i960.c and used in insn-output.c. */
36 extern const char *i960_output_ldconst
PARAMS ((rtx
, rtx
));
37 extern const char *i960_output_call_insn
PARAMS ((rtx
, rtx
, rtx
, rtx
));
38 extern const char *i960_output_ret_insn
PARAMS ((rtx
));
39 extern const char *i960_output_move_double
PARAMS ((rtx
, rtx
));
40 extern const char *i960_output_move_double_zero
PARAMS ((rtx
));
41 extern const char *i960_output_move_quad
PARAMS ((rtx
, rtx
));
42 extern const char *i960_output_move_quad_zero
PARAMS ((rtx
));
44 extern int literal
PARAMS ((rtx
, enum machine_mode
));
45 extern int hard_regno_mode_ok
PARAMS ((int, enum machine_mode
));
46 extern int fp_literal
PARAMS ((rtx
, enum machine_mode
));
47 extern int signed_literal
PARAMS ((rtx
, enum machine_mode
));
48 extern int legitimate_address_p
PARAMS ((enum machine_mode
, rtx
, int));
49 extern void i960_print_operand
PARAMS ((FILE *, rtx
, int));
50 extern int fpmove_src_operand
PARAMS ((rtx
, enum machine_mode
));
51 extern int arith_operand
PARAMS ((rtx
, enum machine_mode
));
52 extern int logic_operand
PARAMS ((rtx
, enum machine_mode
));
53 extern int fp_arith_operand
PARAMS ((rtx
, enum machine_mode
));
54 extern int signed_arith_operand
PARAMS ((rtx
, enum machine_mode
));
55 extern int fp_literal_one
PARAMS ((rtx
, enum machine_mode
));
56 extern int fp_literal_zero
PARAMS ((rtx
, enum machine_mode
));
57 extern int symbolic_memory_operand
PARAMS ((rtx
, enum machine_mode
));
58 extern int eq_or_neq
PARAMS ((rtx
, enum machine_mode
));
59 extern int arith32_operand
PARAMS ((rtx
, enum machine_mode
));
60 extern int power2_operand
PARAMS ((rtx
, enum machine_mode
));
61 extern int cmplpower2_operand
PARAMS ((rtx
, enum machine_mode
));
62 extern enum machine_mode select_cc_mode
PARAMS ((RTX_CODE
, rtx
));
63 extern int i960_address_cost
PARAMS ((rtx
));
64 extern int emit_move_sequence
PARAMS ((rtx
*, enum machine_mode
));
65 extern int i960_bypass
PARAMS ((rtx
, rtx
, rtx
, int));
66 extern void i960_print_operand_addr
PARAMS ((FILE *, rtx
));
67 extern int i960_expr_alignment
PARAMS ((rtx
, int));
68 extern int i960_improve_align
PARAMS ((rtx
, rtx
, int));
69 extern int i960_si_ti
PARAMS ((rtx
, rtx
));
70 extern int i960_si_di
PARAMS ((rtx
, rtx
));
72 extern struct rtx_def
*i960_function_arg
PARAMS ((CUMULATIVE_ARGS
*,
75 extern rtx i960_va_arg
PARAMS ((tree
, tree
));
76 extern void i960_va_start
PARAMS ((tree
, rtx
));
77 #endif /* TREE_CODE */
78 extern enum reg_class secondary_reload_class
PARAMS ((enum reg_class
, enum machine_mode
, rtx
));
82 extern void i960_function_name_declare
PARAMS ((FILE *, const char *, tree
));
83 extern void i960_function_arg_advance
PARAMS ((CUMULATIVE_ARGS
*, enum machine_mode
, tree
, int));
84 extern int i960_round_align
PARAMS ((int, tree
));
85 extern void i960_setup_incoming_varargs
PARAMS ((CUMULATIVE_ARGS
*, enum machine_mode
, tree
, int *, int));
86 extern tree i960_build_va_list
PARAMS ((void));
87 extern int i960_final_reg_parm_stack_space
PARAMS ((int, tree
));
88 extern int i960_reg_parm_stack_space
PARAMS ((tree
));
89 extern void i960_output_mi_thunk
PARAMS ((FILE *, tree
, HOST_WIDE_INT
, tree
));
90 #endif /* TREE_CODE */
92 extern int process_pragma
PARAMS ((int(*)(void), void(*)(int), const char *));
93 extern int i960_object_bytes_bitalign
PARAMS ((int));
94 extern void i960_initialize
PARAMS ((void));
95 extern int bitpos
PARAMS ((unsigned int));
96 extern int is_mask
PARAMS ((unsigned int));
97 extern int bitstr
PARAMS ((unsigned int, int *, int *));
98 extern int compute_frame_size
PARAMS ((int));
99 extern void output_function_profiler
PARAMS ((FILE *, int));
100 extern void i960_scan_opcode
PARAMS ((const char *));
102 #ifdef GCC_C_PRAGMA_H
103 extern void i960_pr_align
PARAMS ((cpp_reader
*));
104 extern void i960_pr_noalign
PARAMS ((cpp_reader
*));
107 #endif /* ! GCC_I960_PROTOS_H */