(root)/
gcc-13.2.0/
gcc/
config/
m68k/
m68k-protos.h
       1  /* Definitions of target machine for GNU compiler.  Sun 68000/68020 version.
       2     Copyright (C) 2000-2023 Free Software Foundation, Inc.
       3  
       4  This file is part of GCC.
       5  
       6  GCC is free software; you can redistribute it and/or modify
       7  it under the terms of the GNU General Public License as published by
       8  the Free Software Foundation; either version 3, or (at your option)
       9  any later version.
      10  
      11  GCC is distributed in the hope that it will be useful,
      12  but WITHOUT ANY WARRANTY; without even the implied warranty of
      13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14  GNU General Public License for more details.
      15  
      16  You should have received a copy of the GNU General Public License
      17  along with GCC; see the file COPYING3.  If not see
      18  <http://www.gnu.org/licenses/>.  */
      19  
      20  /* Define functions defined in aux-output.c and used in templates.  */
      21  
      22  #ifdef RTX_CODE
      23  extern enum m68k_function_kind m68k_get_function_kind (tree);
      24  extern HOST_WIDE_INT m68k_initial_elimination_offset (int from, int to);
      25  
      26  extern void split_di (rtx[], int, rtx[], rtx[]);
      27  
      28  extern bool valid_mov3q_const (HOST_WIDE_INT);
      29  extern const char *output_move_simode (rtx *);
      30  extern const char *output_move_himode (rtx *);
      31  extern const char *output_move_qimode (rtx *);
      32  extern const char *output_move_stricthi (rtx *);
      33  extern const char *output_move_strictqi (rtx *);
      34  extern const char *output_move_double (rtx *);
      35  extern const char *output_move_const_single (rtx *);
      36  extern const char *output_move_const_double (rtx *);
      37  extern const char *output_btst (rtx *, rtx, rtx, rtx_insn *, int);
      38  extern const char *output_scc_di (rtx, rtx, rtx, rtx);
      39  extern const char *output_addsi3 (rtx *);
      40  extern const char *output_andsi3 (rtx *);
      41  extern const char *output_iorsi3 (rtx *);
      42  extern const char *output_xorsi3 (rtx *);
      43  extern const char *output_call (rtx);
      44  extern const char *output_sibcall (rtx);
      45  extern void m68k_init_cc ();
      46  extern void output_dbcc_and_branch (rtx *, rtx_code);
      47  extern rtx_code m68k_output_compare_di (rtx, rtx, rtx, rtx, rtx_insn *, rtx_code);
      48  extern rtx_code m68k_output_compare_si (rtx, rtx, rtx_code);
      49  extern rtx_code m68k_output_compare_hi (rtx, rtx, rtx_code);
      50  extern rtx_code m68k_output_compare_qi (rtx, rtx, rtx_code);
      51  extern rtx_code m68k_output_compare_fp (rtx, rtx, rtx_code);
      52  extern rtx_code m68k_output_btst (rtx, rtx, rtx_code, int);
      53  extern rtx_code m68k_output_bftst (rtx, rtx, rtx, rtx_code);
      54  extern rtx_code m68k_find_flags_value (rtx, rtx, rtx_code);
      55  
      56  extern const char *m68k_output_scc (rtx_code);
      57  extern const char *m68k_output_scc_float (rtx_code);
      58  extern const char *m68k_output_branch_integer (rtx_code);
      59  extern const char *m68k_output_branch_integer_rev (rtx_code);
      60  extern const char *m68k_output_branch_float (rtx_code);
      61  extern const char *m68k_output_branch_float_rev (rtx_code);
      62  extern int floating_exact_log2 (rtx);
      63  extern bool strict_low_part_peephole_ok (machine_mode mode,
      64  					 rtx_insn *first_insn, rtx target);
      65  
      66  /* Functions from m68k.cc used in macros.  */
      67  extern int standard_68881_constant_p (rtx);
      68  extern void print_operand_address (FILE *, rtx);
      69  extern void print_operand (FILE *, rtx, int);
      70  extern void notice_update_cc (rtx, rtx);
      71  extern bool m68k_legitimate_base_reg_p (rtx, bool);
      72  extern bool m68k_legitimate_index_reg_p (rtx, bool);
      73  extern bool m68k_illegitimate_symbolic_constant_p (rtx);
      74  extern bool m68k_legitimate_constant_p (machine_mode, rtx);
      75  extern bool m68k_matches_q_p (rtx);
      76  extern bool m68k_matches_u_p (rtx);
      77  extern rtx legitimize_pic_address (rtx, machine_mode, rtx);
      78  extern rtx m68k_legitimize_tls_address (rtx);
      79  extern bool m68k_tls_reference_p (rtx, bool);
      80  extern int valid_dbcc_comparison_p_2 (rtx, machine_mode);
      81  extern rtx m68k_libcall_value (machine_mode);
      82  extern rtx m68k_function_value (const_tree, const_tree);
      83  extern int emit_move_sequence (rtx *, machine_mode, rtx);
      84  extern bool m68k_movem_pattern_p (rtx, rtx, HOST_WIDE_INT, bool);
      85  extern const char *m68k_output_movem (rtx *, rtx, HOST_WIDE_INT, bool);
      86  extern bool m68k_epilogue_uses (int);
      87  extern void m68k_final_prescan_insn (rtx_insn *, rtx *, int);
      88  
      89  /* Functions from m68k.cc used in constraints.md.  */
      90  extern rtx m68k_unwrap_symbol (rtx, bool);
      91  
      92  /* Functions from m68k.cc used in genattrtab.  */
      93  #ifdef HAVE_ATTR_cpu
      94  extern enum attr_cpu m68k_sched_cpu;
      95  extern enum attr_mac m68k_sched_mac;
      96  
      97  extern enum attr_opx_type m68k_sched_attr_opx_type (rtx_insn *, int);
      98  extern enum attr_opy_type m68k_sched_attr_opy_type (rtx_insn *, int);
      99  extern enum attr_size m68k_sched_attr_size (rtx_insn *);
     100  extern enum attr_op_mem m68k_sched_attr_op_mem (rtx_insn *);
     101  #endif /* HAVE_ATTR_cpu */
     102  
     103  #endif /* RTX_CODE */
     104  
     105  extern enum reg_class m68k_secondary_reload_class (enum reg_class,
     106  						   machine_mode, rtx);
     107  extern enum reg_class m68k_preferred_reload_class (rtx, enum reg_class);
     108  extern void m68k_expand_prologue (void);
     109  extern bool m68k_use_return_insn (void);
     110  extern void m68k_expand_epilogue (bool);
     111  extern const char *m68k_cpp_cpu_ident (const char *);
     112  extern const char *m68k_cpp_cpu_family (const char *);
     113  extern void init_68881_table (void);
     114  extern rtx m68k_legitimize_call_address (rtx);
     115  extern rtx m68k_legitimize_sibcall_address (rtx);
     116  extern int m68k_hard_regno_rename_ok(unsigned int, unsigned int);
     117  extern poly_int64 m68k_push_rounding (poly_int64);