Home | History | Annotate | Line # | Download | only in rx
rx-protos.h revision 1.5.4.2
      1 /* Exported function prototypes from the Renesas RX backend.
      2    Copyright (C) 2008-2017 Free Software Foundation, Inc.
      3    Contributed by Red Hat.
      4 
      5    This file is part of GCC.
      6 
      7    GCC is free software; you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation; either version 3, or (at your option)
     10    any later version.
     11 
     12    GCC is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with GCC; see the file COPYING3.  If not see
     19    <http://www.gnu.org/licenses/>.  */
     20 
     21 #ifndef GCC_RX_PROTOS_H
     22 #define GCC_RX_PROTOS_H
     23 
     24 extern bool             rx_can_use_simple_return (void);
     25 extern void		rx_expand_epilogue (bool);
     26 extern void		rx_expand_prologue (void);
     27 extern int		rx_initial_elimination_offset (int, int);
     28 
     29 bool is_interrupt_func (const_tree decl);
     30 bool is_fast_interrupt_func (const_tree decl);
     31 
     32 /* rx_atomic_sequence is used to emit the header and footer
     33    of an atomic sequence.  It's supposed to be used in a scope.
     34    When constructed, it will emit the atomic sequence header insns.
     35    When destructred (goes out of scope), it will emit the
     36    corresponding atomic sequence footer insns.  */
     37 class rx_atomic_sequence
     38 {
     39 public:
     40   rx_atomic_sequence (const_tree fun_decl);
     41   ~rx_atomic_sequence (void);
     42 
     43 private:
     44   rx_atomic_sequence (void);
     45   rx_atomic_sequence (const rx_atomic_sequence&);
     46   rx_atomic_sequence& operator = (const rx_atomic_sequence&);
     47 
     48   rtx m_prev_psw_reg;
     49 };
     50 
     51 #ifdef RTX_CODE
     52 extern int		rx_adjust_insn_length (rtx_insn *, int);
     53 extern int 		rx_align_for_label (rtx, int);
     54 extern void             rx_emit_stack_popm (rtx *, bool);
     55 extern void             rx_emit_stack_pushm (rtx *);
     56 extern char *		rx_gen_move_template (rtx *, bool);
     57 extern bool		rx_is_legitimate_constant (machine_mode, rtx);
     58 extern bool		rx_is_restricted_memory_address (rtx,
     59 							 machine_mode);
     60 extern bool		rx_match_ccmode (rtx, machine_mode);
     61 extern rtx		rx_maybe_pidify_operand (rtx, int);
     62 extern void		rx_notice_update_cc (rtx, rtx);
     63 extern void		rx_split_cbranch (machine_mode, enum rtx_code,
     64 					  rtx, rtx, rtx);
     65 extern machine_mode	rx_select_cc_mode (enum rtx_code, rtx, rtx);
     66 #endif
     67 
     68 #endif /* GCC_RX_PROTOS_H */
     69