1 /* Prototypes for Blackfin functions used in the md file & elsewhere. 2 Copyright (C) 2005 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 2, 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 GNU CC; see the file COPYING. If not, write to 18 the Free Software Foundation, 51 Franklin Street, Fifth Floor, 19 Boston, MA 02110-1301, USA. */ 20 21 /* Function prototypes that cannot exist in bfin.h due to dependency 22 complications. */ 23 #ifndef GCC_BFIN_PROTOS_H 24 #define GCC_BFIN_PROTOS_H 25 26 #define Mmode enum machine_mode 27 28 extern rtx function_arg (CUMULATIVE_ARGS *, Mmode, tree, int); 29 extern void function_arg_advance (CUMULATIVE_ARGS *, Mmode, tree, int); 30 extern bool function_arg_regno_p (int); 31 32 extern const char *output_load_immediate (rtx *); 33 extern const char *output_casesi_internal (rtx *); 34 extern char *bfin_asm_long (void); 35 extern char *bfin_asm_short (void); 36 extern int log2constp (unsigned HOST_WIDE_INT); 37 38 extern rtx legitimize_address (rtx, rtx, Mmode); 39 extern int hard_regno_mode_ok (int, Mmode); 40 extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx); 41 extern int bfin_frame_pointer_required (void); 42 extern HOST_WIDE_INT bfin_initial_elimination_offset (int, int); 43 44 extern int effective_address_32bit_p (rtx, Mmode); 45 extern int symbolic_reference_mentioned_p (rtx); 46 extern rtx bfin_gen_compare (rtx, Mmode); 47 extern void expand_move (rtx *, Mmode); 48 extern void bfin_expand_call (rtx, rtx, rtx, rtx, int); 49 extern bool bfin_longcall_p (rtx, int); 50 extern bool bfin_dsp_memref_p (rtx); 51 extern bool bfin_expand_strmov (rtx, rtx, rtx, rtx); 52 53 extern void conditional_register_usage (void); 54 extern int bfin_register_move_cost (enum machine_mode, enum reg_class, 55 enum reg_class); 56 extern int bfin_memory_move_cost (enum machine_mode, enum reg_class, int in); 57 extern enum reg_class secondary_input_reload_class (enum reg_class, Mmode, 58 rtx); 59 extern enum reg_class secondary_output_reload_class (enum reg_class, Mmode, 60 rtx); 61 extern char *section_asm_op_1 (SECT_ENUM_T); 62 extern char *section_asm_op (SECT_ENUM_T); 63 extern void override_options (void); 64 extern void print_operand (FILE *, rtx, char); 65 extern void print_address_operand (FILE *, rtx); 66 extern void split_di (rtx [], int, rtx [], rtx []); 67 extern int split_load_immediate (rtx []); 68 extern void emit_pic_move (rtx *, Mmode); 69 extern void override_options (void); 70 extern void asm_conditional_branch (rtx, rtx *, int, int); 71 extern rtx bfin_gen_compare (rtx, Mmode); 72 73 extern int bfin_return_in_memory (tree); 74 extern void initialize_trampoline (rtx, rtx, rtx); 75 extern bool bfin_legitimate_address_p (Mmode, rtx, int); 76 extern rtx bfin_va_arg (tree, tree); 77 78 extern void bfin_expand_prologue (void); 79 extern void bfin_expand_epilogue (int, int); 80 extern int push_multiple_operation (rtx, Mmode); 81 extern int pop_multiple_operation (rtx, Mmode); 82 extern void output_push_multiple (rtx, rtx *); 83 extern void output_pop_multiple (rtx, rtx *); 84 extern int bfin_hard_regno_rename_ok (unsigned int, unsigned int); 85 extern rtx bfin_return_addr_rtx (int); 86 extern void bfin_hardware_loop (void); 87 #undef Mmode 88 89 #endif 90 91