annotate gcc/config/arc/arcEM.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 EM 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 "ARCEM")
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 (define_cpu_unit "em_issue, ld_st, mul_em, divrem_em" "ARCEM")
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 (define_insn_reservation "em_data_load" 2
kono
parents:
diff changeset
27 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
28 (eq_attr "type" "load"))
kono
parents:
diff changeset
29 "em_issue+ld_st,nothing")
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 (define_insn_reservation "em_data_store" 1
kono
parents:
diff changeset
32 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
33 (eq_attr "type" "store"))
kono
parents:
diff changeset
34 "em_issue+ld_st")
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 ;; Multipliers options
kono
parents:
diff changeset
37 (define_insn_reservation "mul_em_mpyw_1" 1
kono
parents:
diff changeset
38 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
39 (match_test "arc_mpy_option > 0")
kono
parents:
diff changeset
40 (match_test "arc_mpy_option <= 2")
kono
parents:
diff changeset
41 (eq_attr "type" "mul16_em"))
kono
parents:
diff changeset
42 "em_issue+mul_em")
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 (define_insn_reservation "mul_em_mpyw_2" 2
kono
parents:
diff changeset
45 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
46 (match_test "arc_mpy_option > 2")
kono
parents:
diff changeset
47 (match_test "arc_mpy_option <= 5")
kono
parents:
diff changeset
48 (eq_attr "type" "mul16_em"))
kono
parents:
diff changeset
49 "em_issue+mul_em, nothing")
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 (define_insn_reservation "mul_em_mpyw_4" 4
kono
parents:
diff changeset
52 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
53 (match_test "arc_mpy_option == 6")
kono
parents:
diff changeset
54 (eq_attr "type" "mul16_em"))
kono
parents:
diff changeset
55 "em_issue+mul_em, mul_em*3")
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 (define_insn_reservation "mul_em_multi_wlh1" 1
kono
parents:
diff changeset
58 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
59 (match_test "arc_mpy_option == 2")
kono
parents:
diff changeset
60 (eq_attr "type" "multi,umulti"))
kono
parents:
diff changeset
61 "em_issue+mul_em")
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 (define_insn_reservation "mul_em_multi_wlh2" 2
kono
parents:
diff changeset
64 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
65 (match_test "arc_mpy_option == 3")
kono
parents:
diff changeset
66 (eq_attr "type" "multi,umulti"))
kono
parents:
diff changeset
67 "em_issue+mul_em, nothing")
kono
parents:
diff changeset
68
kono
parents:
diff changeset
69 (define_insn_reservation "mul_em_multi_wlh3" 3
kono
parents:
diff changeset
70 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
71 (match_test "arc_mpy_option == 4")
kono
parents:
diff changeset
72 (eq_attr "type" "multi,umulti"))
kono
parents:
diff changeset
73 "em_issue+mul_em, mul_em*2")
kono
parents:
diff changeset
74
kono
parents:
diff changeset
75 ;; FIXME! Make the difference between MPY and MPYM for WLH4
kono
parents:
diff changeset
76 (define_insn_reservation "mul_em_multi_wlh4" 4
kono
parents:
diff changeset
77 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
78 (match_test "arc_mpy_option == 5")
kono
parents:
diff changeset
79 (eq_attr "type" "multi,umulti"))
kono
parents:
diff changeset
80 "em_issue+mul_em, mul_em*4")
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 (define_insn_reservation "mul_em_multi_wlh5" 9
kono
parents:
diff changeset
83 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
84 (match_test "arc_mpy_option == 6")
kono
parents:
diff changeset
85 (eq_attr "type" "multi,umulti"))
kono
parents:
diff changeset
86 "em_issue+mul_em, mul_em*8")
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88 ;; Radix-4 divider timing
kono
parents:
diff changeset
89 (define_insn_reservation "em_divrem" 3
kono
parents:
diff changeset
90 (and (match_test "TARGET_EM")
kono
parents:
diff changeset
91 (match_test "TARGET_DIVREM")
kono
parents:
diff changeset
92 (eq_attr "type" "div_rem"))
kono
parents:
diff changeset
93 "em_issue+mul_em+divrem_em, (mul_em+divrem_em)*2")