comparison gcc/config/s390/2084.md @ 55:77e2b8dfacca gcc-4.4.5

update it from 4.4.3 to 4.5.0
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Fri, 12 Feb 2010 23:39:51 +0900
parents 855418dad1a3
children f6334be47118
comparison
equal deleted inserted replaced
52:c156f1bd5cd9 55:77e2b8dfacca
74 "x-e1-st,x-wr-st") 74 "x-e1-st,x-wr-st")
75 75
76 (define_insn_reservation "x_lr" 1 76 (define_insn_reservation "x_lr" 1
77 (and (eq_attr "cpu" "z990,z9_109") 77 (and (eq_attr "cpu" "z990,z9_109")
78 (eq_attr "type" "lr")) 78 (eq_attr "type" "lr"))
79 "x-e1-st,x-wr-st") 79 "x-e1-st,x-wr-st")
80 80
81 (define_insn_reservation "x_la" 1 81 (define_insn_reservation "x_la" 1
82 (and (eq_attr "cpu" "z990,z9_109") 82 (and (eq_attr "cpu" "z990,z9_109")
83 (eq_attr "type" "la")) 83 (eq_attr "type" "la"))
84 "x-e1-st,x-wr-st") 84 "x-e1-st,x-wr-st")
85 85
86 (define_insn_reservation "x_larl" 1 86 (define_insn_reservation "x_larl" 1
87 (and (eq_attr "cpu" "z990,z9_109") 87 (and (eq_attr "cpu" "z990,z9_109")
88 (eq_attr "type" "larl")) 88 (eq_attr "type" "larl"))
89 "x-e1-st,x-wr-st") 89 "x-e1-st,x-wr-st")
90 90
91 (define_insn_reservation "x_load" 1 91 (define_insn_reservation "x_load" 1
92 (and (eq_attr "cpu" "z990,z9_109") 92 (and (eq_attr "cpu" "z990,z9_109")
93 (eq_attr "type" "load")) 93 (eq_attr "type" "load"))
94 "x-e1-st+x-mem,x-wr-st") 94 "x-e1-st+x-mem,x-wr-st")
95 95
96 (define_insn_reservation "x_store" 1 96 (define_insn_reservation "x_store" 1
97 (and (eq_attr "cpu" "z990,z9_109") 97 (and (eq_attr "cpu" "z990,z9_109")
98 (eq_attr "type" "store")) 98 (eq_attr "type" "store"))
99 "x-e1-st+x_store_tok,x-wr-st") 99 "x-e1-st+x_store_tok,x-wr-st")
100 100
101 (define_insn_reservation "x_branch" 1 101 (define_insn_reservation "x_branch" 1
102 (and (eq_attr "cpu" "z990,z9_109") 102 (and (eq_attr "cpu" "z990,z9_109")
103 (eq_attr "type" "branch")) 103 (eq_attr "type" "branch"))
104 "x_e1_r,x_wr_r") 104 "x_e1_r,x_wr_r")
105 105
106 (define_insn_reservation "x_call" 5 106 (define_insn_reservation "x_call" 5
107 (and (eq_attr "cpu" "z990,z9_109") 107 (and (eq_attr "cpu" "z990,z9_109")
108 (eq_attr "type" "jsr")) 108 (eq_attr "type" "jsr"))
109 "x-e1-np*5,x-wr-np") 109 "x-e1-np*5,x-wr-np")
110 110
111 (define_insn_reservation "x_mul_hi" 2 111 (define_insn_reservation "x_mul_hi" 2
112 (and (eq_attr "cpu" "z990,z9_109") 112 (and (eq_attr "cpu" "z990,z9_109")
113 (eq_attr "type" "imulhi")) 113 (eq_attr "type" "imulhi"))
114 "x-e1-np*2,x-wr-np") 114 "x-e1-np*2,x-wr-np")
115 115
121 (define_insn_reservation "x_div" 10 121 (define_insn_reservation "x_div" 10
122 (and (eq_attr "cpu" "z990,z9_109") 122 (and (eq_attr "cpu" "z990,z9_109")
123 (eq_attr "type" "idiv")) 123 (eq_attr "type" "idiv"))
124 "x-e1-np*10,x-wr-np") 124 "x-e1-np*10,x-wr-np")
125 125
126 (define_insn_reservation "x_sem" 17 126 (define_insn_reservation "x_sem" 17
127 (and (eq_attr "cpu" "z990,z9_109") 127 (and (eq_attr "cpu" "z990,z9_109")
128 (eq_attr "type" "sem")) 128 (eq_attr "type" "sem"))
129 "x-e1-np+x-mem,x-e1-np*16,x-wr-st") 129 "x-e1-np+x-mem,x-e1-np*16,x-wr-st")
130 130
131 ;; 131 ;;
132 ;; Multicycle insns 132 ;; Multicycle insns
133 ;; 133 ;;
134 134
135 (define_insn_reservation "x_cs" 1 135 (define_insn_reservation "x_cs" 1
136 (and (eq_attr "cpu" "z990,z9_109") 136 (and (eq_attr "cpu" "z990,z9_109")
137 (eq_attr "type" "cs")) 137 (eq_attr "type" "cs"))
138 "x-e1-np,x-wr-np") 138 "x-e1-np,x-wr-np")
139 139
140 (define_insn_reservation "x_vs" 1 140 (define_insn_reservation "x_vs" 1
141 (and (eq_attr "cpu" "z990,z9_109") 141 (and (eq_attr "cpu" "z990,z9_109")
142 (eq_attr "type" "vs")) 142 (eq_attr "type" "vs"))
143 "x-e1-np*10,x-wr-np") 143 "x-e1-np*10,x-wr-np")
144 144
145 (define_insn_reservation "x_stm" 1 145 (define_insn_reservation "x_stm" 1
146 (and (eq_attr "cpu" "z990,z9_109") 146 (and (eq_attr "cpu" "z990,z9_109")
147 (eq_attr "type" "stm")) 147 (eq_attr "type" "stm"))
148 "(x-e1-np+x_store_tok)*10,x-wr-np") 148 "(x-e1-np+x_store_tok)*10,x-wr-np")
149 149
150 (define_insn_reservation "x_lm" 1 150 (define_insn_reservation "x_lm" 1
151 (and (eq_attr "cpu" "z990,z9_109") 151 (and (eq_attr "cpu" "z990,z9_109")
152 (eq_attr "type" "lm")) 152 (eq_attr "type" "lm"))
153 "x-e1-np*10,x-wr-np") 153 "x-e1-np*10,x-wr-np")
154 154
155 (define_insn_reservation "x_other" 1 155 (define_insn_reservation "x_other" 1
156 (and (eq_attr "cpu" "z990,z9_109") 156 (and (eq_attr "cpu" "z990,z9_109")
157 (eq_attr "type" "other")) 157 (eq_attr "type" "other"))
158 "x-e1-np,x-wr-np") 158 "x-e1-np,x-wr-np")
159 159
160 ;; 160 ;;
161 ;; Floating point insns 161 ;; Floating point insns
162 ;; 162 ;;
163 163
164 (define_insn_reservation "x_fsimptf" 7 164 (define_insn_reservation "x_fsimptf" 7
165 (and (eq_attr "cpu" "z990,z9_109") 165 (and (eq_attr "cpu" "z990,z9_109")
166 (eq_attr "type" "fsimptf,fhex")) 166 (eq_attr "type" "fsimptf,fhex"))
167 "x_e1_t*2,x-wr-fp") 167 "x_e1_t*2,x-wr-fp")
168 168
169 (define_insn_reservation "x_fsimpdf" 6 169 (define_insn_reservation "x_fsimpdf" 6
170 (and (eq_attr "cpu" "z990,z9_109") 170 (and (eq_attr "cpu" "z990,z9_109")
171 (eq_attr "type" "fsimpdf,fmuldf,fhex")) 171 (eq_attr "type" "fsimpdf,fmuldf,fhex"))
172 "x_e1_t,x-wr-fp") 172 "x_e1_t,x-wr-fp")
173 173
174 (define_insn_reservation "x_fsimpsf" 6 174 (define_insn_reservation "x_fsimpsf" 6
175 (and (eq_attr "cpu" "z990,z9_109") 175 (and (eq_attr "cpu" "z990,z9_109")
176 (eq_attr "type" "fsimpsf,fmulsf,fhex")) 176 (eq_attr "type" "fsimpsf,fmulsf,fhex"))
177 "x_e1_t,x-wr-fp") 177 "x_e1_t,x-wr-fp")
178 178
179 179
180 (define_insn_reservation "x_fmultf" 33 180 (define_insn_reservation "x_fmultf" 33
181 (and (eq_attr "cpu" "z990,z9_109") 181 (and (eq_attr "cpu" "z990,z9_109")
182 (eq_attr "type" "fmultf")) 182 (eq_attr "type" "fmultf"))
183 "x_e1_t*27,x-wr-fp") 183 "x_e1_t*27,x-wr-fp")
184 184
185 185
186 (define_insn_reservation "x_fdivtf" 82 186 (define_insn_reservation "x_fdivtf" 82
187 (and (eq_attr "cpu" "z990,z9_109") 187 (and (eq_attr "cpu" "z990,z9_109")
188 (eq_attr "type" "fdivtf,fsqrttf")) 188 (eq_attr "type" "fdivtf,fsqrttf"))
189 "x_e1_t*76,x-wr-fp") 189 "x_e1_t*76,x-wr-fp")
190 190
191 (define_insn_reservation "x_fdivdf" 36 191 (define_insn_reservation "x_fdivdf" 36
192 (and (eq_attr "cpu" "z990,z9_109") 192 (and (eq_attr "cpu" "z990,z9_109")
193 (eq_attr "type" "fdivdf,fsqrtdf")) 193 (eq_attr "type" "fdivdf,fsqrtdf"))
194 "x_e1_t*30,x-wr-fp") 194 "x_e1_t*30,x-wr-fp")
195 195
196 (define_insn_reservation "x_fdivsf" 36 196 (define_insn_reservation "x_fdivsf" 36
197 (and (eq_attr "cpu" "z990,z9_109") 197 (and (eq_attr "cpu" "z990,z9_109")
198 (eq_attr "type" "fdivsf,fsqrtsf")) 198 (eq_attr "type" "fdivsf,fsqrtsf"))
199 "x_e1_t*30,x-wr-fp") 199 "x_e1_t*30,x-wr-fp")
200 200
201 201
202 (define_insn_reservation "x_floadtf" 6 202 (define_insn_reservation "x_floadtf" 6
203 (and (eq_attr "cpu" "z990,z9_109") 203 (and (eq_attr "cpu" "z990,z9_109")
204 (eq_attr "type" "floadtf")) 204 (eq_attr "type" "floadtf"))
205 "x_e1_t,x-wr-fp") 205 "x_e1_t,x-wr-fp")
206 206
207 (define_insn_reservation "x_floaddf" 6 207 (define_insn_reservation "x_floaddf" 6
208 (and (eq_attr "cpu" "z990,z9_109") 208 (and (eq_attr "cpu" "z990,z9_109")
209 (eq_attr "type" "floaddf")) 209 (eq_attr "type" "floaddf"))
210 "x_e1_t,x-wr-fp") 210 "x_e1_t,x-wr-fp")
211 211
212 (define_insn_reservation "x_floadsf" 6 212 (define_insn_reservation "x_floadsf" 6
213 (and (eq_attr "cpu" "z990,z9_109") 213 (and (eq_attr "cpu" "z990,z9_109")
214 (eq_attr "type" "floadsf")) 214 (eq_attr "type" "floadsf"))
215 "x_e1_t,x-wr-fp") 215 "x_e1_t,x-wr-fp")
216 216
217 217
218 (define_insn_reservation "x_fstoredf" 1 218 (define_insn_reservation "x_fstoredf" 1
219 (and (eq_attr "cpu" "z990,z9_109") 219 (and (eq_attr "cpu" "z990,z9_109")
220 (eq_attr "type" "fstoredf")) 220 (eq_attr "type" "fstoredf"))
221 "x_e1_t,x-wr-fp") 221 "x_e1_t,x-wr-fp")
222 222
223 (define_insn_reservation "x_fstoresf" 1 223 (define_insn_reservation "x_fstoresf" 1
224 (and (eq_attr "cpu" "z990,z9_109") 224 (and (eq_attr "cpu" "z990,z9_109")
225 (eq_attr "type" "fstoresf")) 225 (eq_attr "type" "fstoresf"))
226 "x_e1_t,x-wr-fp") 226 "x_e1_t,x-wr-fp")
227 227
228 228
229 (define_insn_reservation "x_ftrunctf" 16 229 (define_insn_reservation "x_ftrunctf" 16
230 (and (eq_attr "cpu" "z990,z9_109") 230 (and (eq_attr "cpu" "z990,z9_109")
231 (eq_attr "type" "ftrunctf")) 231 (eq_attr "type" "ftrunctf"))
232 "x_e1_t*10,x-wr-fp") 232 "x_e1_t*10,x-wr-fp")
233 233
234 (define_insn_reservation "x_ftruncdf" 11 234 (define_insn_reservation "x_ftruncdf" 11
235 (and (eq_attr "cpu" "z990,z9_109") 235 (and (eq_attr "cpu" "z990,z9_109")
236 (eq_attr "type" "ftruncdf")) 236 (eq_attr "type" "ftruncdf"))
237 "x_e1_t*5,x-wr-fp") 237 "x_e1_t*5,x-wr-fp")
238 238
239 239
240 (define_insn_reservation "x_ftoi" 1 240 (define_insn_reservation "x_ftoi" 1
241 (and (eq_attr "cpu" "z990,z9_109") 241 (and (eq_attr "cpu" "z990,z9_109")
242 (eq_attr "type" "ftoi")) 242 (eq_attr "type" "ftoi"))
243 "x_e1_t*3,x-wr-fp") 243 "x_e1_t*3,x-wr-fp")
244 244
245 (define_insn_reservation "x_itof" 7 245 (define_insn_reservation "x_itof" 7
246 (and (eq_attr "cpu" "z990,z9_109") 246 (and (eq_attr "cpu" "z990,z9_109")
247 (eq_attr "type" "itoftf,itofdf,itofsf")) 247 (eq_attr "type" "itoftf,itofdf,itofsf"))
248 "x_e1_t*3,x-wr-fp") 248 "x_e1_t*3,x-wr-fp")
249 249
250 (define_bypass 1 "x_fsimpdf" "x_fstoredf") 250 (define_bypass 1 "x_fsimpdf" "x_fstoredf")
251 251
252 (define_bypass 1 "x_fsimpsf" "x_fstoresf") 252 (define_bypass 1 "x_fsimpsf" "x_fstoresf")
253 253
254 (define_bypass 1 "x_floaddf" "x_fsimpdf,x_fstoredf,x_floaddf") 254 (define_bypass 1 "x_floaddf" "x_fsimpdf,x_fstoredf,x_floaddf")
255 255
256 (define_bypass 1 "x_floadsf" "x_fsimpsf,x_fstoresf,x_floadsf") 256 (define_bypass 1 "x_floadsf" "x_fsimpsf,x_fstoresf,x_floadsf")
257 257
258 ;; 258 ;;
259 ;; s390_agen_dep_p returns 1, if a register is set in the 259 ;; s390_agen_dep_p returns 1, if a register is set in the
260 ;; first insn and used in the dependent insn to form a address. 260 ;; first insn and used in the dependent insn to form a address.
261 ;; 261 ;;
262 262
263 ;; 263 ;;
264 ;; If an instruction uses a register to address memory, it needs 264 ;; If an instruction uses a register to address memory, it needs
265 ;; to be set 5 cycles in advance. 265 ;; to be set 5 cycles in advance.
266 ;; 266 ;;
267 267
268 (define_bypass 5 "x_int,x_agen,x_lr" 268 (define_bypass 5 "x_int,x_agen,x_lr"
269 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other" 269 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other"
270 "s390_agen_dep_p") 270 "s390_agen_dep_p")
271 271
272 (define_bypass 9 "x_int,x_agen,x_lr" 272 (define_bypass 9 "x_int,x_agen,x_lr"
273 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\ 273 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\
274 x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf" 274 x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf"
275 "s390_agen_dep_p") 275 "s390_agen_dep_p")
276 ;; 276 ;;
277 ;; A load type instruction uses a bypass to feed the result back 277 ;; A load type instruction uses a bypass to feed the result back
278 ;; to the address generation pipeline stage. 278 ;; to the address generation pipeline stage.
279 ;; 279 ;;
280 280
281 (define_bypass 4 "x_load" 281 (define_bypass 4 "x_load"
282 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other" 282 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other"
283 "s390_agen_dep_p") 283 "s390_agen_dep_p")
284 284
285 (define_bypass 5 "x_load" 285 (define_bypass 5 "x_load"
286 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\ 286 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\
287 x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf" 287 x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf"
288 "s390_agen_dep_p") 288 "s390_agen_dep_p")
289 289
290 ;; 290 ;;
291 ;; A load address type instruction uses a bypass to feed the 291 ;; A load address type instruction uses a bypass to feed the
292 ;; result back to the address generation pipeline stage. 292 ;; result back to the address generation pipeline stage.
293 ;; 293 ;;
294 294
295 (define_bypass 3 "x_larl,x_la" 295 (define_bypass 3 "x_larl,x_la"
296 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other" 296 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other"
297 "s390_agen_dep_p") 297 "s390_agen_dep_p")
298 298
299 (define_bypass 5 "x_larl, x_la" 299 (define_bypass 5 "x_larl, x_la"
300 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\ 300 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\