Home | History | Annotate | Line # | Download | only in sh
sh-protos.h revision 1.1.1.1.8.2
      1  1.1.1.1.8.2  tls /* Definitions of target machine for GNU compiler for Renesas / SuperH SH.
      2  1.1.1.1.8.2  tls    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2003,
      3  1.1.1.1.8.2  tls    2004, 2005, 2006, 2007, 2008, 2009
      4  1.1.1.1.8.2  tls    Free Software Foundation, Inc.
      5  1.1.1.1.8.2  tls    Contributed by Steve Chamberlain (sac (at) cygnus.com).
      6  1.1.1.1.8.2  tls    Improved by Jim Wilson (wilson (at) cygnus.com).
      7  1.1.1.1.8.2  tls 
      8  1.1.1.1.8.2  tls This file is part of GCC.
      9  1.1.1.1.8.2  tls 
     10  1.1.1.1.8.2  tls GCC is free software; you can redistribute it and/or modify
     11  1.1.1.1.8.2  tls it under the terms of the GNU General Public License as published by
     12  1.1.1.1.8.2  tls the Free Software Foundation; either version 3, or (at your option)
     13  1.1.1.1.8.2  tls any later version.
     14  1.1.1.1.8.2  tls 
     15  1.1.1.1.8.2  tls GCC is distributed in the hope that it will be useful,
     16  1.1.1.1.8.2  tls but WITHOUT ANY WARRANTY; without even the implied warranty of
     17  1.1.1.1.8.2  tls MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     18  1.1.1.1.8.2  tls GNU General Public License for more details.
     19  1.1.1.1.8.2  tls 
     20  1.1.1.1.8.2  tls You should have received a copy of the GNU General Public License
     21  1.1.1.1.8.2  tls along with GCC; see the file COPYING3.  If not see
     22  1.1.1.1.8.2  tls <http://www.gnu.org/licenses/>.  */
     23  1.1.1.1.8.2  tls 
     24  1.1.1.1.8.2  tls #ifndef GCC_SH_PROTOS_H
     25  1.1.1.1.8.2  tls #define GCC_SH_PROTOS_H
     26  1.1.1.1.8.2  tls 
     27  1.1.1.1.8.2  tls enum sh_function_kind {
     28  1.1.1.1.8.2  tls   /* A function with normal C ABI  */
     29  1.1.1.1.8.2  tls   FUNCTION_ORDINARY,
     30  1.1.1.1.8.2  tls   /* A special function that guarantees that some otherwise call-clobbered
     31  1.1.1.1.8.2  tls      registers are not clobbered.  These can't go through the SH5 resolver,
     32  1.1.1.1.8.2  tls      because it only saves argument passing registers.  */
     33  1.1.1.1.8.2  tls   SFUNC_GOT,
     34  1.1.1.1.8.2  tls   /* A special function that should be linked statically.  These are typically
     35  1.1.1.1.8.2  tls      smaller or not much larger than a PLT entry.
     36  1.1.1.1.8.2  tls      Some also have a non-standard ABI which precludes dynamic linking.  */
     37  1.1.1.1.8.2  tls   SFUNC_STATIC
     38  1.1.1.1.8.2  tls };
     39  1.1.1.1.8.2  tls 
     40  1.1.1.1.8.2  tls #ifdef RTX_CODE
     41  1.1.1.1.8.2  tls extern rtx sh_fsca_sf2int (void);
     42  1.1.1.1.8.2  tls extern rtx sh_fsca_df2int (void);
     43  1.1.1.1.8.2  tls extern rtx sh_fsca_int2sf (void);
     44  1.1.1.1.8.2  tls 
     45  1.1.1.1.8.2  tls /* Declare functions defined in sh.c and used in templates.  */
     46  1.1.1.1.8.2  tls 
     47  1.1.1.1.8.2  tls extern const char *output_branch (int, rtx, rtx *);
     48  1.1.1.1.8.2  tls extern const char *output_ieee_ccmpeq (rtx, rtx *);
     49  1.1.1.1.8.2  tls extern const char *output_branchy_insn (enum rtx_code, const char *, rtx, rtx *);
     50  1.1.1.1.8.2  tls extern const char *output_movedouble (rtx, rtx[], enum machine_mode);
     51  1.1.1.1.8.2  tls extern const char *output_movepcrel (rtx, rtx[], enum machine_mode);
     52  1.1.1.1.8.2  tls extern const char *output_far_jump (rtx, rtx);
     53  1.1.1.1.8.2  tls 
     54  1.1.1.1.8.2  tls extern struct rtx_def *sfunc_uses_reg (rtx);
     55  1.1.1.1.8.2  tls extern int barrier_align (rtx);
     56  1.1.1.1.8.2  tls extern int sh_loop_align (rtx);
     57  1.1.1.1.8.2  tls extern int fp_zero_operand (rtx);
     58  1.1.1.1.8.2  tls extern int fp_one_operand (rtx);
     59  1.1.1.1.8.2  tls extern int fp_int_operand (rtx);
     60  1.1.1.1.8.2  tls extern rtx get_fpscr_rtx (void);
     61  1.1.1.1.8.2  tls extern bool sh_legitimate_index_p (enum machine_mode, rtx);
     62  1.1.1.1.8.2  tls extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx);
     63  1.1.1.1.8.2  tls extern int nonpic_symbol_mentioned_p (rtx);
     64  1.1.1.1.8.2  tls extern void emit_sf_insn (rtx);
     65  1.1.1.1.8.2  tls extern void emit_df_insn (rtx);
     66  1.1.1.1.8.2  tls extern void print_operand_address (FILE *, rtx);
     67  1.1.1.1.8.2  tls extern void print_operand (FILE *, rtx, int);
     68  1.1.1.1.8.2  tls extern void output_pic_addr_const (FILE *, rtx);
     69  1.1.1.1.8.2  tls extern int expand_block_move (rtx *);
     70  1.1.1.1.8.2  tls extern int prepare_move_operands (rtx[], enum machine_mode mode);
     71  1.1.1.1.8.2  tls extern enum rtx_code prepare_cbranch_operands (rtx *, enum machine_mode mode,
     72  1.1.1.1.8.2  tls 					       enum rtx_code comparison);
     73  1.1.1.1.8.2  tls extern void expand_cbranchsi4 (rtx *operands, enum rtx_code comparison, int);
     74  1.1.1.1.8.2  tls extern bool expand_cbranchdi4 (rtx *operands, enum rtx_code comparison);
     75  1.1.1.1.8.2  tls extern void sh_emit_scc_to_t (enum rtx_code, rtx, rtx);
     76  1.1.1.1.8.2  tls extern rtx sh_emit_cheap_store_flag (enum machine_mode, enum rtx_code, rtx, rtx);
     77  1.1.1.1.8.2  tls extern void sh_emit_compare_and_branch (rtx *, enum machine_mode);
     78  1.1.1.1.8.2  tls extern void sh_emit_compare_and_set (rtx *, enum machine_mode);
     79  1.1.1.1.8.2  tls extern int shift_insns_rtx (rtx);
     80  1.1.1.1.8.2  tls extern void gen_ashift (int, int, rtx);
     81  1.1.1.1.8.2  tls extern void gen_ashift_hi (int, int, rtx);
     82  1.1.1.1.8.2  tls extern void gen_shifty_op (int, rtx *);
     83  1.1.1.1.8.2  tls extern void gen_shifty_hi_op (int, rtx *);
     84  1.1.1.1.8.2  tls extern int expand_ashiftrt (rtx *);
     85  1.1.1.1.8.2  tls extern int sh_dynamicalize_shift_p (rtx);
     86  1.1.1.1.8.2  tls extern int shl_and_kind (rtx, rtx, int *);
     87  1.1.1.1.8.2  tls extern int shl_and_length (rtx);
     88  1.1.1.1.8.2  tls extern int shl_and_scr_length (rtx);
     89  1.1.1.1.8.2  tls extern int gen_shl_and (rtx, rtx, rtx, rtx);
     90  1.1.1.1.8.2  tls extern int shl_sext_kind (rtx, rtx, int *);
     91  1.1.1.1.8.2  tls extern int shl_sext_length (rtx);
     92  1.1.1.1.8.2  tls extern int gen_shl_sext (rtx, rtx, rtx, rtx);
     93  1.1.1.1.8.2  tls extern rtx gen_datalabel_ref (rtx);
     94  1.1.1.1.8.2  tls extern int regs_used (rtx, int);
     95  1.1.1.1.8.2  tls extern void fixup_addr_diff_vecs (rtx);
     96  1.1.1.1.8.2  tls extern int get_dest_uid (rtx, int);
     97  1.1.1.1.8.2  tls extern void final_prescan_insn (rtx, rtx *, int);
     98  1.1.1.1.8.2  tls extern int symbol_ref_operand (rtx, enum machine_mode);
     99  1.1.1.1.8.2  tls extern enum tls_model tls_symbolic_operand (rtx, enum machine_mode);
    100  1.1.1.1.8.2  tls extern int system_reg_operand (rtx, enum machine_mode);
    101  1.1.1.1.8.2  tls extern int general_movsrc_operand (rtx, enum machine_mode);
    102  1.1.1.1.8.2  tls extern int general_movdst_operand (rtx, enum machine_mode);
    103  1.1.1.1.8.2  tls extern int arith_reg_operand (rtx, enum machine_mode);
    104  1.1.1.1.8.2  tls extern int fp_arith_reg_operand (rtx, enum machine_mode);
    105  1.1.1.1.8.2  tls extern int arith_operand (rtx, enum machine_mode);
    106  1.1.1.1.8.2  tls extern int arith_reg_or_0_operand (rtx, enum machine_mode);
    107  1.1.1.1.8.2  tls extern int logical_operand (rtx, enum machine_mode);
    108  1.1.1.1.8.2  tls extern int tertiary_reload_operand (rtx, enum machine_mode);
    109  1.1.1.1.8.2  tls extern int fpscr_operand (rtx, enum machine_mode);
    110  1.1.1.1.8.2  tls extern int fpul_operand (rtx, enum machine_mode);
    111  1.1.1.1.8.2  tls extern int commutative_float_operator (rtx, enum machine_mode);
    112  1.1.1.1.8.2  tls extern int noncommutative_float_operator (rtx, enum machine_mode);
    113  1.1.1.1.8.2  tls extern int reg_unused_after (rtx, rtx);
    114  1.1.1.1.8.2  tls extern void expand_sf_unop (rtx (*)(rtx, rtx, rtx), rtx *);
    115  1.1.1.1.8.2  tls extern void expand_sf_binop (rtx (*)(rtx, rtx, rtx, rtx), rtx *);
    116  1.1.1.1.8.2  tls extern void expand_df_unop (rtx (*)(rtx, rtx, rtx), rtx *);
    117  1.1.1.1.8.2  tls extern void expand_df_binop (rtx (*)(rtx, rtx, rtx, rtx), rtx *);
    118  1.1.1.1.8.2  tls extern void expand_fp_branch (rtx (*)(void), rtx (*)(void));
    119  1.1.1.1.8.2  tls extern int sh_insn_length_adjustment (rtx);
    120  1.1.1.1.8.2  tls extern int sh_can_redirect_branch (rtx, rtx);
    121  1.1.1.1.8.2  tls extern void sh_expand_unop_v2sf (enum rtx_code, rtx, rtx);
    122  1.1.1.1.8.2  tls extern void sh_expand_binop_v2sf (enum rtx_code, rtx, rtx, rtx);
    123  1.1.1.1.8.2  tls extern int sh_expand_t_scc (rtx *);
    124  1.1.1.1.8.2  tls extern rtx sh_gen_truncate (enum machine_mode, rtx, int);
    125  1.1.1.1.8.2  tls extern bool sh_vector_mode_supported_p (enum machine_mode);
    126  1.1.1.1.8.2  tls #endif /* RTX_CODE */
    127  1.1.1.1.8.2  tls 
    128  1.1.1.1.8.2  tls extern void sh_optimization_options (int, int);
    129  1.1.1.1.8.2  tls extern void sh_override_options (void);
    130  1.1.1.1.8.2  tls extern const char *output_jump_label_table (void);
    131  1.1.1.1.8.2  tls extern int sh_handle_pragma (int (*)(void), void (*)(int), const char *);
    132  1.1.1.1.8.2  tls extern struct rtx_def *get_fpscr_rtx (void);
    133  1.1.1.1.8.2  tls extern int sh_media_register_for_return (void);
    134  1.1.1.1.8.2  tls extern void sh_expand_prologue (void);
    135  1.1.1.1.8.2  tls extern void sh_expand_epilogue (bool);
    136  1.1.1.1.8.2  tls extern int sh_need_epilogue (void);
    137  1.1.1.1.8.2  tls extern void sh_set_return_address (rtx, rtx);
    138  1.1.1.1.8.2  tls extern int initial_elimination_offset (int, int);
    139  1.1.1.1.8.2  tls extern int fldi_ok (void);
    140  1.1.1.1.8.2  tls extern int sh_hard_regno_rename_ok (unsigned int, unsigned int);
    141  1.1.1.1.8.2  tls extern int sh_cfun_interrupt_handler_p (void);
    142  1.1.1.1.8.2  tls extern int sh_cfun_resbank_handler_p (void);
    143  1.1.1.1.8.2  tls extern int sh_attr_renesas_p (const_tree);
    144  1.1.1.1.8.2  tls extern int sh_cfun_attr_renesas_p (void);
    145  1.1.1.1.8.2  tls extern bool sh_cannot_change_mode_class
    146  1.1.1.1.8.2  tls 	      (enum machine_mode, enum machine_mode, enum reg_class);
    147  1.1.1.1.8.2  tls extern void sh_mark_label (rtx, int);
    148  1.1.1.1.8.2  tls extern int sh_register_move_cost
    149  1.1.1.1.8.2  tls   (enum machine_mode mode, enum reg_class, enum reg_class);
    150  1.1.1.1.8.2  tls extern int check_use_sfunc_addr (rtx, rtx);
    151  1.1.1.1.8.2  tls 
    152  1.1.1.1.8.2  tls #ifdef HARD_CONST
    153  1.1.1.1.8.2  tls extern void fpscr_set_from_mem (int, HARD_REG_SET);
    154  1.1.1.1.8.2  tls #endif
    155  1.1.1.1.8.2  tls 
    156  1.1.1.1.8.2  tls extern void sh_pr_interrupt (struct cpp_reader *);
    157  1.1.1.1.8.2  tls extern void sh_pr_trapa (struct cpp_reader *);
    158  1.1.1.1.8.2  tls extern void sh_pr_nosave_low_regs (struct cpp_reader *);
    159  1.1.1.1.8.2  tls extern rtx function_symbol (rtx, const char *, enum sh_function_kind);
    160  1.1.1.1.8.2  tls extern rtx sh_get_pr_initial_val (void);
    161  1.1.1.1.8.2  tls 
    162  1.1.1.1.8.2  tls extern rtx sh_function_arg (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
    163  1.1.1.1.8.2  tls extern void sh_function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
    164  1.1.1.1.8.2  tls extern int sh_pass_in_reg_p (CUMULATIVE_ARGS *, enum machine_mode, tree);
    165  1.1.1.1.8.2  tls extern void sh_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, signed int, enum machine_mode);
    166  1.1.1.1.8.2  tls extern bool sh_function_value_regno_p (const unsigned int);
    167  1.1.1.1.8.2  tls extern rtx sh_dwarf_register_span (rtx);
    168  1.1.1.1.8.2  tls 
    169  1.1.1.1.8.2  tls extern rtx replace_n_hard_rtx (rtx, rtx *, int , int);
    170  1.1.1.1.8.2  tls extern int shmedia_cleanup_truncate (rtx *, void *);
    171  1.1.1.1.8.2  tls 
    172  1.1.1.1.8.2  tls extern int sh_contains_memref_p (rtx);
    173  1.1.1.1.8.2  tls extern int sh_loads_bankedreg_p (rtx);
    174  1.1.1.1.8.2  tls extern rtx shmedia_prepare_call_address (rtx fnaddr, int is_sibcall);
    175  1.1.1.1.8.2  tls struct secondary_reload_info;
    176  1.1.1.1.8.2  tls extern enum reg_class sh_secondary_reload (bool, rtx, enum reg_class,
    177  1.1.1.1.8.2  tls 					   enum machine_mode,
    178  1.1.1.1.8.2  tls 					   struct secondary_reload_info *);
    179  1.1.1.1.8.2  tls extern int sh2a_get_function_vector_number (rtx);
    180  1.1.1.1.8.2  tls extern int sh2a_is_function_vector_call (rtx);
    181  1.1.1.1.8.2  tls extern void sh_fix_range (const char *);
    182  1.1.1.1.8.2  tls extern bool sh_hard_regno_mode_ok (unsigned int, enum machine_mode);
    183  1.1.1.1.8.2  tls #endif /* ! GCC_SH_PROTOS_H */
    184  1.1.1.1.8.2  tls 
    185  1.1.1.1.8.2  tls #ifdef SYMBIAN
    186  1.1.1.1.8.2  tls extern const char * sh_symbian_strip_name_encoding    (const char *);
    187  1.1.1.1.8.2  tls extern bool         sh_symbian_is_dllexported_name    (const char *);
    188  1.1.1.1.8.2  tls #ifdef TREE_CODE
    189  1.1.1.1.8.2  tls extern bool         sh_symbian_is_dllexported         (tree);
    190  1.1.1.1.8.2  tls extern int          sh_symbian_import_export_class    (tree, int);
    191  1.1.1.1.8.2  tls extern tree         sh_symbian_handle_dll_attribute   (tree *, tree, tree, int, bool *);
    192  1.1.1.1.8.2  tls #ifdef RTX_CODE
    193  1.1.1.1.8.2  tls extern void         sh_symbian_encode_section_info    (tree, rtx, int);
    194  1.1.1.1.8.2  tls #endif
    195  1.1.1.1.8.2  tls #endif
    196  1.1.1.1.8.2  tls #endif /* SYMBIAN */
    197  1.1.1.1.8.2  tls 
    198