(root)/
gcc-13.2.0/
gcc/
config/
bfin/
bfin-protos.h
       1  /* Prototypes for Blackfin functions used in the md file & elsewhere.
       2     Copyright (C) 2005-2023 Free Software Foundation, Inc.
       3  
       4     This file is part of GNU CC.
       5  
       6     GNU CC is free software; you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation; either version 3, or (at your option)
       9     any later version.
      10  
      11     GNU CC is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with GCC; see the file COPYING3.  If not see
      18     <http://www.gnu.org/licenses/>.  */
      19  
      20  /* Function prototypes that cannot exist in bfin.h due to dependency
      21     complications.  */
      22  #ifndef GCC_BFIN_PROTOS_H
      23  #define GCC_BFIN_PROTOS_H
      24  
      25  /* For the anomaly 05-00-0245 */
      26  #define WA_SPECULATIVE_LOADS 0x00000001
      27  #define ENABLE_WA_SPECULATIVE_LOADS \
      28    (bfin_workarounds & WA_SPECULATIVE_LOADS)
      29  
      30  /* For the anomaly 05-00-0244 */
      31  #define WA_SPECULATIVE_SYNCS 0x00000002
      32  #define ENABLE_WA_SPECULATIVE_SYNCS \
      33    (bfin_workarounds & WA_SPECULATIVE_SYNCS)
      34  
      35  /* For the anomaly 05-00-0371 */
      36  #define WA_RETS 0x00000004
      37  #define ENABLE_WA_RETS \
      38    (bfin_workarounds & WA_RETS)
      39  
      40  /* For the anomaly 05-00-0426 */
      41  #define WA_INDIRECT_CALLS 0x00000008
      42  #define ENABLE_WA_INDIRECT_CALLS \
      43    ((bfin_workarounds & WA_INDIRECT_CALLS) && !TARGET_ICPLB)
      44  
      45  #define WA_05000257 0x00000010
      46  #define ENABLE_WA_05000257 \
      47    (bfin_workarounds & WA_05000257)
      48  
      49  #define WA_05000283 0x00000020
      50  #define ENABLE_WA_05000283 \
      51    (bfin_workarounds & WA_05000283)
      52  
      53  #define WA_05000315 0x00000040
      54  #define ENABLE_WA_05000315 \
      55    (bfin_workarounds & WA_05000315)
      56  
      57  /* For the anomaly 05-00-0312 */
      58  #define WA_LOAD_LCREGS 0x00000080
      59  #define ENABLE_WA_LOAD_LCREGS \
      60    (bfin_workarounds & WA_LOAD_LCREGS)
      61  
      62  #define WA_05000074 0x00000100
      63  #define ENABLE_WA_05000074 \
      64    (bfin_workarounds & WA_05000074)
      65  
      66  extern bool function_arg_regno_p (int);
      67  
      68  extern const char *output_load_immediate (rtx *);
      69  extern const char *output_casesi_internal (rtx *);
      70  extern char *bfin_asm_long (void);
      71  extern char *bfin_asm_short (void);
      72  extern int log2constp (unsigned HOST_WIDE_INT);
      73  
      74  extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx);	  
      75  extern HOST_WIDE_INT bfin_initial_elimination_offset (int, int);
      76  
      77  extern int effective_address_32bit_p (rtx, machine_mode);
      78  extern int symbolic_reference_mentioned_p (rtx);
      79  extern rtx bfin_gen_compare (rtx, machine_mode);
      80  extern bool expand_move (rtx *, machine_mode);
      81  extern void bfin_expand_call (rtx, rtx, rtx, rtx, int);
      82  extern bool bfin_longcall_p (rtx, int);
      83  extern bool bfin_dsp_memref_p (rtx);
      84  extern bool bfin_expand_cpymem (rtx, rtx, rtx, rtx);
      85  
      86  extern enum reg_class secondary_input_reload_class (enum reg_class,
      87  						    machine_mode,
      88  						    rtx);
      89  extern enum reg_class secondary_output_reload_class (enum reg_class,
      90  						     machine_mode,
      91  						     rtx);
      92  extern char *section_asm_op_1 (SECT_ENUM_T);
      93  extern char *section_asm_op (SECT_ENUM_T);
      94  extern void print_operand (FILE *,  rtx, char);
      95  extern void print_address_operand (FILE *, rtx);
      96  extern void split_di (rtx [], int, rtx [], rtx []);
      97  extern int split_load_immediate (rtx []);
      98  extern void emit_pic_move (rtx *, machine_mode);
      99  extern void asm_conditional_branch (rtx_insn *, rtx *, int, int);
     100  extern rtx bfin_gen_compare (rtx, machine_mode);
     101  
     102  extern unsigned bfin_local_alignment (tree, unsigned);
     103  extern rtx bfin_va_arg (tree, tree);
     104  
     105  extern void bfin_expand_prologue (void);
     106  extern void bfin_expand_epilogue (int, int, bool);
     107  extern int analyze_push_multiple_operation (rtx);
     108  extern int analyze_pop_multiple_operation (rtx);
     109  extern void output_push_multiple (rtx, rtx *);
     110  extern void output_pop_multiple (rtx, rtx *);
     111  extern int bfin_hard_regno_rename_ok (unsigned int, unsigned int);
     112  extern rtx bfin_return_addr_rtx (int);
     113  extern void bfin_hardware_loop (void);
     114  
     115  #endif
     116