Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/mips/5400.md @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 77e2b8dfacca |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 ;; DFA-based pipeline description for 5400 | |
2 (define_automaton "vr54") | |
3 (define_cpu_unit "vr54_dp0" "vr54") | |
4 (define_cpu_unit "vr54_dp1" "vr54") | |
5 (define_cpu_unit "vr54_mem" "vr54") | |
6 (define_cpu_unit "vr54_mac" "vr54") | |
7 | |
8 ;; | |
9 ;; The ordering of the instruction-execution-path/resource-usage | |
10 ;; descriptions (also known as reservation RTL) is roughly ordered | |
11 ;; based on the define attribute RTL for the "type" classification. | |
12 ;; When modifying, remember that the first test that matches is the | |
13 ;; reservation used! | |
14 ;; | |
15 | |
16 (define_insn_reservation "ir_vr54_unknown" 1 | |
17 (and (eq_attr "cpu" "r5400") | |
18 (eq_attr "type" "unknown")) | |
19 "vr54_dp0+vr54_dp1+vr54_mem+vr54_mac") | |
20 | |
21 ;; Assume prediction fails. | |
22 (define_insn_reservation "ir_vr54_branch" 3 | |
23 (and (eq_attr "cpu" "r5400") | |
24 (eq_attr "type" "branch,jump,call")) | |
25 "vr54_dp0|vr54_dp1") | |
26 | |
27 (define_insn_reservation "ir_vr54_load" 2 | |
28 (and (eq_attr "cpu" "r5400") | |
29 (eq_attr "type" "load,fpload,fpidxload")) | |
30 "vr54_mem") | |
31 | |
32 (define_insn_reservation "ir_vr54_store" 1 | |
33 (and (eq_attr "cpu" "r5400") | |
34 (eq_attr "type" "store")) | |
35 "vr54_mem") | |
36 | |
37 (define_insn_reservation "ir_vr54_fstore" 1 | |
38 (and (eq_attr "cpu" "r5400") | |
39 (eq_attr "type" "fpstore,fpidxstore")) | |
40 "vr54_mem") | |
41 | |
42 | |
43 ;; This reservation is for conditional move based on integer | |
44 ;; or floating point CC. | |
45 (define_insn_reservation "ir_vr54_condmove" 4 | |
46 (and (eq_attr "cpu" "r5400") | |
47 (eq_attr "type" "condmove")) | |
48 "vr54_dp0|vr54_dp1") | |
49 | |
50 ;; Move to/from FPU registers | |
51 (define_insn_reservation "ir_vr54_xfer" 2 | |
52 (and (eq_attr "cpu" "r5400") | |
53 (eq_attr "type" "mfc,mtc")) | |
54 "vr54_dp0|vr54_dp1") | |
55 | |
56 (define_insn_reservation "ir_vr54_hilo" 1 | |
57 (and (eq_attr "cpu" "r5400") | |
58 (eq_attr "type" "mthilo,mfhilo")) | |
59 "vr54_dp0|vr54_dp1") | |
60 | |
61 (define_insn_reservation "ir_vr54_arith" 1 | |
62 (and (eq_attr "cpu" "r5400") | |
63 (eq_attr "type" "arith,shift,signext,slt,clz,const,logical,move,nop,trap")) | |
64 "vr54_dp0|vr54_dp1") | |
65 | |
66 (define_insn_reservation "ir_vr54_imul_si" 3 | |
67 (and (eq_attr "cpu" "r5400") | |
68 (and (eq_attr "type" "imul,imul3") | |
69 (eq_attr "mode" "SI"))) | |
70 "vr54_dp0|vr54_dp1") | |
71 | |
72 (define_insn_reservation "ir_vr54_imul_di" 4 | |
73 (and (eq_attr "cpu" "r5400") | |
74 (and (eq_attr "type" "imul,imul3") | |
75 (eq_attr "mode" "DI"))) | |
76 "vr54_dp0|vr54_dp1") | |
77 | |
78 (define_insn_reservation "ir_vr54_imadd_si" 3 | |
79 (and (eq_attr "cpu" "r5400") | |
80 (eq_attr "type" "imul,imul3")) | |
81 "vr54_mac") | |
82 | |
83 (define_insn_reservation "ir_vr54_idiv_si" 42 | |
84 (and (eq_attr "cpu" "r5400") | |
85 (and (eq_attr "type" "idiv") | |
86 (eq_attr "mode" "SI"))) | |
87 "vr54_dp0|vr54_dp1") | |
88 | |
89 (define_insn_reservation "ir_vr54_idiv_di" 74 | |
90 (and (eq_attr "cpu" "r5400") | |
91 (and (eq_attr "type" "idiv") | |
92 (eq_attr "mode" "DI"))) | |
93 "vr54_dp0|vr54_dp1") | |
94 | |
95 (define_insn_reservation "ir_vr54_fadd" 4 | |
96 (and (eq_attr "cpu" "r5400") | |
97 (eq_attr "type" "fadd")) | |
98 "vr54_dp0|vr54_dp1") | |
99 | |
100 (define_insn_reservation "ir_vr54_fmul_sf" 5 | |
101 (and (eq_attr "cpu" "r5400") | |
102 (and (eq_attr "type" "fmul") | |
103 (eq_attr "mode" "SF"))) | |
104 "vr54_dp0|vr54_dp1") | |
105 | |
106 (define_insn_reservation "ir_vr54_fmul_df" 6 | |
107 (and (eq_attr "cpu" "r5400") | |
108 (and (eq_attr "type" "fmul") | |
109 (eq_attr "mode" "DF"))) | |
110 "vr54_dp0|vr54_dp1") | |
111 | |
112 (define_insn_reservation "ir_vr54_fmadd_sf" 9 | |
113 (and (eq_attr "cpu" "r5400") | |
114 (and (eq_attr "type" "fmadd") | |
115 (eq_attr "mode" "SF"))) | |
116 "vr54_dp0|vr54_dp1") | |
117 | |
118 (define_insn_reservation "ir_vr54_fmadd_df" 10 | |
119 (and (eq_attr "cpu" "r5400") | |
120 (and (eq_attr "type" "fmadd") | |
121 (eq_attr "mode" "DF"))) | |
122 "vr54_dp0|vr54_dp1") | |
123 | |
124 (define_insn_reservation "ir_vr54_fdiv_sf" 42 | |
125 (and (eq_attr "cpu" "r5400") | |
126 (and (eq_attr "type" "fdiv,frdiv,fsqrt") | |
127 (eq_attr "mode" "SF"))) | |
128 "vr54_dp0|vr54_dp1") | |
129 | |
130 (define_insn_reservation "ir_vr54_fdiv_df" 72 | |
131 (and (eq_attr "cpu" "r5400") | |
132 (and (eq_attr "type" "fdiv,frdiv,fsqrt") | |
133 (eq_attr "mode" "DF"))) | |
134 "vr54_dp0|vr54_dp1") | |
135 | |
136 (define_insn_reservation "ir_vr54_fabs" 2 | |
137 (and (eq_attr "cpu" "r5400") | |
138 (eq_attr "type" "fabs,fneg,fmove")) | |
139 "vr54_dp0|vr54_dp1") | |
140 | |
141 (define_insn_reservation "ir_vr54_fcmp" 2 | |
142 (and (eq_attr "cpu" "r5400") | |
143 (eq_attr "type" "fcmp")) | |
144 "vr54_dp0|vr54_dp1") | |
145 | |
146 (define_insn_reservation "ir_vr54_fcvt" 6 | |
147 (and (eq_attr "cpu" "r5400") | |
148 (eq_attr "type" "fcvt")) | |
149 "vr54_dp0|vr54_dp1") | |
150 | |
151 (define_insn_reservation "ir_vr54_frsqrt_sf" 61 | |
152 (and (eq_attr "cpu" "r5400") | |
153 (and (eq_attr "type" "frsqrt") | |
154 (eq_attr "mode" "SF"))) | |
155 "vr54_dp0|vr54_dp1") | |
156 | |
157 (define_insn_reservation "ir_vr54_frsqrt_df" 121 | |
158 (and (eq_attr "cpu" "r5400") | |
159 (and (eq_attr "type" "frsqrt") | |
160 (eq_attr "mode" "DF"))) | |
161 "vr54_dp0|vr54_dp1") | |
162 | |
163 (define_insn_reservation "ir_vr54_multi" 1 | |
164 (and (eq_attr "cpu" "r5400") | |
165 (eq_attr "type" "multi")) | |
166 "vr54_dp0+vr54_dp1+vr54_mem+vr54_mac") |