sparc-protos.h revision 1.1 1 1.1 mrg /* Prototypes of target machine for SPARC.
2 1.1 mrg Copyright (C) 1999, 2000, 2003, 2004, 2005, 2007, 2008, 2009, 2010
3 1.1 mrg Free Software Foundation, Inc.
4 1.1 mrg Contributed by Michael Tiemann (tiemann (at) cygnus.com).
5 1.1 mrg 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
6 1.1 mrg at Cygnus Support.
7 1.1 mrg
8 1.1 mrg This file is part of GCC.
9 1.1 mrg
10 1.1 mrg GCC is free software; you can redistribute it and/or modify
11 1.1 mrg it under the terms of the GNU General Public License as published by
12 1.1 mrg the Free Software Foundation; either version 3, or (at your option)
13 1.1 mrg any later version.
14 1.1 mrg
15 1.1 mrg GCC is distributed in the hope that it will be useful,
16 1.1 mrg but WITHOUT ANY WARRANTY; without even the implied warranty of
17 1.1 mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 1.1 mrg GNU General Public License for more details.
19 1.1 mrg
20 1.1 mrg You should have received a copy of the GNU General Public License
21 1.1 mrg along with GCC; see the file COPYING3. If not see
22 1.1 mrg <http://www.gnu.org/licenses/>. */
23 1.1 mrg
24 1.1 mrg #ifndef __SPARC_PROTOS_H__
25 1.1 mrg #define __SPARC_PROTOS_H__
26 1.1 mrg
27 1.1 mrg #ifdef TREE_CODE
28 1.1 mrg extern struct rtx_def *function_value (const_tree, enum machine_mode, int);
29 1.1 mrg extern void function_arg_advance (CUMULATIVE_ARGS *,
30 1.1 mrg enum machine_mode, tree, int);
31 1.1 mrg extern struct rtx_def *function_arg (const CUMULATIVE_ARGS *,
32 1.1 mrg enum machine_mode, tree, int, int);
33 1.1 mrg #ifdef RTX_CODE
34 1.1 mrg extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
35 1.1 mrg #endif
36 1.1 mrg extern unsigned long sparc_type_code (tree);
37 1.1 mrg #ifdef ARGS_SIZE_RTX
38 1.1 mrg /* expr.h defines ARGS_SIZE_RTX and `enum direction' */
39 1.1 mrg extern enum direction function_arg_padding (enum machine_mode, const_tree);
40 1.1 mrg #endif /* ARGS_SIZE_RTX */
41 1.1 mrg #endif /* TREE_CODE */
42 1.1 mrg
43 1.1 mrg extern void order_regs_for_local_alloc (void);
44 1.1 mrg extern HOST_WIDE_INT sparc_compute_frame_size (HOST_WIDE_INT, int);
45 1.1 mrg extern void sparc_expand_prologue (void);
46 1.1 mrg extern void sparc_expand_epilogue (void);
47 1.1 mrg extern bool sparc_can_use_return_insn_p (void);
48 1.1 mrg extern int check_pic (int);
49 1.1 mrg extern int short_branch (int, int);
50 1.1 mrg extern void sparc_profile_hook (int);
51 1.1 mrg extern void sparc_optimization_options (int, int);
52 1.1 mrg extern void sparc_override_options (void);
53 1.1 mrg extern void sparc_output_scratch_registers (FILE *);
54 1.1 mrg
55 1.1 mrg #ifdef RTX_CODE
56 1.1 mrg extern enum machine_mode select_cc_mode (enum rtx_code, rtx, rtx);
57 1.1 mrg /* Define the function that build the compare insn for scc and bcc. */
58 1.1 mrg extern rtx gen_compare_reg (rtx cmp);
59 1.1 mrg extern rtx sparc_emit_float_lib_cmp (rtx, rtx, enum rtx_code);
60 1.1 mrg extern void sparc_emit_floatunsdi (rtx [2], enum machine_mode);
61 1.1 mrg extern void sparc_emit_fixunsdi (rtx [2], enum machine_mode);
62 1.1 mrg extern void emit_tfmode_binop (enum rtx_code, rtx *);
63 1.1 mrg extern void emit_tfmode_unop (enum rtx_code, rtx *);
64 1.1 mrg extern void emit_tfmode_cvt (enum rtx_code, rtx *);
65 1.1 mrg extern bool legitimate_constant_p (rtx);
66 1.1 mrg extern bool constant_address_p (rtx);
67 1.1 mrg extern bool legitimate_pic_operand_p (rtx);
68 1.1 mrg extern void sparc_emit_call_insn (rtx, rtx);
69 1.1 mrg extern void sparc_defer_case_vector (rtx, rtx, int);
70 1.1 mrg extern bool sparc_expand_move (enum machine_mode, rtx *);
71 1.1 mrg extern void sparc_emit_set_const32 (rtx, rtx);
72 1.1 mrg extern void sparc_emit_set_const64 (rtx, rtx);
73 1.1 mrg extern void sparc_emit_set_symbolic_const64 (rtx, rtx, rtx);
74 1.1 mrg extern int sparc_splitdi_legitimate (rtx, rtx);
75 1.1 mrg extern int sparc_absnegfloat_split_legitimate (rtx, rtx);
76 1.1 mrg extern const char *output_ubranch (rtx, int, rtx);
77 1.1 mrg extern const char *output_cbranch (rtx, rtx, int, int, int, rtx);
78 1.1 mrg extern const char *output_return (rtx);
79 1.1 mrg extern const char *output_sibcall (rtx, rtx);
80 1.1 mrg extern const char *output_v8plus_shift (rtx *, rtx, const char *);
81 1.1 mrg extern const char *output_v9branch (rtx, rtx, int, int, int, int, rtx);
82 1.1 mrg extern bool emit_scc_insn (rtx []);
83 1.1 mrg extern void emit_conditional_branch_insn (rtx []);
84 1.1 mrg extern void print_operand (FILE *, rtx, int);
85 1.1 mrg extern int mems_ok_for_ldd_peep (rtx, rtx, rtx);
86 1.1 mrg extern int arith_double_4096_operand (rtx, enum machine_mode);
87 1.1 mrg extern int arith_4096_operand (rtx, enum machine_mode);
88 1.1 mrg extern int zero_operand (rtx, enum machine_mode);
89 1.1 mrg extern int fp_zero_operand (rtx, enum machine_mode);
90 1.1 mrg extern int reg_or_0_operand (rtx, enum machine_mode);
91 1.1 mrg extern int empty_delay_slot (rtx);
92 1.1 mrg extern int eligible_for_return_delay (rtx);
93 1.1 mrg extern int eligible_for_sibcall_delay (rtx);
94 1.1 mrg extern int tls_call_delay (rtx);
95 1.1 mrg extern int emit_move_sequence (rtx, enum machine_mode);
96 1.1 mrg extern int fp_sethi_p (rtx);
97 1.1 mrg extern int fp_mov_p (rtx);
98 1.1 mrg extern int fp_high_losum_p (rtx);
99 1.1 mrg extern int mem_min_alignment (rtx, int);
100 1.1 mrg extern int pic_address_needs_scratch (rtx);
101 1.1 mrg extern int reg_unused_after (rtx, rtx);
102 1.1 mrg extern int register_ok_for_ldd (rtx);
103 1.1 mrg extern int memory_ok_for_ldd (rtx);
104 1.1 mrg extern int registers_ok_for_ldd_peep (rtx, rtx);
105 1.1 mrg extern int v9_regcmp_p (enum rtx_code);
106 1.1 mrg /* Function used for V8+ code generation. Returns 1 if the high
107 1.1 mrg 32 bits of REG are 0 before INSN. */
108 1.1 mrg extern int sparc_check_64 (rtx, rtx);
109 1.1 mrg extern rtx gen_df_reg (rtx, int);
110 1.1 mrg extern void sparc_expand_compare_and_swap_12 (rtx, rtx, rtx, rtx);
111 1.1 mrg #endif /* RTX_CODE */
112 1.1 mrg
113 1.1 mrg #endif /* __SPARC_PROTOS_H__ */
114