]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/sparc/sparc-protos.h
NEXT_INSN and PREV_INSN take a const rtx_insn
[thirdparty/gcc.git] / gcc / config / sparc / sparc-protos.h
CommitLineData
6a151f87 1/* Prototypes of target machine for SPARC.
23a5b65a 2 Copyright (C) 1999-2014 Free Software Foundation, Inc.
b1474bb7 3 Contributed by Michael Tiemann (tiemann@cygnus.com).
6a151f87 4 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
b1474bb7
KG
5 at Cygnus Support.
6
de0a398e 7This file is part of GCC.
b1474bb7 8
de0a398e 9GCC is free software; you can redistribute it and/or modify
b1474bb7 10it under the terms of the GNU General Public License as published by
2f83c7d6 11the Free Software Foundation; either version 3, or (at your option)
b1474bb7
KG
12any later version.
13
de0a398e 14GCC is distributed in the hope that it will be useful,
b1474bb7
KG
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
2f83c7d6
NC
20along with GCC; see the file COPYING3. If not see
21<http://www.gnu.org/licenses/>. */
b1474bb7
KG
22
23#ifndef __SPARC_PROTOS_H__
24#define __SPARC_PROTOS_H__
25
26#ifdef TREE_CODE
b1474bb7 27#ifdef RTX_CODE
e80d5f80 28extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
b1474bb7 29#endif
e80d5f80 30extern unsigned long sparc_type_code (tree);
b1474bb7
KG
31#ifdef ARGS_SIZE_RTX
32/* expr.h defines ARGS_SIZE_RTX and `enum direction' */
586de218 33extern enum direction function_arg_padding (enum machine_mode, const_tree);
b1474bb7
KG
34#endif /* ARGS_SIZE_RTX */
35#endif /* TREE_CODE */
36
e80d5f80 37extern void order_regs_for_local_alloc (void);
9ac617d4 38extern HOST_WIDE_INT sparc_compute_frame_size (HOST_WIDE_INT, int);
9e6a4b77 39extern int sparc_initial_elimination_offset (int);
9ac617d4 40extern void sparc_expand_prologue (void);
b11b0904
EB
41extern void sparc_flat_expand_prologue (void);
42extern void sparc_expand_epilogue (bool);
43extern void sparc_flat_expand_epilogue (bool);
5be9b7a1 44extern bool sparc_can_use_return_insn_p (void);
e80d5f80 45extern int check_pic (int);
e80d5f80
KG
46extern void sparc_profile_hook (int);
47extern void sparc_override_options (void);
e80d5f80 48extern void sparc_output_scratch_registers (FILE *);
8d12174d 49extern void sparc_target_macros (void);
b1474bb7
KG
50
51#ifdef RTX_CODE
e80d5f80 52extern enum machine_mode select_cc_mode (enum rtx_code, rtx, rtx);
b1474bb7 53/* Define the function that build the compare insn for scc and bcc. */
f90b7a5a
PB
54extern rtx gen_compare_reg (rtx cmp);
55extern rtx sparc_emit_float_lib_cmp (rtx, rtx, enum rtx_code);
b178305d
EB
56extern void sparc_emit_floatunsdi (rtx [2], enum machine_mode);
57extern void sparc_emit_fixunsdi (rtx [2], enum machine_mode);
e80d5f80
KG
58extern void emit_tfmode_binop (enum rtx_code, rtx *);
59extern void emit_tfmode_unop (enum rtx_code, rtx *);
60extern void emit_tfmode_cvt (enum rtx_code, rtx *);
5751a10b
JJ
61extern bool constant_address_p (rtx);
62extern bool legitimate_pic_operand_p (rtx);
58e6223e
EB
63extern rtx sparc_legitimize_reload_address (rtx, enum machine_mode, int, int,
64 int, int *win);
bc6d3f91 65extern void load_got_register (void);
1910440e 66extern void sparc_emit_call_insn (rtx, rtx);
e80d5f80 67extern void sparc_defer_case_vector (rtx, rtx, int);
bea5071f 68extern bool sparc_expand_move (enum machine_mode, rtx *);
e80d5f80
KG
69extern void sparc_emit_set_symbolic_const64 (rtx, rtx, rtx);
70extern int sparc_splitdi_legitimate (rtx, rtx);
b1fc9f8b 71extern int sparc_split_regreg_legitimate (rtx, rtx);
e1faf324
DM
72extern const char *output_ubranch (rtx, rtx_insn *);
73extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);
74extern const char *output_return (rtx_insn *);
75extern const char *output_sibcall (rtx_insn *, rtx);
76extern const char *output_v8plus_shift (rtx_insn *, rtx *, const char *);
77extern const char *output_v8plus_mult (rtx_insn *, rtx *, const char *);
78extern const char *output_v9branch (rtx, rtx, int, int, int, int, rtx_insn *);
260c8ba3 79extern const char *output_probe_stack_range (rtx, rtx);
e1faf324 80extern const char *output_cbcond (rtx, rtx, rtx_insn *);
f90b7a5a
PB
81extern bool emit_scc_insn (rtx []);
82extern void emit_conditional_branch_insn (rtx []);
b5ccb9ed 83extern int registers_ok_for_ldd_peep (rtx, rtx);
e80d5f80 84extern int mems_ok_for_ldd_peep (rtx, rtx, rtx);
b5ccb9ed 85extern rtx widen_mem_for_ldd_peep (rtx, rtx, enum machine_mode);
b32d5189 86extern int empty_delay_slot (rtx_insn *);
8b98b5fd 87extern int emit_cbcond_nop (rtx);
890fa568 88extern int eligible_for_call_delay (rtx);
9ac617d4 89extern int eligible_for_return_delay (rtx);
e80d5f80
KG
90extern int eligible_for_sibcall_delay (rtx);
91extern int emit_move_sequence (rtx, enum machine_mode);
92extern int fp_sethi_p (rtx);
93extern int fp_mov_p (rtx);
94extern int fp_high_losum_p (rtx);
95extern int mem_min_alignment (rtx, int);
96extern int pic_address_needs_scratch (rtx);
e80d5f80 97extern int register_ok_for_ldd (rtx);
157891a3 98extern int memory_ok_for_ldd (rtx);
e80d5f80 99extern int v9_regcmp_p (enum rtx_code);
b1474bb7
KG
100/* Function used for V8+ code generation. Returns 1 if the high
101 32 bits of REG are 0 before INSN. */
b32d5189 102extern int sparc_check_64 (rtx, rtx_insn *);
e80d5f80 103extern rtx gen_df_reg (rtx, int);
470b6e51 104extern void sparc_expand_compare_and_swap (rtx op[]);
e00560c2 105extern void sparc_expand_vector_init (rtx, rtx);
9d4dedaa 106extern void sparc_expand_vec_perm_bmask(enum machine_mode, rtx);
bf84f42d 107extern bool sparc_expand_conditional_move (enum machine_mode, rtx *);
1f9ed162 108extern void sparc_expand_vcond (enum machine_mode, rtx *, int, int);
98ccb32d
DM
109unsigned int sparc_regmode_natural_size (enum machine_mode);
110bool sparc_modes_tieable_p (enum machine_mode, enum machine_mode);
b1474bb7
KG
111#endif /* RTX_CODE */
112
9a738908
RH
113extern void sparc_emit_membar_for_model (enum memmodel, int, int);
114
b1474bb7 115#endif /* __SPARC_PROTOS_H__ */