1 /* Definitions of target machine for GNU compiler, EPIPHANY cpu. 2 Copyright (C) 2000-2015 Free Software Foundation, Inc. 3 Contributed by Embecosm on behalf of Adapteva, Inc. 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 #ifdef RTX_CODE 22 extern machine_mode epiphany_select_cc_mode (enum rtx_code, rtx, rtx); 23 24 /* Define the function that build the compare insn for scc and bcc. */ 25 extern struct rtx_def *gen_compare_reg (machine_mode, enum rtx_code, 26 machine_mode, rtx, rtx); 27 #endif 28 29 /* Declarations for various fns used in the .md file. */ 30 extern void epiphany_final_prescan_insn (rtx_insn *, rtx *, int); 31 extern bool epiphany_is_long_call_p (rtx); 32 extern bool epiphany_small16 (rtx); 33 bool epiphany_uninterruptible_p (tree decl); 34 bool epiphany_call_uninterruptible_p (rtx mem); 35 extern rtx sfunc_symbol (const char *name); 36 37 extern void epiphany_expand_prologue (void); 38 extern void epiphany_expand_epilogue (int); 39 extern int epiphany_initial_elimination_offset (int, int); 40 extern void epiphany_init_expanders (void); 41 extern int hard_regno_mode_ok (int regno, machine_mode mode); 42 #ifdef HARD_CONST 43 extern void emit_set_fp_mode (int entity, int mode, int prev_mode, 44 HARD_REG_SET regs_live); 45 #endif 46 extern void epiphany_insert_mode_switch_use (rtx_insn *insn, int, int); 47 extern void epiphany_expand_set_fp_mode (rtx *operands); 48 extern int epiphany_mode_needed (int entity, rtx_insn *insn); 49 extern int epiphany_mode_after (int entity, int last_mode, rtx_insn *insn); 50 extern bool epiphany_epilogue_uses (int regno); 51 extern bool epiphany_optimize_mode_switching (int entity); 52 extern bool epiphany_is_interrupt_p (tree); 53 extern unsigned epiphany_special_round_type_align (tree, unsigned, unsigned); 54 extern unsigned epiphany_adjust_field_align (tree, unsigned); 55 extern void epiphany_start_function (FILE *f, const char *name, tree decl); 56 extern bool epiphany_regno_rename_ok (unsigned src, unsigned dst); 57 58 /* Also declared in insn-attr.h, but files generated from epiphany.md 59 can't / won't include that. In particular: 60 PR other/55523: gencondmd file includes / dependencies are messed up, 61 it uses peephole2 predicates without having all the necessary headers. */ 62 extern int get_attr_sched_use_fpu (rtx_insn *); 63 64