1 1.1 mrg /* Prototypes of target machine for TILE-Gx. 2 1.10 mrg Copyright (C) 2011-2022 Free Software Foundation, Inc. 3 1.1 mrg Contributed by Walter Lee (walt (at) tilera.com) 4 1.1 mrg 5 1.1 mrg This file is part of GCC. 6 1.1 mrg 7 1.1 mrg GCC is free software; you can redistribute it and/or modify it 8 1.1 mrg under the terms of the GNU General Public License as published 9 1.1 mrg by the Free Software Foundation; either version 3, or (at your 10 1.1 mrg option) any later version. 11 1.1 mrg 12 1.1 mrg GCC is distributed in the hope that it will be useful, but WITHOUT 13 1.1 mrg ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 1.1 mrg or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 15 1.1 mrg License for more details. 16 1.1 mrg 17 1.1 mrg You should have received a copy of the GNU General Public License 18 1.1 mrg along with GCC; see the file COPYING3. If not see 19 1.1 mrg <http://www.gnu.org/licenses/>. */ 20 1.1 mrg 21 1.1 mrg #ifndef GCC_TILEGX_PROTOS_H 22 1.1 mrg #define GCC_TILEGX_PROTOS_H 23 1.1 mrg 24 1.1 mrg extern void tilegx_init_expanders (void); 25 1.1 mrg extern void tilegx_compute_pcrel_address (rtx, rtx); 26 1.1 mrg extern void tilegx_compute_pcrel_plt_address (rtx, rtx); 27 1.1 mrg extern bool tilegx_legitimate_pic_operand_p (rtx); 28 1.3 mrg extern rtx tilegx_simd_int (rtx, machine_mode); 29 1.1 mrg 30 1.1 mrg #ifdef RTX_CODE 31 1.1 mrg extern bool tilegx_bitfield_operand_p (HOST_WIDE_INT, int *, int *); 32 1.1 mrg extern void tilegx_expand_set_const64 (rtx, rtx); 33 1.3 mrg extern bool tilegx_expand_mov (machine_mode, rtx *); 34 1.1 mrg extern void tilegx_expand_unaligned_load (rtx, rtx, HOST_WIDE_INT, 35 1.1 mrg HOST_WIDE_INT, bool); 36 1.3 mrg extern void tilegx_expand_movmisalign (machine_mode, rtx *); 37 1.1 mrg extern void tilegx_allocate_stack (rtx, rtx); 38 1.1 mrg extern bool tilegx_expand_muldi (rtx, rtx, rtx); 39 1.1 mrg extern void tilegx_expand_smuldi3_highpart (rtx, rtx, rtx); 40 1.1 mrg extern void tilegx_expand_umuldi3_highpart (rtx, rtx, rtx); 41 1.1 mrg 42 1.3 mrg extern bool tilegx_emit_setcc (rtx[], machine_mode); 43 1.3 mrg extern void tilegx_emit_conditional_branch (rtx[], machine_mode); 44 1.1 mrg extern rtx tilegx_emit_conditional_move (rtx); 45 1.3 mrg extern const char *tilegx_output_cbranch_with_opcode (rtx_insn *, rtx *, 46 1.1 mrg const char *, 47 1.1 mrg const char *, int); 48 1.3 mrg extern const char *tilegx_output_cbranch (rtx_insn *, rtx *, bool); 49 1.1 mrg extern void tilegx_expand_tablejump (rtx, rtx); 50 1.1 mrg extern void tilegx_expand_builtin_vector_binop (rtx (*)(rtx, rtx, rtx), 51 1.3 mrg machine_mode, rtx, 52 1.3 mrg machine_mode, rtx, rtx, 53 1.1 mrg bool); 54 1.1 mrg extern void tilegx_pre_atomic_barrier (enum memmodel); 55 1.1 mrg extern void tilegx_post_atomic_barrier (enum memmodel); 56 1.1 mrg #endif /* RTX_CODE */ 57 1.1 mrg 58 1.1 mrg extern bool tilegx_can_use_return_insn_p (void); 59 1.1 mrg extern void tilegx_expand_prologue (void); 60 1.1 mrg extern void tilegx_expand_epilogue (bool); 61 1.1 mrg extern int tilegx_initial_elimination_offset (int, int); 62 1.1 mrg extern rtx tilegx_return_addr (int, rtx); 63 1.1 mrg extern rtx tilegx_eh_return_handler_rtx (void); 64 1.3 mrg extern int tilegx_adjust_insn_length (rtx_insn *, int); 65 1.1 mrg 66 1.1 mrg extern int tilegx_asm_preferred_eh_data_format (int, int); 67 1.3 mrg extern void tilegx_final_prescan_insn (rtx_insn *); 68 1.1 mrg extern const char *tilegx_asm_output_opcode (FILE *, const char *); 69 1.1 mrg extern void tilegx_function_profiler (FILE *, int); 70 1.1 mrg 71 1.10 mrg /* Declare functions in tilegx-c.cc */ 72 1.1 mrg 73 1.1 mrg extern void tilegx_cpu_cpp_builtins (struct cpp_reader *); 74 1.1 mrg 75 1.1 mrg #endif /* GCC_TILEGX_PROTOS_H */ 76