annotate gcc/config/sparc/niagara4.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 ;; Scheduling description for Niagara-4
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2 ;; Copyright (C) 2012-2018 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
3 ;;
kono
parents:
diff changeset
4 ;; This file is part of GCC.
kono
parents:
diff changeset
5 ;;
kono
parents:
diff changeset
6 ;; GCC is free software; you can redistribute it and/or modify
kono
parents:
diff changeset
7 ;; it under the terms of the GNU General Public License as published by
kono
parents:
diff changeset
8 ;; the Free Software Foundation; either version 3, or (at your option)
kono
parents:
diff changeset
9 ;; any later version.
kono
parents:
diff changeset
10 ;;
kono
parents:
diff changeset
11 ;; GCC is distributed in the hope that it will be useful,
kono
parents:
diff changeset
12 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
kono
parents:
diff changeset
13 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
kono
parents:
diff changeset
14 ;; GNU General Public License for more details.
kono
parents:
diff changeset
15 ;;
kono
parents:
diff changeset
16 ;; You should have received a copy of the GNU General Public License
kono
parents:
diff changeset
17 ;; along with GCC; see the file COPYING3. If not see
kono
parents:
diff changeset
18 ;; <http://www.gnu.org/licenses/>.
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 (define_automaton "niagara4_0")
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 (define_cpu_unit "n4_slot0,n4_slot1,n4_slot2" "niagara4_0")
kono
parents:
diff changeset
23 (define_reservation "n4_single_issue" "n4_slot0 + n4_slot1 + n4_slot2")
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 (define_cpu_unit "n4_load_store" "niagara4_0")
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 (define_insn_reservation "n4_single" 1
kono
parents:
diff changeset
28 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
29 (eq_attr "type" "multi,savew,flushw,iflush,trap"))
kono
parents:
diff changeset
30 "n4_single_issue")
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 (define_insn_reservation "n4_integer" 1
kono
parents:
diff changeset
33 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
34 (eq_attr "type" "ialu,ialuX,shift,cmove,compare"))
kono
parents:
diff changeset
35 "(n4_slot0 | n4_slot1)")
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 (define_insn_reservation "n4_imul" 12
kono
parents:
diff changeset
38 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
39 (eq_attr "type" "imul"))
kono
parents:
diff changeset
40 "n4_slot1, nothing*11")
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 (define_insn_reservation "n4_idiv" 35
kono
parents:
diff changeset
43 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
44 (eq_attr "type" "idiv"))
kono
parents:
diff changeset
45 "n4_slot1, nothing*34")
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 (define_insn_reservation "n4_load" 5
kono
parents:
diff changeset
48 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
49 (eq_attr "type" "load,fpload,sload"))
kono
parents:
diff changeset
50 "(n4_slot0 + n4_load_store), nothing*4")
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 (define_insn_reservation "n4_store" 1
kono
parents:
diff changeset
53 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
54 (eq_attr "type" "store,fpstore"))
kono
parents:
diff changeset
55 "(n4_slot0 | n4_slot2) + n4_load_store")
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 (define_insn_reservation "n4_cti" 1
kono
parents:
diff changeset
58 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
59 (eq_attr "type" "cbcond,uncond_cbcond,branch,call,sibcall,call_no_delay_slot,uncond_branch,return"))
kono
parents:
diff changeset
60 "n4_slot1")
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 (define_insn_reservation "n4_fp" 11
kono
parents:
diff changeset
63 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
64 (eq_attr "type" "fpmove,fpcmove,fpcrmove,fp,fpcmp,fpmul"))
kono
parents:
diff changeset
65 "n4_slot1, nothing*10")
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 (define_insn_reservation "n4_array" 12
kono
parents:
diff changeset
68 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
69 (eq_attr "type" "array,bmask,edge,edgen"))
kono
parents:
diff changeset
70 "n4_slot1, nothing*11")
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72 (define_insn_reservation "n4_vis_move_1cycle" 1
kono
parents:
diff changeset
73 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
74 (and (eq_attr "type" "vismv")
kono
parents:
diff changeset
75 (eq_attr "fptype" "double")))
kono
parents:
diff changeset
76 "n4_slot1")
kono
parents:
diff changeset
77
kono
parents:
diff changeset
78 ;; The latency numbers for VIS instructions in the reservations below
kono
parents:
diff changeset
79 ;; reflect empirical results, and don't match with the documented
kono
parents:
diff changeset
80 ;; latency numbers in the T4 Processor Supplement. This is because
kono
parents:
diff changeset
81 ;; the HW chaps didn't feel it necessary to document the complexity in
kono
parents:
diff changeset
82 ;; the PRM, and just assigned a latency of 11 to all/most of the VIS
kono
parents:
diff changeset
83 ;; instructions.
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 (define_insn_reservation "n4_vis_move_11cycle" 11
kono
parents:
diff changeset
86 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
87 (and (eq_attr "type" "vismv")
kono
parents:
diff changeset
88 (eq_attr "fptype" "single")))
kono
parents:
diff changeset
89 "n4_slot1, nothing*10")
kono
parents:
diff changeset
90
kono
parents:
diff changeset
91 (define_insn_reservation "n4_vis_logical" 3
kono
parents:
diff changeset
92 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
93 (ior (and (eq_attr "type" "visl,pdistn")
kono
parents:
diff changeset
94 (eq_attr "fptype" "double"))
kono
parents:
diff changeset
95 (eq_attr "type" "viscmp")))
kono
parents:
diff changeset
96 "n4_slot1, nothing*2")
kono
parents:
diff changeset
97
kono
parents:
diff changeset
98 (define_insn_reservation "n4_vis_logical_11cycle" 11
kono
parents:
diff changeset
99 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
100 (and (eq_attr "type" "visl")
kono
parents:
diff changeset
101 (eq_attr "fptype" "single")))
kono
parents:
diff changeset
102 "n4_slot1, nothing*10")
kono
parents:
diff changeset
103
kono
parents:
diff changeset
104 (define_insn_reservation "n4_vis_fga" 11
kono
parents:
diff changeset
105 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
106 (eq_attr "type" "fga,gsr"))
kono
parents:
diff changeset
107 "n4_slot1, nothing*10")
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109 (define_insn_reservation "n4_vis_fgm" 11
kono
parents:
diff changeset
110 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
111 (eq_attr "type" "fgm_pack,fgm_mul,pdist"))
kono
parents:
diff changeset
112 "n4_slot1, nothing*10")
kono
parents:
diff changeset
113
kono
parents:
diff changeset
114 (define_insn_reservation "n4_fpdivs" 24
kono
parents:
diff changeset
115 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
116 (eq_attr "type" "fpdivs,fpsqrts"))
kono
parents:
diff changeset
117 "n4_slot1, nothing*23")
kono
parents:
diff changeset
118
kono
parents:
diff changeset
119 (define_insn_reservation "n4_fpdivd" 37
kono
parents:
diff changeset
120 (and (eq_attr "cpu" "niagara4")
kono
parents:
diff changeset
121 (eq_attr "type" "fpdivd,fpsqrtd"))
kono
parents:
diff changeset
122 "n4_slot1, nothing*36")