]>
Commit | Line | Data |
---|---|---|
03984308 | 1 | /* Prototypes of target machine for GNU compiler for Xtensa. |
99dee823 | 2 | Copyright (C) 2001-2021 Free Software Foundation, Inc. |
03984308 BW |
3 | Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. |
4 | ||
5 | This file is part of GCC. | |
6 | ||
7 | GCC is free software; you can redistribute it and/or modify it under | |
8 | the terms of the GNU General Public License as published by the Free | |
2f83c7d6 | 9 | Software Foundation; either version 3, or (at your option) any later |
03984308 BW |
10 | version. |
11 | ||
12 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 | for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
2f83c7d6 NC |
18 | along with GCC; see the file COPYING3. If not see |
19 | <http://www.gnu.org/licenses/>. */ | |
03984308 BW |
20 | |
21 | #ifndef __XTENSA_PROTOS_H__ | |
22 | #define __XTENSA_PROTOS_H__ | |
23 | ||
3bbc2af6 | 24 | /* Functions to test whether an immediate fits in a given field. */ |
8eb1bc5c BW |
25 | extern bool xtensa_simm8 (HOST_WIDE_INT); |
26 | extern bool xtensa_simm8x256 (HOST_WIDE_INT); | |
27 | extern bool xtensa_simm12b (HOST_WIDE_INT); | |
28 | extern bool xtensa_b4const_or_zero (HOST_WIDE_INT); | |
29 | extern bool xtensa_b4constu (HOST_WIDE_INT); | |
30 | extern bool xtensa_mask_immediate (HOST_WIDE_INT); | |
ef4bddc2 | 31 | extern bool xtensa_mem_offset (unsigned, machine_mode); |
03984308 BW |
32 | |
33 | /* Functions within xtensa.c that we reference. */ | |
34 | #ifdef RTX_CODE | |
ffbc8796 | 35 | extern int xt_true_regnum (rtx); |
ef4bddc2 | 36 | extern int xtensa_valid_move (machine_mode, rtx *); |
ffbc8796 | 37 | extern int smalloffset_mem_p (rtx); |
ffbc8796 | 38 | extern int constantpool_mem_p (rtx); |
ffbc8796 | 39 | extern void xtensa_extend_reg (rtx, rtx); |
ef4bddc2 | 40 | extern void xtensa_expand_conditional_branch (rtx *, machine_mode); |
ffbc8796 | 41 | extern int xtensa_expand_conditional_move (rtx *, int); |
ef4bddc2 | 42 | extern int xtensa_expand_scc (rtx *, machine_mode); |
ffbc8796 | 43 | extern int xtensa_expand_block_move (rtx *); |
ef4bddc2 RS |
44 | extern void xtensa_split_operand_pair (rtx *, machine_mode); |
45 | extern int xtensa_emit_move_sequence (rtx *, machine_mode); | |
997b8b4d | 46 | extern rtx xtensa_copy_incoming_a7 (rtx); |
ffbc8796 | 47 | extern void xtensa_expand_nonlocal_goto (rtx *); |
2a48b790 BW |
48 | extern void xtensa_expand_compare_and_swap (rtx, rtx, rtx, rtx); |
49 | extern void xtensa_expand_atomic (enum rtx_code, rtx, rtx, rtx, bool); | |
240a513f | 50 | extern void xtensa_emit_loop_end (rtx_insn *, rtx *); |
036a2b7a BW |
51 | extern char *xtensa_emit_branch (bool, bool, rtx *); |
52 | extern char *xtensa_emit_bit_branch (bool, bool, rtx *); | |
53 | extern char *xtensa_emit_movcc (bool, bool, bool, rtx *); | |
ffbc8796 | 54 | extern char *xtensa_emit_call (int, rtx *); |
6a7a462c | 55 | extern bool xtensa_tls_referenced_p (rtx); |
03984308 BW |
56 | |
57 | #ifdef TREE_CODE | |
997b8b4d | 58 | extern void init_cumulative_args (CUMULATIVE_ARGS *, int); |
03984308 BW |
59 | #endif /* TREE_CODE */ |
60 | ||
ffbc8796 BW |
61 | extern void print_operand (FILE *, rtx, int); |
62 | extern void print_operand_address (FILE *, rtx); | |
ef4bddc2 | 63 | extern void xtensa_output_literal (FILE *, rtx, machine_mode, int); |
590e2636 | 64 | extern void xtensa_set_return_address (rtx, rtx); |
ffbc8796 | 65 | extern rtx xtensa_return_addr (int, rtx); |
03984308 BW |
66 | #endif /* RTX_CODE */ |
67 | ||
ffbc8796 BW |
68 | extern void xtensa_setup_frame_addresses (void); |
69 | extern int xtensa_dbx_register_number (int); | |
f075bd95 | 70 | extern long compute_frame_size (poly_int64); |
ad89d820 | 71 | extern bool xtensa_use_return_instruction_p (void); |
ffbc8796 | 72 | extern void xtensa_expand_prologue (void); |
590e2636 | 73 | extern void xtensa_expand_epilogue (void); |
ffbc8796 | 74 | extern void order_regs_for_local_alloc (void); |
590e2636 | 75 | extern enum reg_class xtensa_regno_to_class (int regno); |
5057f9e0 | 76 | extern HOST_WIDE_INT xtensa_initial_elimination_offset (int from, int to); |
03984308 BW |
77 | |
78 | #endif /* !__XTENSA_PROTOS_H__ */ |