annotate gcc/config/arc/arcHS.md @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ;; DFA scheduling description of the Synopsys DesignWare ARC HS cpu
kono
parents:
diff changeset
2 ;; for GNU C compiler
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
3 ;; Copyright (C) 2007-2018 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
4 ;; Contributor: Claudiu Zissulescu <claudiu.zissulescu@synopsys.com>
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 ;; This file is part of GCC.
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 ;; GCC is free software; you can redistribute it and/or modify
kono
parents:
diff changeset
9 ;; it under the terms of the GNU General Public License as published by
kono
parents:
diff changeset
10 ;; the Free Software Foundation; either version 3, or (at your option)
kono
parents:
diff changeset
11 ;; any later version.
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 ;; GCC is distributed in the hope that it will be useful,
kono
parents:
diff changeset
14 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
kono
parents:
diff changeset
15 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
kono
parents:
diff changeset
16 ;; GNU General Public License for more details.
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 ;; You should have received a copy of the GNU General Public License
kono
parents:
diff changeset
19 ;; along with GCC; see the file COPYING3. If not see
kono
parents:
diff changeset
20 ;; <http://www.gnu.org/licenses/>.
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 (define_automaton "ARCHS")
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 (define_cpu_unit "hs_issue, hs_ld_st, divrem_hs, mul_hs, x1, x2" "ARCHS")
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 (define_insn_reservation "hs_data_load" 4
kono
parents:
diff changeset
27 (and (match_test "TARGET_HS")
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
28 (eq_attr "tune" "none")
111
kono
parents:
diff changeset
29 (eq_attr "type" "load"))
kono
parents:
diff changeset
30 "hs_issue+hs_ld_st,hs_ld_st,nothing*2")
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 (define_insn_reservation "hs_data_store" 1
kono
parents:
diff changeset
33 (and (match_test "TARGET_HS")
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
34 (eq_attr "tune" "none")
111
kono
parents:
diff changeset
35 (eq_attr "type" "store"))
kono
parents:
diff changeset
36 "hs_issue+hs_ld_st")
kono
parents:
diff changeset
37
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
38 ;; Advanced ALU
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
39 (define_insn_reservation "hs_alu0" 4
111
kono
parents:
diff changeset
40 (and (match_test "TARGET_HS")
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
41 (eq_attr "tune" "none")
111
kono
parents:
diff changeset
42 (eq_attr "type" "cc_arith, two_cycle_core, shift, lr, sr"))
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
43 "hs_issue+x1,x2, nothing*2")
111
kono
parents:
diff changeset
44
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
45 ;; Basic ALU
111
kono
parents:
diff changeset
46 (define_insn_reservation "hs_alu1" 4
kono
parents:
diff changeset
47 (and (match_test "TARGET_HS")
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
48 (eq_attr "tune" "none")
111
kono
parents:
diff changeset
49 (eq_attr "type" "move, cmove, unary, binary, compare, misc"))
kono
parents:
diff changeset
50 "hs_issue+x1, nothing*3")
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 (define_insn_reservation "hs_divrem" 13
kono
parents:
diff changeset
53 (and (match_test "TARGET_HS")
kono
parents:
diff changeset
54 (match_test "TARGET_DIVREM")
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
55 (eq_attr "tune" "none")
111
kono
parents:
diff changeset
56 (eq_attr "type" "div_rem"))
kono
parents:
diff changeset
57 "hs_issue+divrem_hs, (divrem_hs)*12")
kono
parents:
diff changeset
58
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
59 (define_insn_reservation "hs_mul" 4
111
kono
parents:
diff changeset
60 (and (match_test "TARGET_HS")
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
61 (eq_attr "tune" "none")
111
kono
parents:
diff changeset
62 (eq_attr "type" "mul16_em, multi, umulti"))
kono
parents:
diff changeset
63 "hs_issue+mul_hs, nothing*3")
kono
parents:
diff changeset
64
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
65 ;; BYPASS Advanced ALU ->
111
kono
parents:
diff changeset
66 (define_bypass 1 "hs_alu0" "hs_divrem")
kono
parents:
diff changeset
67 (define_bypass 1 "hs_alu0" "hs_mul")
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
68 (define_bypass 2 "hs_alu0" "hs_alu0")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
69 (define_bypass 1 "hs_alu0" "hs_alu1")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
70 (define_bypass 1 "hs_alu0" "hs_data_load")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
71 (define_bypass 1 "hs_alu0" "hs_data_store" "store_data_bypass_p")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
72 (define_bypass 2 "hs_alu0" "hs_data_store")
111
kono
parents:
diff changeset
73
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
74 ;; BYPASS Basic ALU ->
111
kono
parents:
diff changeset
75 (define_bypass 1 "hs_alu1" "hs_alu1")
kono
parents:
diff changeset
76 (define_bypass 1 "hs_alu1" "hs_data_store" "store_data_bypass_p")
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
77 (define_bypass 3 "hs_alu1" "hs_mul")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
78 (define_bypass 3 "hs_alu1" "hs_divrem")
111
kono
parents:
diff changeset
79
kono
parents:
diff changeset
80 ;; BYPASS LD ->
kono
parents:
diff changeset
81 (define_bypass 1 "hs_data_load" "hs_alu1")
kono
parents:
diff changeset
82 (define_bypass 3 "hs_data_load" "hs_divrem")
kono
parents:
diff changeset
83 (define_bypass 3 "hs_data_load" "hs_data_load")
kono
parents:
diff changeset
84 (define_bypass 3 "hs_data_load" "hs_mul")
kono
parents:
diff changeset
85 (define_bypass 1 "hs_data_load" "hs_data_store" "store_data_bypass_p")
kono
parents:
diff changeset
86
kono
parents:
diff changeset
87 ;; BYPASS MPY ->
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
88 (define_bypass 3 "hs_mul" "hs_mul")
111
kono
parents:
diff changeset
89 (define_bypass 1 "hs_mul" "hs_alu1")
kono
parents:
diff changeset
90 (define_bypass 3 "hs_mul" "hs_divrem")
kono
parents:
diff changeset
91 (define_bypass 1 "hs_mul" "hs_data_store" "store_data_bypass_p")