1  /* Definitions of target machine for GNU compiler for IA-64.
       2     Copyright (C) 1999-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  /* Shared between the driver and cc1.  */
      21  extern enum unwind_info_type ia64_except_unwind_info (struct gcc_options *);
      22  
      23  /* Functions defined in ia64.cc */
      24  
      25  extern int bundling_p;
      26  #ifdef RTX_CODE
      27  extern int ia64_st_address_bypass_p (rtx_insn *, rtx_insn *);
      28  extern int ia64_ld_address_bypass_p (rtx_insn *, rtx_insn *);
      29  extern int ia64_produce_address_p (rtx);
      30  
      31  extern rtx ia64_expand_move (rtx, rtx);
      32  extern int ia64_move_ok (rtx, rtx);
      33  extern int ia64_load_pair_ok (rtx, rtx);
      34  extern int addp4_optimize_ok (rtx, rtx);
      35  extern void ia64_emit_cond_move (rtx, rtx, rtx);
      36  extern int ia64_depz_field_mask (rtx, rtx);
      37  extern void ia64_split_tmode_move (rtx[]);
      38  extern bool ia64_expand_movxf_movrf (machine_mode, rtx[]);
      39  extern void ia64_expand_compare (rtx *, rtx *, rtx *);
      40  extern void ia64_expand_vecint_cmov (rtx[]);
      41  extern bool ia64_expand_vecint_minmax (enum rtx_code, machine_mode, rtx[]);
      42  extern void ia64_unpack_assemble (rtx, rtx, rtx, bool);
      43  extern void ia64_expand_unpack (rtx [], bool, bool);
      44  extern void ia64_expand_widen_sum (rtx[], bool);
      45  extern void ia64_expand_call (rtx, rtx, rtx, int);
      46  extern void ia64_split_call (rtx, rtx, rtx, rtx, rtx, int, int);
      47  extern void ia64_reload_gp (void);
      48  extern void ia64_expand_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx,
      49  				   enum memmodel);
      50  
      51  extern HOST_WIDE_INT ia64_initial_elimination_offset (int, int);
      52  extern void ia64_expand_prologue (void);
      53  extern void ia64_expand_epilogue (int);
      54  
      55  extern int ia64_direct_return (void);
      56  extern bool ia64_expand_load_address (rtx, rtx);
      57  extern int ia64_hard_regno_rename_ok (int, int);
      58  
      59  extern enum reg_class ia64_secondary_reload_class (enum reg_class,
      60  						   machine_mode, rtx);
      61  extern const char *get_bundle_name (int);
      62  extern const char *output_probe_stack_range (rtx, rtx);
      63  
      64  extern void ia64_expand_vec_perm_even_odd (rtx, rtx, rtx, int);
      65  extern void ia64_expand_vec_setv2sf (rtx op[3]);
      66  #endif /* RTX_CODE */
      67  
      68  #ifdef TREE_CODE
      69  #ifdef RTX_CODE
      70  extern rtx ia64_expand_builtin (tree, rtx, rtx, machine_mode, int);
      71  extern rtx ia64_va_arg (tree, tree);
      72  #endif /* RTX_CODE */
      73  
      74  extern void ia64_asm_output_external (FILE *, tree, const char *);
      75  extern void ia64_vms_output_aligned_decl_common (FILE *, tree, const char *,
      76  						 unsigned HOST_WIDE_INT,
      77  						 unsigned int);
      78  extern void ia64_vms_elf_asm_named_section (const char *, unsigned int, tree);
      79  extern void ia64_start_function (FILE *, const char *, tree);
      80  #endif /* TREE_CODE */
      81  
      82  extern int ia64_epilogue_uses (int);
      83  extern int ia64_eh_uses (int);
      84  extern void emit_safe_across_calls (void);
      85  extern void ia64_init_builtins (void);
      86  extern int ia64_debugger_regno (int);
      87  
      88  extern rtx ia64_return_addr_rtx (HOST_WIDE_INT, rtx);
      89  extern void ia64_split_return_addr_rtx (rtx);
      90  
      91  extern void ia64_hpux_handle_builtin_pragma (struct cpp_reader *);
      92  extern void ia64_output_function_profiler (FILE *, int);
      93  extern void ia64_profile_hook (int);
      94  
      95  extern void ia64_init_expanders (void);
      96  
      97  extern rtx ia64_dconst_0_5 (void);
      98  extern rtx ia64_dconst_0_375 (void);