tilegx-protos.h revision 1.8 1 1.1 mrg /* Prototypes of target machine for TILE-Gx.
2 1.8 mrg Copyright (C) 2011-2019 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.1 mrg /* Declare functions in tilegx-c.c */
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