* c-ada-spec.c (dump_number): Add FLOAT_P parameter.
[official-gcc.git] / gcc / config / arc / arc600.md
blob926a23bafcb984f379dce827cc84a7166825abc6
1 ;; DFA scheduling description of the Synopsys DesignWare ARC600 cpu
2 ;; for GNU C compiler
3 ;; Copyright (C) 2007-2018 Free Software Foundation, Inc.
4 ;; Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
5 ;;              on behalf of Synopsys Inc.
7 ;; This file is part of GCC.
9 ;; GCC is free software; you can redistribute it and/or modify
10 ;; it under the terms of the GNU General Public License as published by
11 ;; the Free Software Foundation; either version 3, or (at your option)
12 ;; any later version.
14 ;; GCC is distributed in the hope that it will be useful,
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 ;; GNU General Public License for more details.
19 ;; You should have received a copy of the GNU General Public License
20 ;; along with GCC; see the file COPYING3.  If not see
21 ;; <http://www.gnu.org/licenses/>.
23 (define_automaton "ARC600")
25 (define_cpu_unit "issue_600" "ARC600")
26 (define_cpu_unit "mul64_600" "ARC600")
28 ; latency from flag-setting insns to branches is 3.
29 (define_insn_reservation "compare_600" 3
30   (and (eq_attr "tune" "arc600")
31        (eq_attr "type" "compare"))
32   "issue_600")
34 (define_insn_reservation "load_DI_600" 4
35   (and (eq_attr "tune" "arc600")
36        (eq_attr "type" "load")
37        (match_operand:DI 0 "" ""))
38   "issue_600")
40 (define_insn_reservation "load_600" 3
41   (and (eq_attr "tune" "arc600")
42        (eq_attr "type" "load")
43        (not (match_operand:DI 0 "" "")))
44   "issue_600")
46 (define_insn_reservation "mul_600_fast" 3
47   (and (eq_attr "tune" "arc600")
48        (match_test "arc_multcost < COSTS_N_INSNS (7)")
49        (eq_attr "type" "multi,umulti"))
50   "mul64_600*3")
52 (define_insn_reservation "mul_600_slow" 8
53   (and (eq_attr "tune" "arc600")
54        (match_test "arc_multcost >= COSTS_N_INSNS (7)")
55        (eq_attr "type" "multi,umulti"))
56   "mul64_600*8")
58 (define_insn_reservation "mul_mac_600" 3
59   (and (eq_attr "tune" "arc600")
60        (eq_attr "type" "mulmac_600"))
61   "nothing*3")
63 (define_bypass 1 "mul_mac_600" "mul_mac_600")