rx-protos.h revision 1.1.1.5 1 1.1 mrg /* Exported function prototypes from the Renesas RX backend.
2 1.1.1.5 mrg Copyright (C) 2008-2017 Free Software Foundation, Inc.
3 1.1 mrg Contributed by Red Hat.
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
8 1.1 mrg it under the terms of the GNU General Public License as published by
9 1.1 mrg the Free Software Foundation; either version 3, or (at your option)
10 1.1 mrg any later version.
11 1.1 mrg
12 1.1 mrg GCC is distributed in the hope that it will be useful,
13 1.1 mrg but WITHOUT ANY WARRANTY; without even the implied warranty of
14 1.1 mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 1.1 mrg GNU General Public 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_RX_PROTOS_H
22 1.1 mrg #define GCC_RX_PROTOS_H
23 1.1 mrg
24 1.1.1.2 mrg extern bool rx_can_use_simple_return (void);
25 1.1.1.2 mrg extern void rx_expand_epilogue (bool);
26 1.1 mrg extern void rx_expand_prologue (void);
27 1.1 mrg extern int rx_initial_elimination_offset (int, int);
28 1.1 mrg
29 1.1.1.5 mrg bool is_interrupt_func (const_tree decl);
30 1.1.1.5 mrg bool is_fast_interrupt_func (const_tree decl);
31 1.1.1.5 mrg
32 1.1.1.5 mrg /* rx_atomic_sequence is used to emit the header and footer
33 1.1.1.5 mrg of an atomic sequence. It's supposed to be used in a scope.
34 1.1.1.5 mrg When constructed, it will emit the atomic sequence header insns.
35 1.1.1.5 mrg When destructred (goes out of scope), it will emit the
36 1.1.1.5 mrg corresponding atomic sequence footer insns. */
37 1.1.1.5 mrg class rx_atomic_sequence
38 1.1.1.5 mrg {
39 1.1.1.5 mrg public:
40 1.1.1.5 mrg rx_atomic_sequence (const_tree fun_decl);
41 1.1.1.5 mrg ~rx_atomic_sequence (void);
42 1.1.1.5 mrg
43 1.1.1.5 mrg private:
44 1.1.1.5 mrg rx_atomic_sequence (void);
45 1.1.1.5 mrg rx_atomic_sequence (const rx_atomic_sequence&);
46 1.1.1.5 mrg rx_atomic_sequence& operator = (const rx_atomic_sequence&);
47 1.1.1.5 mrg
48 1.1.1.5 mrg rtx m_prev_psw_reg;
49 1.1.1.5 mrg };
50 1.1.1.5 mrg
51 1.1 mrg #ifdef RTX_CODE
52 1.1.1.3 mrg extern int rx_adjust_insn_length (rtx_insn *, int);
53 1.1.1.2 mrg extern int rx_align_for_label (rtx, int);
54 1.1 mrg extern void rx_emit_stack_popm (rtx *, bool);
55 1.1 mrg extern void rx_emit_stack_pushm (rtx *);
56 1.1 mrg extern char * rx_gen_move_template (rtx *, bool);
57 1.1.1.3 mrg extern bool rx_is_legitimate_constant (machine_mode, rtx);
58 1.1.1.2 mrg extern bool rx_is_restricted_memory_address (rtx,
59 1.1.1.3 mrg machine_mode);
60 1.1.1.3 mrg extern bool rx_match_ccmode (rtx, machine_mode);
61 1.1.1.2 mrg extern rtx rx_maybe_pidify_operand (rtx, int);
62 1.1.1.2 mrg extern void rx_notice_update_cc (rtx, rtx);
63 1.1.1.3 mrg extern void rx_split_cbranch (machine_mode, enum rtx_code,
64 1.1.1.2 mrg rtx, rtx, rtx);
65 1.1.1.3 mrg extern machine_mode rx_select_cc_mode (enum rtx_code, rtx, rtx);
66 1.1 mrg #endif
67 1.1 mrg
68 1.1 mrg #endif /* GCC_RX_PROTOS_H */
69