Line data Source code
1 : ;; Copyright (C) 2026 Free Software Foundation, Inc.
2 : ;;
3 : ;; This file is part of GCC.
4 : ;;
5 : ;; GCC is free software; you can redistribute it and/or modify
6 : ;; it under the terms of the GNU General Public License as published by
7 : ;; the Free Software Foundation; either version 3, or (at your option)
8 : ;; any later version.
9 : ;;
10 : ;; GCC is distributed in the hope that it will be useful,
11 : ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 : ;; GNU General Public License for more details.
14 : ;;
15 : ;; You should have received a copy of the GNU General Public License
16 : ;; along with GCC; see the file COPYING3. If not see
17 : ;; <http://www.gnu.org/licenses/>.
18 : ;;
19 :
20 : ;; HYGON c86-4g-m7 Scheduling
21 : ;; Modeling automatons for decoders, integer execution pipes,
22 : ;; AGU pipes, branch, floating point execution, fp store units,
23 : ;; integer and floating point dividers.
24 : (define_automaton "c86_4g_m7, c86_4g_m7_ieu, c86_4g_m7_agu, c86_4g_m7_fpu, c86_4g_m7_idiv, c86_4g_m7_fdiv")
25 :
26 : ;; Decoders unit has 4 decoders and all of them can decode fast path
27 : ;; and vector type instructions.
28 : (define_cpu_unit "c86-4g-m7-decode0" "c86_4g_m7")
29 : (define_cpu_unit "c86-4g-m7-decode1" "c86_4g_m7")
30 : (define_cpu_unit "c86-4g-m7-decode2" "c86_4g_m7")
31 : (define_cpu_unit "c86-4g-m7-decode3" "c86_4g_m7")
32 :
33 : ;; Two separated dividers for int and fp.
34 : (define_cpu_unit "c86-4g-m7-idiv" "c86_4g_m7_idiv")
35 : (define_cpu_unit "c86-4g-m7-fdiv" "c86_4g_m7_fdiv")
36 :
37 : ;; Currently blocking all decoders for vector path instructions as
38 : ;; they are dispatched separetely as microcode sequence.
39 : (define_reservation "c86-4g-m7-vector" "c86-4g-m7-decode0+c86-4g-m7-decode1+c86-4g-m7-decode2+c86-4g-m7-decode3")
40 :
41 : ;; Direct instructions can be issued to any of the four decoders.
42 : (define_reservation "c86-4g-m7-direct" "c86-4g-m7-decode0|c86-4g-m7-decode1|c86-4g-m7-decode2|c86-4g-m7-decode3")
43 :
44 : ;; Fix me: Need to revisit this later to simulate fast path double behavior.
45 : (define_reservation "c86-4g-m7-double" "c86-4g-m7-direct")
46 :
47 : ;; Integer unit 4 ALU pipes.
48 : (define_cpu_unit "c86-4g-m7-ieu0" "c86_4g_m7_ieu")
49 : (define_cpu_unit "c86-4g-m7-ieu1" "c86_4g_m7_ieu")
50 : (define_cpu_unit "c86-4g-m7-ieu2" "c86_4g_m7_ieu")
51 : (define_cpu_unit "c86-4g-m7-ieu3" "c86_4g_m7_ieu")
52 :
53 : ;; c86-4g-m7 has an additional branch unit.
54 : (define_cpu_unit "c86-4g-m7-bru0" "c86_4g_m7_ieu")
55 : (define_reservation "c86-4g-m7-ieu" "c86-4g-m7-ieu0|c86-4g-m7-ieu1|c86-4g-m7-ieu2|c86-4g-m7-ieu3")
56 :
57 : ;; 3 AGU pipes in c86-4g-m7
58 : (define_cpu_unit "c86-4g-m7-agu0" "c86_4g_m7_agu")
59 : (define_cpu_unit "c86-4g-m7-agu1" "c86_4g_m7_agu")
60 : (define_cpu_unit "c86-4g-m7-agu2" "c86_4g_m7_agu")
61 : (define_reservation "c86-4g-m7-agu-reserve" "c86-4g-m7-agu0|c86-4g-m7-agu1|c86-4g-m7-agu2")
62 :
63 : ;; Load is 4 cycles. We do not model reservation of load unit.
64 : (define_reservation "c86-4g-m7-load" "c86-4g-m7-agu-reserve")
65 : (define_reservation "c86-4g-m7-store" "c86-4g-m7-agu-reserve")
66 :
67 : ;; vectorpath (microcoded) instructions are single issue instructions.
68 : ;; So, they occupy all the integer units.
69 : (define_reservation "c86-4g-m7-ivector" "c86-4g-m7-ieu0+c86-4g-m7-ieu1
70 : +c86-4g-m7-ieu2+c86-4g-m7-ieu3+c86-4g-m7-bru0
71 : +c86-4g-m7-agu0+c86-4g-m7-agu1+c86-4g-m7-agu2")
72 :
73 : ;; Floating point unit 4 FP pipes.
74 : (define_cpu_unit "c86-4g-m7-fpu0" "c86_4g_m7_fpu")
75 : (define_cpu_unit "c86-4g-m7-fpu1" "c86_4g_m7_fpu")
76 : (define_cpu_unit "c86-4g-m7-fpu2" "c86_4g_m7_fpu")
77 : (define_cpu_unit "c86-4g-m7-fpu3" "c86_4g_m7_fpu")
78 : (define_reservation "c86-4g-m7-fpu" "c86-4g-m7-fpu0|c86-4g-m7-fpu1|c86-4g-m7-fpu2|c86-4g-m7-fpu3")
79 : (define_reservation "c86-4g-m7-fpu_0_2" "c86-4g-m7-fpu0|c86-4g-m7-fpu2")
80 : (define_reservation "c86-4g-m7-fpu_1_3" "c86-4g-m7-fpu1|c86-4g-m7-fpu3")
81 : (define_reservation "c86-4g-m7-fpu_0_1" "c86-4g-m7-fpu0|c86-4g-m7-fpu1")
82 : (define_reservation "c86-4g-m7-fpu_0_2x2" "c86-4g-m7-fpu0*2|c86-4g-m7-fpu2*2")
83 : (define_reservation "c86-4g-m7-fpu_0_2x4" "c86-4g-m7-fpu0*4|c86-4g-m7-fpu2*4")
84 : (define_reservation "c86-4g-m7-fvector" "c86-4g-m7-fpu0+c86-4g-m7-fpu1
85 : +c86-4g-m7-fpu2+c86-4g-m7-fpu3
86 : +c86-4g-m7-agu0+c86-4g-m7-agu1+c86-4g-m7-agu2")
87 :
88 : ;; IMOV/IMOVX
89 : (define_insn_reservation "c86_4g_m7_imov_xchg" 1
90 : (and (eq_attr "cpu" "c86_4g_m7")
91 : (and (eq_attr "type" "imov")
92 : (and (eq_attr "c86_decode" "vector")
93 : (eq_attr "memory" "none"))))
94 : "c86-4g-m7-direct")
95 :
96 : (define_insn_reservation "c86_4g_m7_imov_xchg_load" 5
97 : (and (eq_attr "cpu" "c86_4g_m7")
98 : (and (eq_attr "type" "imov")
99 : (and (eq_attr "c86_decode" "vector")
100 : (eq_attr "memory" "!none"))))
101 : "c86-4g-m7-direct,c86-4g-m7-load")
102 :
103 : (define_insn_reservation "c86_4g_m7_imovx_cwde" 2
104 : (and (eq_attr "cpu" "c86_4g_m7")
105 : (and (eq_attr "type" "imovx")
106 : (and (eq_attr "c86_decode" "double")
107 : (eq_attr "memory" "none"))))
108 : "c86-4g-m7-direct,c86-4g-m7-ieu")
109 :
110 : (define_insn_reservation "c86_4g_m7_imov" 1
111 : (and (eq_attr "cpu" "c86_4g_m7")
112 : (and (eq_attr "type" "imov,imovx")
113 : (and (eq_attr "c86_decode" "direct")
114 : (eq_attr "memory" "none"))))
115 : "c86-4g-m7-direct,c86-4g-m7-ieu")
116 :
117 : (define_insn_reservation "c86_4g_m7_imov_load" 5
118 : (and (eq_attr "cpu" "c86_4g_m7")
119 : (and (eq_attr "type" "imov,imovx")
120 : (and (eq_attr "c86_decode" "!vector")
121 : (eq_attr "memory" "load"))))
122 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu")
123 :
124 : (define_insn_reservation "c86_4g_m7_imov_store" 1
125 : (and (eq_attr "cpu" "c86_4g_m7")
126 : (and (eq_attr "type" "imov,imovx")
127 : (and (eq_attr "c86_decode" "!vector")
128 : (eq_attr "memory" "store"))))
129 : "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-ieu")
130 :
131 : ;; PUSH
132 : (define_insn_reservation "c86_4g_m7_push" 1
133 : (and (eq_attr "cpu" "c86_4g_m7")
134 : (and (eq_attr "type" "push,sse")
135 : (eq_attr "memory" "store")))
136 : "c86-4g-m7-direct,c86-4g-m7-store")
137 :
138 : (define_insn_reservation "c86_4g_m7_push_mem" 5
139 : (and (eq_attr "cpu" "c86_4g_m7")
140 : (and (eq_attr "type" "push")
141 : (eq_attr "memory" "both")))
142 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-store")
143 :
144 : ;; POP
145 : (define_insn_reservation "c86_4g_m7_pop" 4
146 : (and (eq_attr "cpu" "c86_4g_m7")
147 : (and (eq_attr "type" "pop")
148 : (eq_attr "memory" "load")))
149 : "c86-4g-m7-direct,c86-4g-m7-load")
150 :
151 : (define_insn_reservation "c86_4g_m7_pop_mem" 5
152 : (and (eq_attr "cpu" "c86_4g_m7")
153 : (and (eq_attr "type" "pop")
154 : (eq_attr "memory" "both")))
155 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-store")
156 :
157 : ;; IMUL/IMULX
158 : (define_insn_reservation "c86_4g_m7_imul" 3
159 : (and (eq_attr "cpu" "c86_4g_m7")
160 : (and (eq_attr "type" "imul,imulx")
161 : (eq_attr "memory" "none")))
162 : "c86-4g-m7-direct,c86-4g-m7-ieu1")
163 :
164 : (define_insn_reservation "c86_4g_m7_imul_load" 7
165 : (and (eq_attr "cpu" "c86_4g_m7")
166 : (and (eq_attr "type" "imul")
167 : (eq_attr "memory" "!none")))
168 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu1")
169 :
170 : ;; IDIV
171 : (define_insn_reservation "c86_4g_m7_idiv_DI" 41
172 : (and (eq_attr "cpu" "c86_4g_m7")
173 : (and (eq_attr "type" "idiv")
174 : (and (eq_attr "mode" "DI")
175 : (eq_attr "memory" "none"))))
176 : "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*41")
177 :
178 : (define_insn_reservation "c86_4g_m7_idiv_SI" 25
179 : (and (eq_attr "cpu" "c86_4g_m7")
180 : (and (eq_attr "type" "idiv")
181 : (and (eq_attr "mode" "SI")
182 : (eq_attr "memory" "none"))))
183 : "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*25")
184 :
185 : (define_insn_reservation "c86_4g_m7_idiv_HI" 17
186 : (and (eq_attr "cpu" "c86_4g_m7")
187 : (and (eq_attr "type" "idiv")
188 : (and (eq_attr "mode" "HI")
189 : (eq_attr "memory" "none"))))
190 : "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*17")
191 :
192 : (define_insn_reservation "c86_4g_m7_idiv_QI" 15
193 : (and (eq_attr "cpu" "c86_4g_m7")
194 : (and (eq_attr "type" "idiv")
195 : (and (eq_attr "mode" "QI")
196 : (eq_attr "memory" "none"))))
197 : "c86-4g-m7-direct,c86-4g-m7-ieu3,c86-4g-m7-idiv*15")
198 :
199 : (define_insn_reservation "c86_4g_m7_idiv_DI_load" 45
200 : (and (eq_attr "cpu" "c86_4g_m7")
201 : (and (eq_attr "type" "idiv")
202 : (and (eq_attr "mode" "DI")
203 : (eq_attr "memory" "load"))))
204 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*41")
205 :
206 : (define_insn_reservation "c86_4g_m7_idiv_SI_load" 29
207 : (and (eq_attr "cpu" "c86_4g_m7")
208 : (and (eq_attr "type" "idiv")
209 : (and (eq_attr "mode" "SI")
210 : (eq_attr "memory" "load"))))
211 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*25")
212 :
213 : (define_insn_reservation "c86_4g_m7_idiv_HI_load" 21
214 : (and (eq_attr "cpu" "c86_4g_m7")
215 : (and (eq_attr "type" "idiv")
216 : (and (eq_attr "mode" "HI")
217 : (eq_attr "memory" "load"))))
218 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*17")
219 :
220 : (define_insn_reservation "c86_4g_m7_idiv_QI_load" 19
221 : (and (eq_attr "cpu" "c86_4g_m7")
222 : (and (eq_attr "type" "idiv")
223 : (and (eq_attr "mode" "QI")
224 : (eq_attr "memory" "load"))))
225 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*15")
226 :
227 : ;; Integer/genaral Instructions
228 : (define_insn_reservation "c86_4g_m7_insn" 1
229 : (and (eq_attr "cpu" "c86_4g_m7")
230 : (and (eq_attr "type" "alu,negnot,rotate1,ishift1,test,incdec,icmp,
231 : rotate,rotatex,ishift,ishiftx,icmov")
232 : (eq_attr "memory" "none,unknown")))
233 : "c86-4g-m7-direct,c86-4g-m7-ieu")
234 :
235 : (define_insn_reservation "c86_4g_m7_insn_load" 5
236 : (and (eq_attr "cpu" "c86_4g_m7")
237 : (and (eq_attr "type" "alu,incdec,icmp,test,ishift,
238 : ishiftx,icmov,rotate,rotatex")
239 : (eq_attr "memory" "load")))
240 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu")
241 :
242 : (define_insn_reservation "c86_4g_m7_insn_store" 1
243 : (and (eq_attr "cpu" "c86_4g_m7")
244 : (and (eq_attr "type" "ishift1,rotate1,rotate,incdec,
245 : alu,icmov,ishift,negnot,alu1")
246 : (eq_attr "memory" "store")))
247 : "c86-4g-m7-direct,c86-4g-m7-ieu,c86-4g-m7-store")
248 :
249 : (define_insn_reservation "c86_4g_m7_insn2_store" 5
250 : (and (eq_attr "cpu" "c86_4g_m7")
251 : (and (eq_attr "type" "icmp")
252 : (eq_attr "memory" "store")))
253 : "c86-4g-m7-direct,c86-4g-m7-ieu,c86-4g-m7-store")
254 :
255 : (define_insn_reservation "c86_4g_m7_insn_both" 5
256 : (and (eq_attr "cpu" "c86_4g_m7")
257 : (and (eq_attr "type" "alu,negnot,rotate1,ishift1,incdec,rotate,
258 : rotatex,ishift,ishiftx,icmov")
259 : (eq_attr "memory" "both")))
260 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu,c86-4g-m7-store")
261 :
262 : (define_insn_reservation "c86_4g_m7_setcc" 1
263 : (and (eq_attr "cpu" "c86_4g_m7")
264 : (and (eq_attr "type" "setcc")
265 : (eq_attr "memory" "none,unknown")))
266 : "c86-4g-m7-direct,c86-4g-m7-ieu0|c86-4g-m7-ieu3")
267 :
268 : (define_insn_reservation "c86_4g_m7_setcc_load" 5
269 : (and (eq_attr "cpu" "c86_4g_m7")
270 : (and (eq_attr "type" "setcc")
271 : (eq_attr "memory" "load")))
272 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu0|c86-4g-m7-ieu3")
273 :
274 : (define_insn_reservation "c86_4g_m7_setcc_store" 1
275 : (and (eq_attr "cpu" "c86_4g_m7")
276 : (and (eq_attr "type" "setcc")
277 : (eq_attr "memory" "store")))
278 : "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-ieu0|c86-4g-m7-ieu3")
279 :
280 : ;; ALU1
281 : (define_insn_reservation "c86_4g_m7_alu1_double" 2
282 : (and (eq_attr "cpu" "c86_4g_m7")
283 : (and (eq_attr "type" "alu1")
284 : (and (eq_attr "c86_decode" "double")
285 : (eq_attr "memory" "none,unknown"))))
286 : "c86-4g-m7-double,c86-4g-m7-ieu")
287 :
288 : (define_insn_reservation "c86_4g_m7_alu1_double_load" 6
289 : (and (eq_attr "cpu" "c86_4g_m7")
290 : (and (eq_attr "type" "alu1")
291 : (and (eq_attr "c86_decode" "double")
292 : (eq_attr "memory" "both"))))
293 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-store,c86-4g-m7-ieu")
294 :
295 : (define_insn_reservation "c86_4g_m7_alu1_vector" 3
296 : (and (eq_attr "cpu" "c86_4g_m7")
297 : (and (eq_attr "type" "alu1")
298 : (and (eq_attr "c86_decode" "vector")
299 : (eq_attr "memory" "none,unknown"))))
300 : "c86-4g-m7-vector,c86-4g-m7-ivector*3")
301 :
302 : (define_insn_reservation "c86_4g_m7_alu1_vector_load" 7
303 : (and (eq_attr "cpu" "c86_4g_m7")
304 : (and (eq_attr "type" "alu1")
305 : (and (eq_attr "c86_decode" "vector")
306 : (eq_attr "memory" "both"))))
307 : "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-store,c86-4g-m7-ivector*3")
308 :
309 : (define_insn_reservation "c86_4g_m7_alu1_direct" 1
310 : (and (eq_attr "cpu" "c86_4g_m7")
311 : (and (eq_attr "type" "alu1")
312 : (and (eq_attr "c86_decode" "direct")
313 : (eq_attr "memory" "none,unknown"))))
314 : "c86-4g-m7-direct,c86-4g-m7-ieu")
315 :
316 : (define_insn_reservation "c86_4g_m7_alu1_direct_load" 5
317 : (and (eq_attr "cpu" "c86_4g_m7")
318 : (and (eq_attr "type" "alu1")
319 : (and (eq_attr "c86_decode" "direct")
320 : (eq_attr "memory" "both"))))
321 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-store,c86-4g-m7-ieu")
322 :
323 : ;; CALL/CALLV
324 : (define_insn_reservation "c86_4g_m7_call" 1
325 : (and (eq_attr "cpu" "c86_4g_m7")
326 : (eq_attr "type" "call,callv"))
327 : "c86-4g-m7-double,c86-4g-m7-ieu0|c86-4g-m7-bru0,c86-4g-m7-store")
328 :
329 : ;; IBR
330 : (define_insn_reservation "c86_4g_m7_branch" 1
331 : (and (eq_attr "cpu" "c86_4g_m7")
332 : (and (eq_attr "type" "ibr")
333 : (eq_attr "memory" "none")))
334 : "c86-4g-m7-direct,c86-4g-m7-ieu0|c86-4g-m7-bru0")
335 :
336 : (define_insn_reservation "c86_4g_m7_branch_load" 5
337 : (and (eq_attr "cpu" "c86_4g_m7")
338 : (and (eq_attr "type" "ibr")
339 : (eq_attr "memory" "load")))
340 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu0|c86-4g-m7-bru0")
341 :
342 : ;; LEA
343 : (define_insn_reservation "c86_4g_m7_lea" 1
344 : (and (eq_attr "cpu" "c86_4g_m7")
345 : (eq_attr "type" "lea"))
346 : "c86-4g-m7-direct,c86-4g-m7-ieu")
347 :
348 : ;; LEAVE
349 : (define_insn_reservation "c86_4g_m7_leave" 1
350 : (and (eq_attr "cpu" "c86_4g_m7")
351 : (eq_attr "type" "leave"))
352 : "c86-4g-m7-double,c86-4g-m7-ieu,c86-4g-m7-store")
353 :
354 : ;; STR
355 : (define_insn_reservation "c86_4g_m7_str" 3
356 : (and (eq_attr "cpu" "c86_4g_m7")
357 : (and (eq_attr "type" "str")
358 : (eq_attr "memory" "none")))
359 : "c86-4g-m7-vector,c86-4g-m7-ivector*3")
360 :
361 : (define_insn_reservation "c86_4g_m7_str_load" 7
362 : (and (eq_attr "cpu" "c86_4g_m7")
363 : (and (eq_attr "type" "str")
364 : (eq_attr "memory" "load")))
365 : "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-ivector*3")
366 :
367 :
368 : (define_insn_reservation "c86_4g_m7_ieu_vector" 5
369 : (and (eq_attr "cpu" "c86_4g_m7")
370 : (and (eq_attr "type" "other,multi")
371 : (and (eq_attr "unit" "!i387")
372 : (eq_attr "memory" "none,unknown"))))
373 : "c86-4g-m7-vector,c86-4g-m7-ivector*5")
374 :
375 : (define_insn_reservation "c86_4g_m7_ieu_vector_load" 9
376 : (and (eq_attr "cpu" "c86_4g_m7")
377 : (and (eq_attr "type" "other,multi")
378 : (and (eq_attr "unit" "!i387")
379 : (eq_attr "memory" "load"))))
380 : "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-ivector*5")
381 :
382 : ;; SSEINS
383 : (define_insn_reservation "c86_4g_m7_sse_insertimm" 3
384 : (and (eq_attr "cpu" "c86_4g_m7")
385 : (and (eq_attr "type" "sseins")
386 : (and (eq_attr "memory" "none")
387 : (eq_attr "length_immediate" "2"))))
388 : "c86-4g-m7-double,c86-4g-m7-fpu0|c86-4g-m7-fpu3,c86-4g-m7-fpu1")
389 :
390 : (define_insn_reservation "c86_4g_m7_sse_insert" 3
391 : (and (eq_attr "cpu" "c86_4g_m7")
392 : (and (eq_attr "type" "sseins")
393 : (and (eq_attr "memory" "none")
394 : (eq_attr "length_immediate" "!2"))))
395 : "c86-4g-m7-direct,c86-4g-m7-fpu1")
396 :
397 : ;; FCMOV
398 : (define_insn_reservation "c86_4g_m7_fp_cmov" 4
399 : (and (eq_attr "cpu" "c86_4g_m7")
400 : (eq_attr "type" "fcmov"))
401 : "c86-4g-m7-vector,c86-4g-m7-fvector*3")
402 :
403 : ;; FLD
404 : (define_insn_reservation "c86_4g_m7_fp_mov_direct_load" 8
405 : (and (eq_attr "cpu" "c86_4g_m7")
406 : (and (eq_attr "c86_decode" "direct")
407 : (and (eq_attr "type" "fmov")
408 : (eq_attr "memory" "load"))))
409 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1")
410 :
411 : ;; FST
412 : (define_insn_reservation "c86_4g_m7_fp_mov_direct_store" 8
413 : (and (eq_attr "cpu" "c86_4g_m7")
414 : (and (eq_attr "c86_decode" "direct")
415 : (and (eq_attr "type" "fmov")
416 : (eq_attr "memory" "store"))))
417 : "c86-4g-m7-direct,c86-4g-m7-fpu1,c86-4g-m7-store")
418 :
419 : ;; FILD
420 : (define_insn_reservation "c86_4g_m7_fp_mov_double_load" 11
421 : (and (eq_attr "cpu" "c86_4g_m7")
422 : (and (eq_attr "c86_decode" "double")
423 : (and (eq_attr "type" "fmov")
424 : (eq_attr "memory" "load"))))
425 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1")
426 :
427 : ;; FIST
428 : (define_insn_reservation "c86_4g_m7_fp_mov_double_store" 8
429 : (and (eq_attr "cpu" "c86_4g_m7")
430 : (and (eq_attr "c86_decode" "double")
431 : (and (eq_attr "type" "fmov")
432 : (eq_attr "memory" "store"))))
433 : "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-store")
434 :
435 : (define_insn_reservation "c86_4g_m7_fp_mov_direct" 1
436 : (and (eq_attr "cpu" "c86_4g_m7")
437 : (and (eq_attr "c86_decode" "direct")
438 : (and (eq_attr "type" "fmov")
439 : (eq_attr "memory" "none"))))
440 : "c86-4g-m7-direct,c86-4g-m7-fpu1")
441 :
442 : ;; FSQRT
443 : (define_insn_reservation "c86_4g_m7_fp_sqrt" 22
444 : (and (eq_attr "cpu" "c86_4g_m7")
445 : (and (eq_attr "type" "fpspc")
446 : (eq_attr "c86_attr" "sqrt")))
447 : "c86-4g-m7-direct,c86-4g-m7-fpu1,c86-4g-m7-fdiv*22")
448 :
449 : ;; FPSPC
450 : (define_insn_reservation "c86_4g_m7_fp_spc_direct" 5
451 : (and (eq_attr "cpu" "c86_4g_m7")
452 : (and (eq_attr "type" "fpspc")
453 : (and (eq_attr "c86_decode" "direct")
454 : (and (eq_attr "c86_attr" "other")
455 : (eq_attr "memory" "store")))))
456 : "c86-4g-m7-direct,c86-4g-m7-fpu3")
457 :
458 : (define_insn_reservation "c86_4g_m7_fp_spc" 6
459 : (and (eq_attr "cpu" "c86_4g_m7")
460 : (and (eq_attr "type" "fpspc")
461 : (and (eq_attr "c86_attr" "other")
462 : (eq_attr "memory" "none"))))
463 : "c86-4g-m7-vector,c86-4g-m7-fvector*6")
464 :
465 : (define_insn_reservation "c86_4g_m7_fp_op_mul" 5
466 : (and (eq_attr "cpu" "c86_4g_m7")
467 : (and (eq_attr "type" "fop,fmul")
468 : (eq_attr "memory" "none")))
469 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
470 :
471 : (define_insn_reservation "c86_4g_m7_fp_op_mul_load" 12
472 : (and (eq_attr "cpu" "c86_4g_m7")
473 : (and (eq_attr "type" "fop,fmul")
474 : (and (eq_attr "fp_int_src" "false")
475 : (eq_attr "memory" "load"))))
476 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
477 :
478 : (define_insn_reservation "c86_4g_m7_fp_op_imul_load" 16
479 : (and (eq_attr "cpu" "c86_4g_m7")
480 : (and (eq_attr "type" "fmul")
481 : (and (eq_attr "fp_int_src" "true")
482 : (eq_attr "memory" "!none"))))
483 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu0,c86-4g-m7-fpu_0_2")
484 :
485 : ;; FDIV
486 : (define_insn_reservation "c86_4g_m7_fp_div" 15
487 : (and (eq_attr "cpu" "c86_4g_m7")
488 : (and (eq_attr "type" "fdiv")
489 : (eq_attr "memory" "none")))
490 : "c86-4g-m7-direct,c86-4g-m7-fpu1,c86-4g-m7-fdiv*15")
491 :
492 : (define_insn_reservation "c86_4g_m7_fp_div_load" 22
493 : (and (eq_attr "cpu" "c86_4g_m7")
494 : (and (eq_attr "type" "fdiv")
495 : (and (eq_attr "fp_int_src" "false")
496 : (eq_attr "memory" "!none"))))
497 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fdiv*15")
498 :
499 : (define_insn_reservation "c86_4g_m7_fp_idiv_load" 26
500 : (and (eq_attr "cpu" "c86_4g_m7")
501 : (and (eq_attr "type" "fdiv")
502 : (and (eq_attr "fp_int_src" "true")
503 : (eq_attr "memory" "!none"))))
504 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fdiv*15")
505 :
506 : (define_insn_reservation "c86_4g_m7_fp_fsgn" 1
507 : (and (eq_attr "cpu" "c86_4g_m7")
508 : (eq_attr "type" "fsgn"))
509 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
510 :
511 : ;; FCMP
512 : (define_insn_reservation "c86_4g_m7_fp_fcmp" 5
513 : (and (eq_attr "cpu" "c86_4g_m7")
514 : (and (eq_attr "type" "fcmp")
515 : (eq_attr "memory" "none")))
516 : "c86-4g-m7-double,c86-4g-m7-fpu0,c86-4g-m7-fpu1")
517 :
518 : (define_insn_reservation "c86_4g_m7_fp_fcmp_load" 12
519 : (and (eq_attr "cpu" "c86_4g_m7")
520 : (and (eq_attr "type" "fcmp")
521 : (eq_attr "memory" "load")))
522 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu0,c86-4g-m7-fpu1")
523 :
524 : ;; MMX
525 : (define_insn_reservation "c86_4g_m7_fp_mmx" 1
526 : (and (eq_attr "cpu" "c86_4g_m7")
527 : (eq_attr "type" "mmx"))
528 : "c86-4g-m7-direct")
529 :
530 : (define_insn_reservation "c86_4g_m7_mmx_add_cmp" 1
531 : (and (eq_attr "cpu" "c86_4g_m7")
532 : (and (eq_attr "type" "mmxadd,mmxcmp")
533 : (eq_attr "memory" "none")))
534 : "c86-4g-m7-direct,c86-4g-m7-fpu")
535 :
536 : (define_insn_reservation "c86_4g_m7_mmx_add_cmp_load" 8
537 : (and (eq_attr "cpu" "c86_4g_m7")
538 : (and (eq_attr "type" "mmxadd,mmxcmp")
539 : (eq_attr "memory" "load")))
540 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
541 :
542 : (define_insn_reservation "c86_4g_m7_mmx_cvt" 1
543 : (and (eq_attr "cpu" "c86_4g_m7")
544 : (and (eq_attr "type" "mmxcvt")
545 : (and (eq_attr "c86_attr" "other")
546 : (eq_attr "memory" "none"))))
547 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
548 :
549 : (define_insn_reservation "c86_4g_m7_mmx_cvt_load" 8
550 : (and (eq_attr "cpu" "c86_4g_m7")
551 : (and (eq_attr "type" "mmxcvt")
552 : (and (eq_attr "c86_attr" "other")
553 : (eq_attr "memory" "load"))))
554 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
555 :
556 : (define_insn_reservation "c86_4g_m7_mmx_shift" 1
557 : (and (eq_attr "cpu" "c86_4g_m7")
558 : (and (eq_attr "type" "mmxshft")
559 : (and (eq_attr "c86_attr" "other")
560 : (eq_attr "memory" "none"))))
561 : "c86-4g-m7-direct,c86-4g-m7-fpu1")
562 :
563 : (define_insn_reservation "c86_4g_m7_mmx_shift_load" 8
564 : (and (eq_attr "cpu" "c86_4g_m7")
565 : (and (eq_attr "type" "mmxshft")
566 : (and (eq_attr "c86_attr" "other")
567 : (eq_attr "memory" "load"))))
568 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1")
569 :
570 : (define_insn_reservation "c86_4g_m7_mmx_shift_avg" 1
571 : (and (eq_attr "cpu" "c86_4g_m7")
572 : (and (eq_attr "type" "mmxshft")
573 : (and (eq_attr "c86_attr" "avg")
574 : (eq_attr "memory" "none"))))
575 : "c86-4g-m7-direct,c86-4g-m7-fpu")
576 :
577 : (define_insn_reservation "c86_4g_m7_mmx_shift_avg_load" 8
578 : (and (eq_attr "cpu" "c86_4g_m7")
579 : (and (eq_attr "type" "mmxshft")
580 : (and (eq_attr "c86_attr" "avg")
581 : (eq_attr "memory" "load"))))
582 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
583 :
584 : ;; SADBW
585 : (define_insn_reservation "c86_4g_m7_mmx_shift_sadbw" 3
586 : (and (eq_attr "cpu" "c86_4g_m7")
587 : (and (eq_attr "type" "mmxshft")
588 : (and (eq_attr "c86_attr" "sadbw")
589 : (eq_attr "memory" "none"))))
590 : "c86-4g-m7-direct,c86-4g-m7-fpu0")
591 :
592 : (define_insn_reservation "c86_4g_m7_mmx_shift_sadbw_load" 10
593 : (and (eq_attr "cpu" "c86_4g_m7")
594 : (and (eq_attr "type" "mmxshft")
595 : (and (eq_attr "c86_attr" "sadbw")
596 : (eq_attr "memory" "load"))))
597 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0")
598 :
599 : (define_insn_reservation "c86_4g_m7_mmx_mov" 4
600 : (and (eq_attr "cpu" "c86_4g_m7")
601 : (and (eq_attr "type" "mmxmov")
602 : (eq_attr "memory" "none")))
603 : "c86-4g-m7-direct,c86-4g-m7-fpu1")
604 :
605 : (define_insn_reservation "c86_4g_m7_mmx_mov_store" 4
606 : (and (eq_attr "cpu" "c86_4g_m7")
607 : (and (eq_attr "type" "mmxmov")
608 : (and (eq_attr "c86_attr" "other")
609 : (eq_attr "memory" "store"))))
610 : "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-fpu1")
611 :
612 : (define_insn_reservation "c86_4g_m7_mmx_mov_load" 11
613 : (and (eq_attr "cpu" "c86_4g_m7")
614 : (and (eq_attr "type" "mmxmov")
615 : (eq_attr "memory" "load")))
616 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1")
617 :
618 : (define_insn_reservation "c86_4g_m7_mmx_mul" 3
619 : (and (eq_attr "cpu" "c86_4g_m7")
620 : (and (eq_attr "type" "mmxmul")
621 : (eq_attr "memory" "none")))
622 : "c86-4g-m7-direct,c86-4g-m7-fpu0")
623 :
624 : (define_insn_reservation "c86_4g_m7_mmx_mul_load" 10
625 : (and (eq_attr "cpu" "c86_4g_m7")
626 : (and (eq_attr "type" "mmxmul")
627 : (eq_attr "memory" "load")))
628 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0")
629 :
630 : ;; PINSR
631 : (define_insn_reservation "c86_4g_m7_sse_pinsr_reg" 1
632 : (and (eq_attr "cpu" "c86_4g_m7")
633 : (and (eq_attr "type" "sselog,mmxcvt")
634 : (and (eq_attr "c86_attr" "insr")
635 : (and (eq_attr "prefix" "orig")
636 : (eq_attr "memory" "none")))))
637 : "c86-4g-m7-double,c86-4g-m7-ieu2,c86-4g-m7-fpu_0_1")
638 :
639 : (define_insn_reservation "c86_4g_m7_sse_pinsr_reg_load" 3
640 : (and (eq_attr "cpu" "c86_4g_m7")
641 : (and (eq_attr "type" "sselog,mmxcvt")
642 : (and (eq_attr "c86_attr" "insr")
643 : (and (eq_attr "prefix" "orig")
644 : (eq_attr "memory" "load")))))
645 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
646 :
647 : (define_insn_reservation "c86_4g_m7_avx_vpinsr_reg" 2
648 : (and (eq_attr "cpu" "c86_4g_m7")
649 : (and (eq_attr "type" "sselog")
650 : (and (eq_attr "c86_attr" "insr")
651 : (and (eq_attr "prefix" "!orig")
652 : (eq_attr "memory" "none")))))
653 : "c86-4g-m7-double,c86-4g-m7-fpu2*2")
654 :
655 : (define_insn_reservation "c86_4g_m7_avx_vpinsr_reg_load" 8
656 : (and (eq_attr "cpu" "c86_4g_m7")
657 : (and (eq_attr "type" "sselog")
658 : (and (eq_attr "c86_attr" "insr")
659 : (and (eq_attr "prefix" "!orig")
660 : (eq_attr "memory" "load")))))
661 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1|c86-4g-m7-fpu2|c86-4g-m7-fpu3")
662 :
663 : ;; PERM
664 : (define_insn_reservation "c86_4g_m7_avx512_perm_xmm" 3
665 : (and (eq_attr "cpu" "c86_4g_m7")
666 : (and (eq_attr "type" "sselog")
667 : (and (ior (and (eq_attr "c86_attr" "perm2")
668 : (eq_attr "mode" "V4SF,V2DF,TI"))
669 : (and (eq_attr "c86_attr" "perm")
670 : (eq_attr "mode" "V8SF,V4DF,TI,OI")))
671 : (and (eq_attr "prefix" "evex")
672 : (eq_attr "memory" "none")))))
673 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x2")
674 :
675 : (define_insn_reservation "c86_4g_m7_avx512_perm_xmm_opload" 10
676 : (and (eq_attr "cpu" "c86_4g_m7")
677 : (and (eq_attr "type" "sselog")
678 : (and (ior (and (eq_attr "c86_attr" "perm2")
679 : (eq_attr "mode" "V4SF,V2DF,TI"))
680 : (and (eq_attr "c86_attr" "perm")
681 : (eq_attr "mode" "V8SF,V4DF,TI,OI")))
682 : (and (eq_attr "prefix" "evex")
683 : (eq_attr "memory" "load")))))
684 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x2")
685 :
686 : (define_insn_reservation "c86_4g_m7_avx512_permi2_ymm" 4
687 : (and (eq_attr "cpu" "c86_4g_m7")
688 : (and (eq_attr "type" "sselog")
689 : (and (eq_attr "c86_attr" "perm2")
690 : (and (eq_attr "mode" "V8SF,V4DF,OI")
691 : (eq_attr "memory" "none")))))
692 : "c86-4g-m7-vector")
693 :
694 : (define_insn_reservation "c86_4g_m7_avx512_permi2_zmm" 16
695 : (and (eq_attr "cpu" "c86_4g_m7")
696 : (and (eq_attr "type" "sselog")
697 : (and (eq_attr "c86_attr" "perm2")
698 : (and (eq_attr "mode" "V16SF,V8DF,XI")
699 : (eq_attr "memory" "none")))))
700 : "c86-4g-m7-vector")
701 :
702 : (define_insn_reservation "c86_4g_m7_avx512_permi2_ymm_load" 11
703 : (and (eq_attr "cpu" "c86_4g_m7")
704 : (and (eq_attr "type" "sselog")
705 : (and (eq_attr "c86_attr" "perm2")
706 : (and (eq_attr "mode" "V8SF,V4DF,OI")
707 : (eq_attr "memory" "load")))))
708 : "c86-4g-m7-vector,c86-4g-m7-load")
709 :
710 : (define_insn_reservation "c86_4g_m7_avx512_permi2_zmm_load" 23
711 : (and (eq_attr "cpu" "c86_4g_m7")
712 : (and (eq_attr "type" "sselog")
713 : (and (eq_attr "c86_attr" "perm2")
714 : (and (eq_attr "mode" "V16SF,V8DF,XI")
715 : (eq_attr "memory" "load")))))
716 : "c86-4g-m7-vector,c86-4g-m7-load")
717 :
718 : (define_insn_reservation "c86_4g_m7_avx512_perm_zmm_imm" 4
719 : (and (eq_attr "cpu" "c86_4g_m7")
720 : (and (eq_attr "type" "sselog")
721 : (and (eq_attr "c86_attr" "perm")
722 : (and (eq_attr "mode" "V16SF,V8DF,XI")
723 : (and (match_operand 2 "immediate_operand")
724 : (eq_attr "memory" "none"))))))
725 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x4")
726 :
727 : (define_insn_reservation "c86_4g_m7_avx512_perm_zmm_imm_load" 11
728 : (and (eq_attr "cpu" "c86_4g_m7")
729 : (and (eq_attr "type" "sselog")
730 : (and (eq_attr "c86_attr" "perm")
731 : (and (eq_attr "mode" "V16SF,V8DF,XI")
732 : (and (match_operand 2 "immediate_operand")
733 : (eq_attr "memory" "load"))))))
734 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x4")
735 :
736 : (define_insn_reservation "c86_4g_m7_avx512_perm_zmm_noimm" 8
737 : (and (eq_attr "cpu" "c86_4g_m7")
738 : (and (eq_attr "type" "sselog")
739 : (and (eq_attr "c86_attr" "perm")
740 : (and (eq_attr "mode" "V16SF,V8DF,XI")
741 : (and (match_operand 2 "nonimmediate_operand")
742 : (eq_attr "memory" "none"))))))
743 : "c86-4g-m7-vector")
744 :
745 : (define_insn_reservation "c86_4g_m7_sse_perm_zmm_noimm_load" 15
746 : (and (eq_attr "cpu" "c86_4g_m7")
747 : (and (eq_attr "type" "sselog")
748 : (and (eq_attr "c86_attr" "perm")
749 : (and (eq_attr "mode" "V16SF,V8DF,XI")
750 : (and (match_operand 2 "nonimmediate_operand")
751 : (eq_attr "memory" "load"))))))
752 : "c86-4g-m7-vector,c86-4g-m7-load")
753 :
754 : (define_insn_reservation "c86_4g_m7_avx_perm_ymm" 3
755 : (and (eq_attr "cpu" "c86_4g_m7")
756 : (and (eq_attr "type" "sselog")
757 : (and (eq_attr "c86_attr" "perm")
758 : (and (eq_attr "prefix" "!evex")
759 : (eq_attr "memory" "none")))))
760 : "c86-4g-m7-vector")
761 :
762 : (define_insn_reservation "c86_4g_m7_avx_perm_ymem" 10
763 : (and (eq_attr "cpu" "c86_4g_m7")
764 : (and (eq_attr "type" "sselog")
765 : (and (eq_attr "c86_attr" "perm")
766 : (and (eq_attr "prefix" "!evex")
767 : (eq_attr "memory" "load")))))
768 : "c86-4g-m7-vector,c86-4g-m7-load")
769 :
770 : ;; VINSERT
771 : (define_insn_reservation "c86_4g_m7_avx512_insertx_ymm" 3
772 : (and (eq_attr "cpu" "c86_4g_m7")
773 : (and (eq_attr "type" "sselog,sselog1")
774 : (and (eq_attr "c86_attr" "insertx")
775 : (and (eq_attr "mode" "V8SF,V4DF,OI")
776 : (and (eq_attr "prefix" "evex")
777 : (eq_attr "memory" "none"))))))
778 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x2,c86-4g-m7-fpu_0_2x2")
779 :
780 : (define_insn_reservation "c86_4g_m7_avx512_insertx_ymem" 10
781 : (and (eq_attr "cpu" "c86_4g_m7")
782 : (and (eq_attr "type" "sselog,sselog1")
783 : (and (eq_attr "c86_attr" "insertx")
784 : (and (eq_attr "mode" "V8SF,V4DF,OI")
785 : (and (eq_attr "prefix" "evex")
786 : (eq_attr "memory" "load,both"))))))
787 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x2,c86-4g-m7-fpu_0_2x2")
788 :
789 : (define_insn_reservation "c86_4g_m7_avx512_insertx_zxmm" 5
790 : (and (eq_attr "cpu" "c86_4g_m7")
791 : (and (eq_attr "type" "sselog")
792 : (and (eq_attr "c86_attr" "insertx")
793 : (and (eq_attr "mode" "V16SF,V8DF,XI")
794 0 : (and (match_test "GET_MODE_SIZE (GET_MODE (operands[2]))==16")
795 : (match_operand 2 "register_operand"))))))
796 : "c86-4g-m7-double,c86-4g-m7-fpu_0_2x4,c86-4g-m7-fpu_0_2x4")
797 :
798 0 : (define_insn_reservation "c86_4g_m7_avx512_insertx_zxmem" 12
799 : (and (eq_attr "cpu" "c86_4g_m7")
800 : (and (eq_attr "type" "sselog")
801 : (and (eq_attr "c86_attr" "insertx")
802 : (and (eq_attr "mode" "V16SF,V8DF,XI")
803 : (and (match_test "GET_MODE_SIZE (GET_MODE (operands[2]))==16")
804 : (match_operand 2 "memory_operand"))))))
805 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_0_2x4,c86-4g-m7-fpu_0_2x4")
806 :
807 : (define_insn_reservation "c86_4g_m7_avx512_insertx_zymm" 1
808 : (and (eq_attr "cpu" "c86_4g_m7")
809 : (and (eq_attr "type" "sselog")
810 : (and (eq_attr "c86_attr" "insertx")
811 : (and (eq_attr "mode" "V16SF,V8DF,XI")
812 0 : (and (match_test "GET_MODE_SIZE (GET_MODE (operands[2]))==32")
813 : (match_operand 2 "register_operand"))))))
814 : "c86-4g-m7-double,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3")
815 :
816 0 : (define_insn_reservation "c86_4g_m7_avx512_insertx_zymem" 8
817 : (and (eq_attr "cpu" "c86_4g_m7")
818 : (and (eq_attr "type" "sselog")
819 : (and (eq_attr "c86_attr" "insertx")
820 0 : (and (eq_attr "mode" "V16SF,V8DF,XI")
821 : (and (match_test "GET_MODE_SIZE (GET_MODE (operands[2]))==32")
822 : (match_operand 2 "memory_operand"))))))
823 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
824 0 :
825 : (define_insn_reservation "c86_4g_m7_avx_insertx_ymm" 3
826 : (and (eq_attr "cpu" "c86_4g_m7")
827 : (and (eq_attr "type" "sselog,sselog1")
828 0 : (and (eq_attr "c86_attr" "insertx")
829 : (and (eq_attr "prefix" "!evex")
830 : (eq_attr "memory" "none")))))
831 : "c86-4g-m7-direct,c86-4g-m7-fpu0*2")
832 0 :
833 : (define_insn_reservation "c86_4g_m7_avx_insertx_ymem" 10
834 : (and (eq_attr "cpu" "c86_4g_m7")
835 : (and (eq_attr "type" "sselog,sselog1")
836 0 : (and (eq_attr "c86_attr" "insertx")
837 : (and (eq_attr "prefix" "!evex")
838 : (eq_attr "memory" "load")))))
839 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0*2")
840 0 :
841 : ;; SHUF/MULTISHIFTQB
842 : (define_insn_reservation "c86_4g_m7_avx512_shuf_xymm" 3
843 : (and (eq_attr "cpu" "c86_4g_m7")
844 0 : (and (eq_attr "type" "sselog")
845 : (and (eq_attr "c86_attr" "shufx")
846 : (and (not (eq_attr "mode" "V8DF,V16SF,XI"))
847 : (eq_attr "memory" "none")))))
848 0 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x2")
849 :
850 : (define_insn_reservation "c86_4g_m7_avx512_shuf_zmm" 4
851 : (and (eq_attr "cpu" "c86_4g_m7")
852 0 : (and (eq_attr "type" "sselog")
853 : (and (eq_attr "c86_attr" "shufx")
854 : (and (eq_attr "mode" "V8DF,V16SF,XI")
855 : (eq_attr "memory" "none")))))
856 0 : "c86-4g-m7-vector")
857 :
858 : (define_insn_reservation "c86_4g_m7_avx512_shuf_xymem" 10
859 : (and (eq_attr "cpu" "c86_4g_m7")
860 0 : (and (eq_attr "type" "sselog")
861 : (and (eq_attr "c86_attr" "shufx")
862 : (and (not (eq_attr "mode" "V8DF,V16SF,XI"))
863 : (eq_attr "memory" "load")))))
864 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x2")
865 :
866 : (define_insn_reservation "c86_4g_m7_avx512_shuf_zmem" 11
867 : (and (eq_attr "cpu" "c86_4g_m7")
868 0 : (and (eq_attr "type" "sselog")
869 : (and (eq_attr "c86_attr" "shufx")
870 : (and (eq_attr "mode" "V8DF,V16SF,XI")
871 : (eq_attr "memory" "load")))))
872 0 : "c86-4g-m7-vector,c86-4g-m7-load")
873 :
874 : ;; SSELOGIC
875 : (define_insn_reservation "c86_4g_m7_sselogic_xymm" 1
876 0 : (and (eq_attr "cpu" "c86_4g_m7")
877 : (and (eq_attr "type" "sselog,sselog1")
878 : (and (eq_attr "c86_attr" "sselogic")
879 : (eq_attr "memory" "none"))))
880 0 : "c86-4g-m7-direct,c86-4g-m7-fpu")
881 :
882 : (define_insn_reservation "c86_4g_m7_sselogic_xymm_load" 8
883 : (and (eq_attr "cpu" "c86_4g_m7")
884 0 : (and (eq_attr "type" "sselog,sselog1")
885 : (and (eq_attr "c86_attr" "sselogic")
886 : (eq_attr "memory" "load"))))
887 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
888 0 :
889 : ;; CMPESTR
890 : (define_insn_reservation "c86_4g_m7_avx512_cmpestr" 6
891 : (and (eq_attr "cpu" "c86_4g_m7")
892 0 : (and (eq_attr "type" "sselog")
893 : (and (eq_attr "c86_attr" "cmpestr")
894 : (eq_attr "memory" "none"))))
895 : "c86-4g-m7-vector")
896 0 :
897 : (define_insn_reservation "c86_4g_m7_avx512_cmpestr_load" 13
898 : (and (eq_attr "cpu" "c86_4g_m7")
899 : (and (eq_attr "type" "sselog")
900 0 : (and (eq_attr "c86_attr" "cmpestr")
901 : (eq_attr "memory" "load"))))
902 : "c86-4g-m7-vector,c86-4g-m7-load")
903 :
904 0 : ;; SSELOG
905 : (define_insn_reservation "c86_4g_m7_avx512_log" 1
906 : (and (eq_attr "cpu" "c86_4g_m7")
907 : (and (eq_attr "type" "sselog,sselog1,sseshuf,sseshuf1")
908 0 : (and (eq_attr "c86_attr" "other")
909 : (eq_attr "memory" "none"))))
910 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
911 :
912 0 : (define_insn_reservation "c86_4g_m7_avx512_log_load" 8
913 : (and (eq_attr "cpu" "c86_4g_m7")
914 : (and (eq_attr "type" "sselog,sselog1,sseshuf,sseshuf1")
915 : (and (eq_attr "c86_attr" "other")
916 0 : (eq_attr "memory" "load"))))
917 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
918 :
919 : ;; SSELOG1
920 0 : ;; VDBPSADBW
921 : (define_insn_reservation "c86_4g_m7_avx512_vdbpsadbw_xymm" 4
922 : (and (eq_attr "cpu" "c86_4g_m7")
923 : (and (eq_attr "type" "sselog1")
924 0 : (and (eq_attr "c86_attr" "sadbw")
925 : (and (eq_attr "mode" "OI,TI")
926 : (eq_attr "memory" "none")))))
927 : "c86-4g-m7-double,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3")
928 0 :
929 : (define_insn_reservation "c86_4g_m7_avx512_vdbpsadbw_xymem" 11
930 : (and (eq_attr "cpu" "c86_4g_m7")
931 : (and (eq_attr "type" "sselog1")
932 0 : (and (eq_attr "c86_attr" "sadbw")
933 : (and (eq_attr "mode" "OI,TI")
934 : (eq_attr "memory" "load")))))
935 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3")
936 0 :
937 : (define_insn_reservation "c86_4g_m7_avx512_vdbpsadbw_zmm" 4
938 : (and (eq_attr "cpu" "c86_4g_m7")
939 : (and (eq_attr "type" "sselog1")
940 0 : (and (eq_attr "c86_attr" "sadbw")
941 : (and (eq_attr "mode" "XI")
942 : (eq_attr "memory" "none")))))
943 : "c86-4g-m7-vector")
944 0 :
945 : (define_insn_reservation "c86_4g_m7_avx512_vdbpsadbw_zmem" 11
946 : (and (eq_attr "cpu" "c86_4g_m7")
947 : (and (eq_attr "type" "sselog1")
948 0 : (and (eq_attr "c86_attr" "sadbw")
949 : (and (eq_attr "mode" "XI")
950 : (eq_attr "memory" "load")))))
951 : "c86-4g-m7-vector,c86-4g-m7-load")
952 0 :
953 : ;; ABS
954 : (define_insn_reservation "c86_4g_m7_avx512_abs" 1
955 : (and (eq_attr "cpu" "c86_4g_m7")
956 0 : (and (eq_attr "type" "sselog1,sse")
957 : (and (eq_attr "c86_attr" "abs")
958 : (and (eq_attr "prefix" "evex")
959 : (eq_attr "memory" "none")))))
960 0 : "c86-4g-m7-direct,c86-4g-m7-fpu")
961 :
962 : (define_insn_reservation "c86_4g_m7_avx512_abs_load" 8
963 : (and (eq_attr "cpu" "c86_4g_m7")
964 0 : (and (eq_attr "type" "sselog1,sse")
965 : (and (eq_attr "c86_attr" "abs")
966 : (and (eq_attr "prefix" "evex")
967 : (eq_attr "memory" "load,both")))))
968 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
969 :
970 : ;; SIGN
971 : (define_insn_reservation "c86_4g_m7_avx_sign" 1
972 0 : (and (eq_attr "cpu" "c86_4g_m7")
973 : (and (eq_attr "type" "sselog1")
974 : (and (eq_attr "c86_attr" "sign")
975 : (eq_attr "memory" "none"))))
976 0 : "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu3")
977 :
978 : (define_insn_reservation "c86_4g_m7_avx_sign_load" 8
979 : (and (eq_attr "cpu" "c86_4g_m7")
980 0 : (and (eq_attr "type" "sselog1")
981 : (and (eq_attr "c86_attr" "sign")
982 : (eq_attr "memory" "!none"))))
983 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0|c86-4g-m7-fpu3")
984 0 :
985 : ;; BLEND/ABS/AES
986 : (define_insn_reservation "c86_4g_m7_avx_blend" 1
987 : (and (eq_attr "cpu" "c86_4g_m7")
988 0 : (and (eq_attr "type" "sselog1")
989 : (and (eq_attr "c86_attr" "abs,blend,aes")
990 : (and (eq_attr "prefix" "!evex")
991 : (eq_attr "memory" "none")))))
992 0 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
993 :
994 : (define_insn_reservation "c86_4g_m7_avx_blend_load" 8
995 : (and (eq_attr "cpu" "c86_4g_m7")
996 0 : (and (eq_attr "type" "sselog1")
997 : (and (eq_attr "c86_attr" "abs,blend,aes")
998 : (and (eq_attr "prefix" "!evex")
999 : (eq_attr "memory" "load")))))
1000 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
1001 :
1002 : (define_insn_reservation "c86_4g_m7_avx512_aes" 3
1003 : (and (eq_attr "cpu" "c86_4g_m7")
1004 0 : (and (eq_attr "type" "sselog1,ssecvt,sse")
1005 : (and (eq_attr "c86_attr" "aes")
1006 : (and (eq_attr "prefix" "evex")
1007 : (eq_attr "memory" "none")))))
1008 0 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
1009 :
1010 : (define_insn_reservation "c86_4g_m7_avx512_aes_load" 10
1011 : (and (eq_attr "cpu" "c86_4g_m7")
1012 0 : (and (eq_attr "type" "sselog1,ssecvt,sse")
1013 : (and (eq_attr "c86_attr" "aes")
1014 : (and (eq_attr "prefix" "evex")
1015 : (eq_attr "memory" "load")))))
1016 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
1017 :
1018 : (define_insn_reservation "c86_4g_m7_avx_aes" 3
1019 : (and (eq_attr "cpu" "c86_4g_m7")
1020 0 : (and (eq_attr "type" "sselog1")
1021 : (and (eq_attr "c86_attr" "aes")
1022 : (and (eq_attr "prefix" "!evex")
1023 : (eq_attr "memory" "none")))))
1024 0 : "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu1")
1025 :
1026 : (define_insn_reservation "c86_4g_m7_avx_aes_load" 10
1027 : (and (eq_attr "cpu" "c86_4g_m7")
1028 0 : (and (eq_attr "type" "sselog1")
1029 : (and (eq_attr "c86_attr" "aes")
1030 : (and (eq_attr "prefix" "!evex")
1031 : (eq_attr "memory" "load")))))
1032 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0|c86-4g-m7-fpu1")
1033 :
1034 : ;; EXTR
1035 : (define_insn_reservation "c86_4g_m7_extr" 5
1036 0 : (and (eq_attr "cpu" "c86_4g_m7")
1037 : (and (eq_attr "type" "sselog1,sselog,mmxcvt")
1038 : (and (eq_attr "c86_attr" "extr")
1039 : (eq_attr "memory" "none"))))
1040 0 : "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1")
1041 :
1042 : (define_insn_reservation "c86_4g_m7_extr_load" 12
1043 : (and (eq_attr "cpu" "c86_4g_m7")
1044 0 : (and (eq_attr "type" "sselog1,sselog,mmxcvt")
1045 : (and (eq_attr "c86_attr" "extr")
1046 : (eq_attr "memory" "!none"))))
1047 : "c86-4g-m7-double,c86-4g-m7-store,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1")
1048 0 :
1049 : ;; SSECOMI
1050 : (define_insn_reservation "c86_4g_m7_avx_ssecomi_comi" 1
1051 : (and (eq_attr "cpu" "c86_4g_m7")
1052 0 : (and (eq_attr "type" "ssecomi")
1053 : (and (eq_attr "prefix_extra" "0")
1054 : (eq_attr "memory" "none"))))
1055 : "c86-4g-m7-double,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
1056 0 :
1057 : (define_insn_reservation "c86_4g_m7_avx_ssecomi_comi_load" 8
1058 : (and (eq_attr "cpu" "c86_4g_m7")
1059 : (and (eq_attr "type" "ssecomi")
1060 0 : (and (eq_attr "prefix_extra" "0")
1061 : (eq_attr "memory" "load"))))
1062 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
1063 :
1064 0 : (define_insn_reservation "c86_4g_m7_avx_ssecomi_test" 1
1065 : (and (eq_attr "cpu" "c86_4g_m7")
1066 : (and (eq_attr "type" "ssecomi")
1067 : (and (eq_attr "prefix_extra" "1")
1068 0 : (eq_attr "memory" "none"))))
1069 : "c86-4g-m7-direct,c86-4g-m7-fpu1|c86-4g-m7-fpu2")
1070 :
1071 : (define_insn_reservation "c86_4g_m7_avx_ssecomi_test_load" 8
1072 0 : (and (eq_attr "cpu" "c86_4g_m7")
1073 : (and (eq_attr "type" "ssecomi")
1074 : (and (eq_attr "prefix_extra" "1")
1075 : (eq_attr "memory" "load"))))
1076 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1|c86-4g-m7-fpu2")
1077 :
1078 : ;; SSEIMUL
1079 : (define_insn_reservation "c86_4g_m7_avx512_imul" 3
1080 0 : (and (eq_attr "cpu" "c86_4g_m7")
1081 : (and (eq_attr "type" "sseimul")
1082 : (and (eq_attr "prefix" "evex")
1083 : (eq_attr "memory" "none"))))
1084 0 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1085 :
1086 : (define_insn_reservation "c86_4g_m7_avx512_imul_mem" 10
1087 : (and (eq_attr "cpu" "c86_4g_m7")
1088 0 : (and (eq_attr "type" "sseimul")
1089 : (and (eq_attr "prefix" "evex")
1090 : (eq_attr "memory" "load"))))
1091 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1092 0 :
1093 : (define_insn_reservation "c86_4g_m7_avx_imul" 3
1094 : (and (eq_attr "cpu" "c86_4g_m7")
1095 : (and (eq_attr "type" "sseimul")
1096 0 : (and (eq_attr "prefix" "!evex")
1097 : (eq_attr "memory" "none"))))
1098 : "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu3")
1099 :
1100 0 : (define_insn_reservation "c86_4g_m7_avx_imul_mem" 10
1101 : (and (eq_attr "cpu" "c86_4g_m7")
1102 : (and (eq_attr "type" "sseimul")
1103 : (and (eq_attr "prefix" "!evex")
1104 0 : (eq_attr "memory" "load"))))
1105 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0|c86-4g-m7-fpu3")
1106 :
1107 : ;; SSEMOV
1108 0 : (define_insn_reservation "c86_4g_m7_avx512_mov_vmov" 1
1109 : (and (eq_attr "cpu" "c86_4g_m7")
1110 : (and (eq_attr "type" "ssemov,sseiadd")
1111 : (and (eq_attr "c86_attr" "other,blend,maxmin")
1112 0 : (eq_attr "memory" "none"))))
1113 : "c86-4g-m7-direct,c86-4g-m7-fpu")
1114 :
1115 : (define_insn_reservation "c86_4g_m7_avx512_mov_vmov_store" 8
1116 0 : (and (eq_attr "cpu" "c86_4g_m7")
1117 : (and (eq_attr "type" "ssemov")
1118 : (and (eq_attr "c86_attr" "other")
1119 : (eq_attr "memory" "store"))))
1120 0 : "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-fpu1")
1121 :
1122 : (define_insn_reservation "c86_4g_m7_avx512_mov_vmov_load" 8
1123 : (and (eq_attr "cpu" "c86_4g_m7")
1124 0 : (and (eq_attr "type" "ssemov,sseiadd")
1125 : (and (eq_attr "c86_attr" "other,blend,maxmin")
1126 : (eq_attr "memory" "load"))))
1127 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
1128 0 :
1129 : (define_insn_reservation "c86_4g_m7_avx512_vpmovx_y" 3
1130 : (and (eq_attr "cpu" "c86_4g_m7")
1131 : (and (eq_attr "type" "ssemov")
1132 0 : (and (eq_attr "c86_attr" "vpmovx")
1133 : (and (eq_attr "prefix" "evex")
1134 : (and (eq_attr "mode" "OI,V8SF,V4DF")
1135 : (eq_attr "memory" "none"))))))
1136 0 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x2")
1137 :
1138 : (define_insn_reservation "c86_4g_m7_avx512_vpmovx_y_load" 10
1139 : (and (eq_attr "cpu" "c86_4g_m7")
1140 0 : (and (eq_attr "type" "ssemov,sselog1")
1141 : (and (eq_attr "c86_attr" "vpmovx")
1142 : (and (eq_attr "prefix" "evex")
1143 : (and (eq_attr "mode" "OI,V8SF,V4DF")
1144 0 : (eq_attr "memory" "load,both"))))))
1145 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x2")
1146 :
1147 : (define_insn_reservation "c86_4g_m7_avx512_vpmovx_z" 5
1148 0 : (and (eq_attr "cpu" "c86_4g_m7")
1149 : (and (eq_attr "type" "ssemov")
1150 : (and (eq_attr "c86_attr" "vpmovx")
1151 : (and (eq_attr "mode" "XI")
1152 0 : (eq_attr "memory" "none")))))
1153 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x4")
1154 :
1155 : (define_insn_reservation "c86_4g_m7_avx512_vpmovx_z_load" 12
1156 0 : (and (eq_attr "cpu" "c86_4g_m7")
1157 : (and (eq_attr "type" "ssemov")
1158 : (and (eq_attr "c86_attr" "vpmovx")
1159 : (and (eq_attr "mode" "XI")
1160 0 : (eq_attr "memory" "load")))))
1161 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x4")
1162 :
1163 : (define_insn_reservation "c86_4g_m7_avx512_vpmovx_x" 1
1164 0 : (and (eq_attr "cpu" "c86_4g_m7")
1165 : (and (eq_attr "type" "ssemov")
1166 : (and (eq_attr "c86_attr" "vpmovx")
1167 : (and (eq_attr "prefix" "evex")
1168 0 : (and (eq_attr "mode" "TI,SI")
1169 : (eq_attr "memory" "none"))))))
1170 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
1171 :
1172 0 : (define_insn_reservation "c86_4g_m7_avx512_vpmovx_x_load" 8
1173 : (and (eq_attr "cpu" "c86_4g_m7")
1174 : (and (eq_attr "type" "ssemov")
1175 : (and (eq_attr "c86_attr" "vpmovx")
1176 0 : (and (eq_attr "prefix" "evex")
1177 : (and (eq_attr "mode" "TI,SI")
1178 : (eq_attr "memory" "load"))))))
1179 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
1180 0 :
1181 : (define_insn_reservation "c86_4g_m7_avx_vpmovx_xx" 1
1182 : (and (eq_attr "cpu" "c86_4g_m7")
1183 : (and (eq_attr "type" "ssemov")
1184 0 : (and (eq_attr "c86_attr" "vpmovx")
1185 : (and (eq_attr "prefix" "!evex")
1186 : (eq_attr "memory" "none")))))
1187 : "c86-4g-m7-direct,c86-4g-m7-fpu1|c86-4g-m7-fpu2")
1188 0 :
1189 : (define_insn_reservation "c86_4g_m7_avx_vpmovx_xx_load" 8
1190 : (and (eq_attr "cpu" "c86_4g_m7")
1191 : (and (eq_attr "type" "ssemov")
1192 0 : (and (eq_attr "c86_attr" "vpmovx")
1193 : (and (eq_attr "prefix" "!evex")
1194 : (eq_attr "memory" "load,both")))))
1195 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1|c86-4g-m7-fpu2")
1196 0 :
1197 : ;; EXPAND
1198 : (define_insn_reservation "c86_4g_m7_avx512_expand" 3
1199 : (and (eq_attr "cpu" "c86_4g_m7")
1200 0 : (and (eq_attr "type" "ssemov")
1201 : (and (eq_attr "c86_attr" "expand,compress")
1202 : (and (not (eq_attr "mode" "XI,V16SF,V8DF"))
1203 : (eq_attr "memory" "none")))))
1204 0 : "c86-4g-m7-direct,c86-4g-m7-fpu3*2,c86-4g-m7-fpu1*2|c86-4g-m7-fpu3*2")
1205 :
1206 : (define_insn_reservation "c86_4g_m7_avx512_expand_load" 10
1207 : (and (eq_attr "cpu" "c86_4g_m7")
1208 0 : (and (eq_attr "type" "ssemov")
1209 : (and (eq_attr "c86_attr" "expand,compress")
1210 : (and (not (eq_attr "mode" "XI,V16SF,V8DF"))
1211 : (eq_attr "memory" "load")))))
1212 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu3*2,c86-4g-m7-fpu1*2|c86-4g-m7-fpu3*2")
1213 :
1214 : (define_insn_reservation "c86_4g_m7_avx512_expand_z" 10
1215 : (and (eq_attr "cpu" "c86_4g_m7")
1216 0 : (and (eq_attr "type" "ssemov")
1217 : (and (eq_attr "c86_attr" "expand,compress")
1218 : (and (eq_attr "mode" "XI,V16SF,V8DF")
1219 : (eq_attr "memory" "none")))))
1220 0 : "c86-4g-m7-vector")
1221 :
1222 : (define_insn_reservation "c86_4g_m7_avx512_expand_z_load" 17
1223 : (and (eq_attr "cpu" "c86_4g_m7")
1224 0 : (and (eq_attr "type" "ssemov")
1225 : (and (eq_attr "c86_attr" "expand,compress")
1226 : (and (eq_attr "mode" "XI,V16SF,V8DF")
1227 : (eq_attr "memory" "load")))))
1228 0 : "c86-4g-m7-vector,c86-4g-m7-load")
1229 :
1230 : ;; MOVNT
1231 : (define_insn_reservation "c86_4g_m7_avx512_movnt_load" 8
1232 0 : (and (eq_attr "cpu" "c86_4g_m7")
1233 : (and (eq_attr "type" "ssemov")
1234 : (and (eq_attr "c86_attr" "movnt")
1235 : (and (eq_attr "mode" "XI,V16SF,V8DF")
1236 0 : (eq_attr "memory" "load")))))
1237 : "c86-4g-m7-double,c86-4g-m7-load")
1238 :
1239 : (define_insn_reservation "c86_4g_m7_avx512_movnt_store" 8
1240 0 : (and (eq_attr "cpu" "c86_4g_m7")
1241 : (and (eq_attr "type" "ssemov")
1242 : (and (eq_attr "c86_attr" "movnt")
1243 : (and (eq_attr "mode" "XI,V16SF,V8DF")
1244 0 : (eq_attr "memory" "store")))))
1245 : "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-fpu1*2")
1246 :
1247 : (define_insn_reservation "c86_4g_m7_sse_movnt_store" 4
1248 0 : (and (eq_attr "cpu" "c86_4g_m7")
1249 : (and (eq_attr "type" "ssemov,mmxmov")
1250 : (and (eq_attr "c86_attr" "movnt")
1251 : (and (not (eq_attr "mode" "XI,V16SF,V8DF"))
1252 0 : (eq_attr "memory" "!none")))))
1253 : "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-fpu1")
1254 :
1255 : (define_insn_reservation "c86_4g_m7_sse_movnt_xy" 4
1256 0 : (and (eq_attr "cpu" "c86_4g_m7")
1257 : (and (eq_attr "type" "ssemov")
1258 : (and (eq_attr "c86_attr" "movnt")
1259 : (and (not (eq_attr "mode" "XI,V16SF,V8DF"))
1260 0 : (eq_attr "memory" "none")))))
1261 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
1262 :
1263 : ;; BLENDV
1264 0 : (define_insn_reservation "c86_4g_m7_avx512_blendv" 1
1265 : (and (eq_attr "cpu" "c86_4g_m7")
1266 : (and (eq_attr "type" "ssemov")
1267 : (and (eq_attr "c86_attr" "blendv")
1268 0 : (eq_attr "memory" "none"))))
1269 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
1270 :
1271 : (define_insn_reservation "c86_4g_m7_avx512_blendv_load" 8
1272 0 : (and (eq_attr "cpu" "c86_4g_m7")
1273 : (and (eq_attr "type" "ssemov")
1274 : (and (eq_attr "c86_attr" "blendv")
1275 : (eq_attr "memory" "load"))))
1276 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
1277 :
1278 : ;; SSEMOV2
1279 : (define_insn_reservation "c86_4g_m7_sse_mov2" 1
1280 0 : (and (eq_attr "cpu" "c86_4g_m7")
1281 : (and (eq_attr "type" "ssemov2")
1282 : (eq_attr "memory" "none")))
1283 : "c86-4g-m7-direct,c86-4g-m7-fpu")
1284 0 :
1285 : (define_insn_reservation "c86_4g_m7_sse_mov2_load" 8
1286 : (and (eq_attr "cpu" "c86_4g_m7")
1287 : (and (eq_attr "type" "ssemov2")
1288 0 : (eq_attr "memory" "!none")))
1289 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
1290 :
1291 : ;; SSEISHFT
1292 0 : (define_insn_reservation "c86_4g_m7_avx512_sseishft_aligr" 1
1293 : (and (eq_attr "cpu" "c86_4g_m7")
1294 : (and (eq_attr "type" "sseishft")
1295 : (and (eq_attr "prefix_extra" "1")
1296 0 : (and (eq_attr "prefix" "evex")
1297 : (eq_attr "memory" "none")))))
1298 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
1299 :
1300 0 : (define_insn_reservation "c86_4g_m7_avx512_sseishft_aligr_load" 8
1301 : (and (eq_attr "cpu" "c86_4g_m7")
1302 : (and (eq_attr "type" "sseishft")
1303 : (and (eq_attr "prefix_extra" "1")
1304 0 : (and (eq_attr "prefix" "evex")
1305 : (eq_attr "memory" "load")))))
1306 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
1307 :
1308 0 : (define_insn_reservation "c86_4g_m7_avx512_sseishft_vshift" 1
1309 : (and (eq_attr "cpu" "c86_4g_m7")
1310 : (and (eq_attr "type" "sseishft")
1311 : (and (eq_attr "prefix_extra" "!1")
1312 0 : (eq_attr "memory" "none"))))
1313 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1314 :
1315 : (define_insn_reservation "c86_4g_m7_avx512_sseishft_vshift_load" 8
1316 0 : (and (eq_attr "cpu" "c86_4g_m7")
1317 : (and (eq_attr "type" "sseishft")
1318 : (and (eq_attr "prefix_extra" "!1")
1319 : (eq_attr "memory" "!none"))))
1320 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1321 :
1322 :
1323 : ;; SSEADD
1324 0 : (define_insn_reservation "c86_4g_m7_avx512_sseadd_maxmin_xy" 1
1325 : (and (eq_attr "cpu" "c86_4g_m7")
1326 : (and (eq_attr "type" "sseadd,sse")
1327 : (and (eq_attr "c86_attr" "maxmin")
1328 0 : (and (eq_attr "prefix" "evex")
1329 : (and (eq_attr "memory" "none")
1330 : (eq_attr "memory" "none"))))))
1331 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1332 0 :
1333 : (define_insn_reservation "c86_4g_m7_avx512_sseadd_maxmin_xy_load" 8
1334 : (and (eq_attr "cpu" "c86_4g_m7")
1335 : (and (eq_attr "type" "sseadd,sse")
1336 0 : (and (eq_attr "c86_attr" "maxmin")
1337 : (and (eq_attr "prefix" "evex")
1338 : (ior (eq_attr "memory" "load")
1339 : (eq_attr "memory" "load"))))))
1340 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1341 :
1342 : (define_insn_reservation "c86_4g_m7_avx_sseadd_maxmin" 1
1343 : (and (eq_attr "cpu" "c86_4g_m7")
1344 0 : (and (eq_attr "type" "sseadd,sse")
1345 : (and (eq_attr "c86_attr" "maxmin")
1346 : (and (eq_attr "prefix" "vex")
1347 : (eq_attr "memory" "none")))))
1348 0 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
1349 :
1350 : (define_insn_reservation "c86_4g_m7_avx_sseadd_maxmin_load" 8
1351 : (and (eq_attr "cpu" "c86_4g_m7")
1352 0 : (and (eq_attr "type" "sseadd,sse")
1353 : (and (eq_attr "c86_attr" "maxmin")
1354 : (and (eq_attr "prefix" "vex")
1355 : (eq_attr "memory" "load")))))
1356 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
1357 :
1358 : (define_insn_reservation "c86_4g_m7_sse_sseadd_maxmin" 1
1359 : (and (eq_attr "cpu" "c86_4g_m7")
1360 0 : (and (eq_attr "type" "sseadd,sse")
1361 : (and (eq_attr "c86_attr" "maxmin")
1362 : (and (eq_attr "prefix" "orig")
1363 : (eq_attr "memory" "none")))))
1364 0 : "c86-4g-m7-direct,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
1365 :
1366 : (define_insn_reservation "c86_4g_m7_sse_sseadd_maxmin_load" 8
1367 : (and (eq_attr "cpu" "c86_4g_m7")
1368 0 : (and (eq_attr "type" "sseadd,sse")
1369 : (and (eq_attr "c86_attr" "maxmin")
1370 : (and (eq_attr "prefix" "orig")
1371 : (eq_attr "memory" "load")))))
1372 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
1373 :
1374 : ;; SUB/ADD
1375 : (define_insn_reservation "c86_4g_m7_avx512_sseadd_xy" 3
1376 0 : (and (eq_attr "cpu" "c86_4g_m7")
1377 : (and (eq_attr "type" "sseadd")
1378 : (and (eq_attr "c86_attr" "other")
1379 : (eq_attr "memory" "none"))))
1380 0 : "c86-4g-m7-direct,c86-4g-m7-fpu3")
1381 :
1382 : (define_insn_reservation "c86_4g_m7_avx512_sseadd_xy_load" 10
1383 : (and (eq_attr "cpu" "c86_4g_m7")
1384 0 : (and (eq_attr "type" "sseadd")
1385 : (and (eq_attr "c86_attr" "other")
1386 0 : (eq_attr "memory" "load"))))
1387 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu3")
1388 0 :
1389 : ;; HADD/HSUB
1390 : (define_insn_reservation "c86_4g_m7_avx_sseadd_hplus" 7
1391 : (and (eq_attr "cpu" "c86_4g_m7")
1392 0 : (and (eq_attr "type" "sseadd,sseadd1")
1393 : (and (eq_attr "c86_attr" "hplus")
1394 : (eq_attr "memory" "none"))))
1395 : "c86-4g-m7-vector")
1396 0 :
1397 : (define_insn_reservation "c86_4g_m7_avx_sseadd_hplus_load" 14
1398 : (and (eq_attr "cpu" "c86_4g_m7")
1399 : (and (eq_attr "type" "sseadd,sseadd1")
1400 0 : (and (eq_attr "c86_attr" "hplus")
1401 : (eq_attr "memory" "load"))))
1402 : "c86-4g-m7-vector,c86-4g-m7-load")
1403 :
1404 : ;; SSEIADD
1405 : (define_insn_reservation "c86_4g_m7_avx512_sseiadd_madd" 3
1406 0 : (and (eq_attr "cpu" "c86_4g_m7")
1407 : (and (eq_attr "type" "sseiadd")
1408 : (and (eq_attr "c86_attr" "sadbw,madd")
1409 : (and (ior (eq_attr "prefix" "evex")
1410 : (eq_attr "mode" "XI"))
1411 : (eq_attr "memory" "none")))))
1412 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1413 :
1414 : (define_insn_reservation "c86_4g_m7_avx512_sseiadd_madd_mem" 10
1415 : (and (eq_attr "cpu" "c86_4g_m7")
1416 : (and (eq_attr "type" "sseiadd")
1417 : (and (eq_attr "c86_attr" "sadbw,madd")
1418 : (and (ior (eq_attr "prefix" "evex")
1419 : (eq_attr "mode" "XI"))
1420 : (eq_attr "memory" "load")))))
1421 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1422 :
1423 : (define_insn_reservation "c86_4g_m7_avx_sseiadd_sadbw" 3
1424 : (and (eq_attr "cpu" "c86_4g_m7")
1425 : (and (eq_attr "type" "sseiadd")
1426 : (and (eq_attr "c86_attr" "sadbw")
1427 : (and (eq_attr "prefix" "vex,maybe_evex")
1428 : (and (eq_attr "mode" "TI,OI")
1429 : (eq_attr "memory" "none"))))))
1430 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
1431 :
1432 : (define_insn_reservation "c86_4g_m7_avx_sseiadd_sadbw_mem" 10
1433 : (and (eq_attr "cpu" "c86_4g_m7")
1434 : (and (eq_attr "type" "sseiadd")
1435 : (and (eq_attr "c86_attr" "sadbw")
1436 : (and (eq_attr "prefix" "vex,maybe_evex")
1437 : (and (eq_attr "mode" "TI,OI")
1438 : (eq_attr "memory" "load"))))))
1439 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
1440 :
1441 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_sadbw" 3
1442 : (and (eq_attr "cpu" "c86_4g_m7")
1443 : (and (eq_attr "type" "sseiadd")
1444 : (and (eq_attr "c86_attr" "sadbw")
1445 : (and (eq_attr "prefix" "orig")
1446 : (eq_attr "memory" "none")))))
1447 : "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu3")
1448 :
1449 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_sadbw_mem" 10
1450 : (and (eq_attr "cpu" "c86_4g_m7")
1451 : (and (eq_attr "type" "sseiadd")
1452 : (and (eq_attr "c86_attr" "sadbw")
1453 : (and (eq_attr "prefix" "orig")
1454 : (eq_attr "memory" "load")))))
1455 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0|c86-4g-m7-fpu3")
1456 :
1457 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_madd" 3
1458 : (and (eq_attr "cpu" "c86_4g_m7")
1459 : (and (eq_attr "type" "sseiadd")
1460 : (and (eq_attr "c86_attr" "madd")
1461 : (and (eq_attr "prefix" "!evex")
1462 : (eq_attr "memory" "none")))))
1463 : "c86-4g-m7-direct,c86-4g-m7-fpu0")
1464 :
1465 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_madd_mem" 10
1466 : (and (eq_attr "cpu" "c86_4g_m7")
1467 : (and (eq_attr "type" "sseiadd")
1468 : (and (eq_attr "c86_attr" "madd")
1469 : (and (eq_attr "prefix" "!evex")
1470 : (eq_attr "memory" "load")))))
1471 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0")
1472 :
1473 : ;; AVG
1474 : (define_insn_reservation "c86_4g_m7_avx512_sseiadd_avg" 1
1475 : (and (eq_attr "cpu" "c86_4g_m7")
1476 : (and (eq_attr "type" "sseiadd")
1477 : (and (eq_attr "c86_attr" "avg")
1478 : (eq_attr "memory" "none"))))
1479 : "c86-4g-m7-direct,c86-4g-m7-fpu")
1480 :
1481 : (define_insn_reservation "c86_4g_m7_avx512_sseiadd_avg_load" 8
1482 : (and (eq_attr "cpu" "c86_4g_m7")
1483 : (and (eq_attr "type" "sseiadd")
1484 : (and (eq_attr "c86_attr" "avg")
1485 : (eq_attr "memory" "load"))))
1486 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
1487 :
1488 : (define_insn_reservation "c86_4g_m7_avx_sseiadd_hplus" 3
1489 : (and (eq_attr "cpu" "c86_4g_m7")
1490 : (and (eq_attr "type" "sseiadd,sseiadd1")
1491 : (and (eq_attr "c86_attr" "hplus")
1492 : (and (eq_attr "prefix" "vex")
1493 : (eq_attr "memory" "none")))))
1494 : "c86-4g-m7-vector")
1495 :
1496 : (define_insn_reservation "c86_4g_m7_avx_sseiadd_hplus_load" 10
1497 : (and (eq_attr "cpu" "c86_4g_m7")
1498 : (and (eq_attr "type" "sseiadd,sseiadd1")
1499 : (and (eq_attr "c86_attr" "hplus")
1500 : (and (eq_attr "prefix" "vex")
1501 : (eq_attr "memory" "load")))))
1502 : "c86-4g-m7-vector,c86-4g-m7-load")
1503 :
1504 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_hplus" 3
1505 : (and (eq_attr "cpu" "c86_4g_m7")
1506 : (and (eq_attr "type" "sseiadd,sseiadd1")
1507 : (and (eq_attr "c86_attr" "hplus")
1508 : (and (eq_attr "prefix" "orig")
1509 : (eq_attr "memory" "none")))))
1510 : "c86-4g-m7-vector,c86-4g-m7-fpu0*2")
1511 :
1512 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_hplus_load" 10
1513 : (and (eq_attr "cpu" "c86_4g_m7")
1514 : (and (eq_attr "type" "sseiadd,sseiadd1")
1515 : (and (eq_attr "c86_attr" "hplus")
1516 : (and (eq_attr "prefix" "orig")
1517 : (eq_attr "memory" "load")))))
1518 : "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu0*2")
1519 :
1520 : ;; SSEMUL
1521 : (define_insn_reservation "c86_4g_m7_avx512_ssemul" 3
1522 : (and (eq_attr "cpu" "c86_4g_m7")
1523 : (and (eq_attr "type" "ssemul")
1524 : (eq_attr "memory" "none")))
1525 : "c86-4g-m7-direct,c86-4g-m7-fpu0")
1526 :
1527 : (define_insn_reservation "c86_4g_m7_avx512_ssemul_load" 10
1528 : (and (eq_attr "cpu" "c86_4g_m7")
1529 : (and (eq_attr "type" "ssemul")
1530 : (eq_attr "memory" "load")))
1531 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0")
1532 :
1533 : ;; SSEDIV
1534 : (define_insn_reservation "c86_4g_m7_avx512_ssediv" 13
1535 : (and (eq_attr "cpu" "c86_4g_m7")
1536 : (and (eq_attr "type" "ssediv")
1537 : (and (not (eq_attr "mode" "V16SF,V8DF"))
1538 : (eq_attr "memory" "none"))))
1539 : "c86-4g-m7-direct,c86-4g-m7-fpu3,c86-4g-m7-fdiv*13")
1540 :
1541 : (define_insn_reservation "c86_4g_m7_avx512_ssediv_mem" 20
1542 : (and (eq_attr "cpu" "c86_4g_m7")
1543 : (and (eq_attr "type" "ssediv")
1544 : (and (not (eq_attr "mode" "V16SF,V8DF"))
1545 : (eq_attr "memory" "load"))))
1546 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu3,c86-4g-m7-fdiv*13")
1547 :
1548 : (define_insn_reservation "c86_4g_m7_avx512_ssediv_z" 24
1549 : (and (eq_attr "cpu" "c86_4g_m7")
1550 : (and (eq_attr "type" "ssediv")
1551 : (and (eq_attr "mode" "V16SF,V8DF")
1552 : (eq_attr "memory" "none"))))
1553 : "c86-4g-m7-double,c86-4g-m7-fpu3,c86-4g-m7-fdiv*24")
1554 :
1555 : (define_insn_reservation "c86_4g_m7_avx512_ssediv_zmem" 31
1556 : (and (eq_attr "cpu" "c86_4g_m7")
1557 : (and (eq_attr "type" "ssediv")
1558 : (and (eq_attr "mode" "V16SF,V8DF")
1559 : (eq_attr "memory" "load"))))
1560 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu3,c86-4g-m7-fdiv*24")
1561 :
1562 : ;; SSECMP
1563 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp" 5
1564 : (and (eq_attr "cpu" "c86_4g_m7")
1565 : (and (eq_attr "type" "ssecmp")
1566 : (and (eq_attr "prefix" "evex")
1567 : (and (eq_attr "mode" "V2DF,V4DF,V8SF,V4SF,SF,DF")
1568 : (eq_attr "memory" "none")))))
1569 : "c86-4g-m7-double,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3")
1570 :
1571 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_load" 12
1572 : (and (eq_attr "cpu" "c86_4g_m7")
1573 : (and (eq_attr "type" "ssecmp")
1574 : (and (eq_attr "prefix" "evex")
1575 : (and (eq_attr "mode" "V2DF,V4DF,V8SF,V4SF,SF,DF")
1576 : (eq_attr "memory" "load")))))
1577 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3")
1578 :
1579 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_z" 5
1580 : (and (eq_attr "cpu" "c86_4g_m7")
1581 : (and (eq_attr "type" "ssecmp")
1582 : (and (eq_attr "mode" "V16SF,V8DF,XI")
1583 : (and (eq_attr "c86_attr" "other")
1584 : (eq_attr "memory" "none")))))
1585 : "c86-4g-m7-vector")
1586 :
1587 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_z_load" 12
1588 : (and (eq_attr "cpu" "c86_4g_m7")
1589 : (and (eq_attr "type" "ssecmp")
1590 : (and (eq_attr "mode" "V16SF,V8DF,XI")
1591 : (and (eq_attr "c86_attr" "other")
1592 : (eq_attr "memory" "load")))))
1593 : "c86-4g-m7-vector,c86-4g-m7-load")
1594 :
1595 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp" 5
1596 : (and (eq_attr "cpu" "c86_4g_m7")
1597 : (and (eq_attr "type" "ssecmp")
1598 : (and (eq_attr "prefix" "evex")
1599 : (and (eq_attr "mode" "TI,OI")
1600 : (and (eq_attr "c86_attr" "other")
1601 : (eq_attr "memory" "none"))))))
1602 : "c86-4g-m7-double,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3")
1603 :
1604 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp_load" 12
1605 : (and (eq_attr "cpu" "c86_4g_m7")
1606 : (and (eq_attr "type" "ssecmp")
1607 : (and (eq_attr "prefix" "evex")
1608 : (and (eq_attr "mode" "TI,OI")
1609 : (and (eq_attr "c86_attr" "other")
1610 : (eq_attr "memory" "load"))))))
1611 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3")
1612 :
1613 : (define_insn_reservation "c86_4g_m7_avx_ssecmp_vp" 1
1614 : (and (eq_attr "cpu" "c86_4g_m7")
1615 : (and (eq_attr "type" "ssecmp")
1616 : (and (eq_attr "prefix" "!evex")
1617 : (eq_attr "memory" "none"))))
1618 : "c86-4g-m7-direct,c86-4g-m7-fpu")
1619 :
1620 : (define_insn_reservation "c86_4g_m7_avx_ssecmp_vp_load" 8
1621 : (and (eq_attr "cpu" "c86_4g_m7")
1622 : (and (eq_attr "type" "ssecmp")
1623 : (and (eq_attr "prefix" "!evex")
1624 : (eq_attr "memory" "load"))))
1625 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
1626 :
1627 : ;; VPTEST
1628 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_test" 6
1629 : (and (eq_attr "cpu" "c86_4g_m7")
1630 : (and (eq_attr "type" "ssecmp")
1631 : (and (eq_attr "mode" "TI,OI")
1632 : (and (eq_attr "c86_attr" "ptest")
1633 : (eq_attr "memory" "none")))))
1634 : "c86-4g-m7-double,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3")
1635 :
1636 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_test_load" 13
1637 : (and (eq_attr "cpu" "c86_4g_m7")
1638 : (and (eq_attr "type" "ssecmp")
1639 : (and (eq_attr "mode" "TI,OI")
1640 : (and (eq_attr "c86_attr" "ptest")
1641 : (eq_attr "memory" "load")))))
1642 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fpu_1_3")
1643 :
1644 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_test_z" 4
1645 : (and (eq_attr "cpu" "c86_4g_m7")
1646 : (and (eq_attr "type" "ssecmp")
1647 : (and (eq_attr "mode" "XI")
1648 : (and (eq_attr "c86_attr" "ptest")
1649 : (eq_attr "memory" "none")))))
1650 : "c86-4g-m7-vector")
1651 :
1652 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_test_z_load" 11
1653 : (and (eq_attr "cpu" "c86_4g_m7")
1654 : (and (eq_attr "type" "ssecmp")
1655 : (and (eq_attr "mode" "XI")
1656 : (and (eq_attr "c86_attr" "ptest")
1657 : (eq_attr "memory" "load")))))
1658 : "c86-4g-m7-vector,c86-4g-m7-load")
1659 :
1660 : ;; SSECVT
1661 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_xy" 4
1662 : (and (eq_attr "cpu" "c86_4g_m7")
1663 : (and (eq_attr "type" "ssecvt")
1664 : (and (eq_attr "c86_attr" "other")
1665 : (and (eq_attr "prefix" "evex")
1666 : (and (eq_attr "mode" "TI,V4SF,V2DF,OI,V8SF,V4DF")
1667 : (and (not (ior (match_operand:V8DI 1 "register_operand")
1668 : (match_operand:V8DF 1 "register_operand")))
1669 : (eq_attr "memory" "none")))))))
1670 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
1671 :
1672 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_xy_load" 11
1673 : (and (eq_attr "cpu" "c86_4g_m7")
1674 : (and (eq_attr "type" "ssecvt")
1675 : (and (eq_attr "prefix" "evex")
1676 : (and (eq_attr "c86_attr" "other")
1677 : (and (eq_attr "mode" "TI,V4SF,V2DF,OI,V8SF,V4DF")
1678 : (and (not (ior (match_operand:V8DI 1 "register_operand")
1679 : (match_operand:V8DF 1 "register_operand")))
1680 : (eq_attr "memory" "!none")))))))
1681 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
1682 :
1683 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_y_z" 8
1684 : (and (eq_attr "cpu" "c86_4g_m7")
1685 : (and (eq_attr "type" "ssecvt")
1686 : (and (eq_attr "mode" "OI,V8SF,V4DF")
1687 : (and (eq_attr "c86_attr" "other")
1688 : (and (ior (match_operand:V8DI 1 "register_operand")
1689 : (match_operand:V8DF 1 "register_operand"))
1690 : (eq_attr "memory" "none"))))))
1691 : "c86-4g-m7-double,c86-4g-m7-fpu_1_3")
1692 :
1693 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_y_z_load" 15
1694 : (and (eq_attr "cpu" "c86_4g_m7")
1695 : (and (eq_attr "type" "ssecvt")
1696 : (and (eq_attr "mode" "OI,V8SF,V4DF")
1697 : (and (eq_attr "c86_attr" "other")
1698 : (and (ior (match_operand:V8DI 1 "memory_operand")
1699 : (match_operand:V8DF 1 "memory_operand"))
1700 : (eq_attr "memory" "!none"))))))
1701 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
1702 :
1703 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_z" 4
1704 : (and (eq_attr "cpu" "c86_4g_m7")
1705 : (and (eq_attr "type" "ssecvt")
1706 : (and (eq_attr "c86_attr" "other")
1707 : (and (eq_attr "mode" "XI,V16SF,V8DF")
1708 : (eq_attr "memory" "none")))))
1709 : "c86-4g-m7-double,c86-4g-m7-fpu_1_3")
1710 :
1711 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_z_load" 11
1712 : (and (eq_attr "cpu" "c86_4g_m7")
1713 : (and (eq_attr "type" "ssecvt")
1714 : (and (eq_attr "c86_attr" "other")
1715 : (and (eq_attr "mode" "XI,V16SF,V8DF")
1716 : (eq_attr "memory" "!none")))))
1717 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
1718 :
1719 : (define_insn_reservation "c86_4g_m7_avx_ssecvt" 4
1720 : (and (eq_attr "cpu" "c86_4g_m7")
1721 : (and (eq_attr "type" "ssecvt")
1722 : (and (eq_attr "prefix" "!evex")
1723 : (and (eq_attr "mmx_isa" "base")
1724 : (eq_attr "memory" "none")))))
1725 : "c86-4g-m7-direct,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
1726 :
1727 : (define_insn_reservation "c86_4g_m7_avx_ssecvt_load" 11
1728 : (and (eq_attr "cpu" "c86_4g_m7")
1729 : (and (eq_attr "type" "ssecvt")
1730 : (and (eq_attr "prefix" "!evex")
1731 : (and (eq_attr "mmx_isa" "base")
1732 : (eq_attr "memory" "!none")))))
1733 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
1734 :
1735 : ;; CVTPI
1736 : (define_insn_reservation "c86_4g_m7_sse_ssecvt_pspi" 4
1737 : (and (eq_attr "cpu" "c86_4g_m7")
1738 : (and (eq_attr "type" "ssecvt")
1739 : (and (eq_attr "mode" "SF,DI")
1740 : (eq_attr "memory" "none"))))
1741 : "c86-4g-m7-direct,c86-4g-m7-fpu1")
1742 :
1743 : (define_insn_reservation "c86_4g_m7_sse_ssecvt_pspi_load" 11
1744 : (and (eq_attr "cpu" "c86_4g_m7")
1745 : (and (eq_attr "type" "ssecvt")
1746 : (and (eq_attr "mode" "SF,DI")
1747 : (eq_attr "memory" "load"))))
1748 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1")
1749 :
1750 : (define_insn_reservation "c86_4g_m7_sse_ssecvt_pi" 5
1751 : (and (eq_attr "cpu" "c86_4g_m7")
1752 : (and (eq_attr "type" "ssecvt")
1753 : (and (not (eq_attr "mode" "SF,DI"))
1754 : (and (eq_attr "mmx_isa" "native")
1755 : (eq_attr "memory" "none")))))
1756 : "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1")
1757 :
1758 : (define_insn_reservation "c86_4g_m7_sse_ssecvt_pi_load" 12
1759 : (and (eq_attr "cpu" "c86_4g_m7")
1760 : (and (eq_attr "type" "ssecvt")
1761 : (and (not (eq_attr "mode" "SF,DI"))
1762 : (and (eq_attr "mmx_isa" "native")
1763 : (eq_attr "memory" "load")))))
1764 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1")
1765 :
1766 : ;; SSEMULADD
1767 : (define_insn_reservation "c86_4g_m7_avx512_muladd" 4
1768 : (and (eq_attr "cpu" "c86_4g_m7")
1769 : (and (eq_attr "type" "ssemuladd")
1770 : (and (eq_attr "c86_attr" "other")
1771 : (and (not (eq_attr "isa" "fma,fma4"))
1772 : (eq_attr "mode" "V32HF,V16SF,V8DF,XI")
1773 : (eq_attr "memory" "none")))))
1774 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1775 :
1776 : (define_insn_reservation "c86_4g_m7_avx512_muladd_load" 11
1777 : (and (eq_attr "cpu" "c86_4g_m7")
1778 : (and (eq_attr "type" "ssemuladd")
1779 : (and (eq_attr "c86_attr" "other")
1780 : (and (not (eq_attr "isa" "fma,fma4"))
1781 : (eq_attr "memory" "load")))))
1782 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1783 :
1784 : (define_insn_reservation "c86_4g_m7_avx512_muladd_madd" 4
1785 : (and (eq_attr "cpu" "c86_4g_m7")
1786 : (and (eq_attr "type" "ssemuladd,sse")
1787 : (and (eq_attr "c86_attr" "madd,rcp")
1788 : (and (eq_attr "prefix" "evex")
1789 : (eq_attr "memory" "none")))))
1790 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1791 :
1792 : (define_insn_reservation "c86_4g_m7_avx512_muladd_madd_load" 11
1793 : (and (eq_attr "cpu" "c86_4g_m7")
1794 : (and (eq_attr "type" "ssemuladd,sse")
1795 : (and (eq_attr "c86_attr" "madd,rcp")
1796 : (and (eq_attr "prefix" "evex")
1797 : (eq_attr "memory" "load")))))
1798 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1799 :
1800 : (define_insn_reservation "c86_4g_m7_fma_muladd" 4
1801 : (and (eq_attr "cpu" "c86_4g_m7")
1802 : (and (eq_attr "type" "ssemuladd")
1803 : (and (eq_attr "isa" "fma,fma4")
1804 : (eq_attr "memory" "none"))))
1805 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
1806 :
1807 : (define_insn_reservation "c86_4g_m7_fma_muladd_load" 11
1808 : (and (eq_attr "cpu" "c86_4g_m7")
1809 : (and (eq_attr "type" "ssemuladd")
1810 : (and (eq_attr "isa" "fma,fma4")
1811 : (eq_attr "memory" "load"))))
1812 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
1813 :
1814 : ;; SSE
1815 : (define_insn_reservation "c86_4g_m7_avx512_sse_range" 1
1816 : (and (eq_attr "cpu" "c86_4g_m7")
1817 : (and (eq_attr "type" "sse")
1818 : (and (eq_attr "c86_attr" "other")
1819 : (and (eq_attr "length_immediate" "!1")
1820 : (and (eq_attr "prefix" "evex")
1821 : (and (eq_attr "c86_decode" "direct")
1822 : (eq_attr "memory" "none")))))))
1823 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1824 :
1825 : (define_insn_reservation "c86_4g_m7_avx512_sse_range_load" 8
1826 : (and (eq_attr "cpu" "c86_4g_m7")
1827 : (and (eq_attr "type" "sse")
1828 : (and (eq_attr "c86_attr" "other")
1829 : (and (eq_attr "length_immediate" "!1")
1830 : (and (eq_attr "c86_decode" "direct")
1831 : (and (eq_attr "prefix" "evex")
1832 : (eq_attr "memory" "load")))))))
1833 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1834 :
1835 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_x" 2
1836 : (and (eq_attr "cpu" "c86_4g_m7")
1837 : (and (eq_attr "type" "sse")
1838 : (and (eq_attr "c86_decode" "vector")
1839 : (and (eq_attr "mode" "TI")
1840 : (eq_attr "memory" "none")))))
1841 : "c86-4g-m7-vector")
1842 :
1843 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_x_load" 9
1844 : (and (eq_attr "cpu" "c86_4g_m7")
1845 : (and (eq_attr "type" "sse")
1846 : (and (eq_attr "c86_decode" "vector")
1847 : (and (eq_attr "mode" "TI")
1848 : (eq_attr "memory" "load")))))
1849 : "c86-4g-m7-vector,c86-4g-m7-load")
1850 :
1851 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_y" 5
1852 : (and (eq_attr "cpu" "c86_4g_m7")
1853 : (and (eq_attr "type" "sse")
1854 : (and (eq_attr "c86_decode" "vector")
1855 : (and (eq_attr "mode" "OI")
1856 : (eq_attr "memory" "none")))))
1857 : "c86-4g-m7-vector")
1858 :
1859 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_y_load" 12
1860 : (and (eq_attr "cpu" "c86_4g_m7")
1861 : (and (eq_attr "type" "sse")
1862 : (and (eq_attr "c86_decode" "vector")
1863 : (and (eq_attr "mode" "OI")
1864 : (eq_attr "memory" "load")))))
1865 : "c86-4g-m7-vector,c86-4g-m7-load")
1866 :
1867 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_z" 8
1868 : (and (eq_attr "cpu" "c86_4g_m7")
1869 : (and (eq_attr "type" "sse")
1870 : (and (eq_attr "c86_decode" "vector")
1871 : (and (eq_attr "mode" "XI")
1872 : (eq_attr "memory" "none")))))
1873 : "c86-4g-m7-vector")
1874 :
1875 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_z_load" 15
1876 : (and (eq_attr "cpu" "c86_4g_m7")
1877 : (and (eq_attr "type" "sse")
1878 : (and (eq_attr "c86_decode" "vector")
1879 : (and (eq_attr "mode" "XI")
1880 : (eq_attr "memory" "load")))))
1881 : "c86-4g-m7-vector,c86-4g-m7-load")
1882 :
1883 : (define_insn_reservation "c86_4g_m7_avx512_sse_class" 4
1884 : (and (eq_attr "cpu" "c86_4g_m7")
1885 : (and (eq_attr "type" "sse")
1886 : (and (eq_attr "c86_attr" "other")
1887 : (and (eq_attr "length_immediate" "1")
1888 : (and (not (eq_attr "mode" "V32HF,V16SF,V8DF"))
1889 : (eq_attr "memory" "none"))))))
1890 : "c86-4g-m7-double,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3")
1891 :
1892 : (define_insn_reservation "c86_4g_m7_avx512_sse_class_load" 11
1893 : (and (eq_attr "cpu" "c86_4g_m7")
1894 : (and (eq_attr "type" "sse")
1895 : (and (eq_attr "c86_attr" "other")
1896 : (and (eq_attr "length_immediate" "1")
1897 : (and (not (eq_attr "mode" "V32HF,V16SF,V8DF"))
1898 : (eq_attr "memory" "load"))))))
1899 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3")
1900 :
1901 : (define_insn_reservation "c86_4g_m7_avx512_sse_class_z" 4
1902 : (and (eq_attr "cpu" "c86_4g_m7")
1903 : (and (eq_attr "type" "sse")
1904 : (and (eq_attr "c86_attr" "other")
1905 : (and (eq_attr "length_immediate" "1")
1906 : (and (eq_attr "mode" "V32HF,V16SF,V8DF")
1907 : (eq_attr "memory" "none"))))))
1908 : "c86-4g-m7-vector")
1909 :
1910 : (define_insn_reservation "c86_4g_m7_avx512_sse_class_z_load" 11
1911 : (and (eq_attr "cpu" "c86_4g_m7")
1912 : (and (eq_attr "type" "sse")
1913 : (and (eq_attr "c86_attr" "other")
1914 : (and (eq_attr "length_immediate" "1")
1915 : (and (eq_attr "mode" "V32HF,V16SF,V8DF")
1916 : (eq_attr "memory" "load"))))))
1917 : "c86-4g-m7-vector,c86-4g-m7-load")
1918 :
1919 : (define_insn_reservation "c86_4g_m7_avx_sse" 5
1920 : (and (eq_attr "cpu" "c86_4g_m7")
1921 : (and (eq_attr "type" "sse")
1922 : (and (eq_attr "c86_attr" "rcp,other")
1923 : (and (eq_attr "prefix" "!evex")
1924 : (eq_attr "memory" "none")))))
1925 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
1926 :
1927 : (define_insn_reservation "c86_4g_m7_avx_sse_load" 12
1928 : (and (eq_attr "cpu" "c86_4g_m7")
1929 : (and (eq_attr "type" "sse")
1930 : (and (eq_attr "c86_attr" "rcp,other")
1931 : (and (eq_attr "prefix" "!evex")
1932 : (eq_attr "memory" "load")))))
1933 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
1934 :
1935 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt" 16
1936 : (and (eq_attr "cpu" "c86_4g_m7")
1937 : (and (eq_attr "type" "sse")
1938 : (and (eq_attr "c86_attr" "sqrt")
1939 : (eq_attr "memory" "none"))))
1940 : "c86-4g-m7-direct,c86-4g-m7-fpu1|c86-4g-m7-fpu3,c86-4g-m7-fdiv*16")
1941 :
1942 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_load" 23
1943 : (and (eq_attr "cpu" "c86_4g_m7")
1944 : (and (eq_attr "type" "sse")
1945 : (and (eq_attr "c86_attr" "sqrt")
1946 : (eq_attr "memory" "load"))))
1947 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1|c86-4g-m7-fpu3,c86-4g-m7-fdiv*16")
1948 :
1949 : ;; MSKLOG/MSKMOV
1950 : (define_insn_reservation "c86_4g_m7_avx512_msklog" 1
1951 : (and (eq_attr "cpu" "c86_4g_m7")
1952 : (and (eq_attr "type" "msklog")
1953 : (eq_attr "c86_decode" "direct")))
1954 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
1955 :
1956 : (define_insn_reservation "c86_4g_m7_avx512_msklog_vector" 4
1957 : (and (eq_attr "cpu" "c86_4g_m7")
1958 : (and (eq_attr "type" "msklog")
1959 : (eq_attr "c86_decode" "vector")))
1960 : "c86-4g-m7-vector")
1961 :
1962 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_reg_k" 1
1963 : (and (eq_attr "cpu" "c86_4g_m7")
1964 : (and (eq_attr "type" "mskmov")
1965 : (and (match_operand 0 "register_operand" "r")
1966 : (eq_attr "memory" "none"))))
1967 : "c86-4g-m7-double,c86-4g-m7-fpu3,c86-4g-m7-fpu_1_3")
1968 :
1969 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_xy_k" 2
1970 : (and (eq_attr "cpu" "c86_4g_m7")
1971 : (and (eq_attr "type" "mskmov")
1972 : (ior (match_operand:V2DI 0 "register_operand" "v")
1973 : (match_operand:V4DI 0 "register_operand" "v"))))
1974 : "c86-4g-m7-double,c86-4g-m7-fpu3,c86-4g-m7-fpu_1_3")
1975 :
1976 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_z_k" 3
1977 : (and (eq_attr "cpu" "c86_4g_m7")
1978 : (and (eq_attr "type" "mskmov")
1979 : (match_operand:V8DI 0 "register_operand" "v")))
1980 : "c86-4g-m7-vector,c86-4g-m7-fpu3*2,c86-4g-m7-fpu1*2|c86-4g-m7-fpu3*2")
1981 :
1982 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_k_k" 1
1983 : (and (eq_attr "cpu" "c86_4g_m7")
1984 : (and (eq_attr "type" "mskmov")
1985 : (and (match_operand 0 "register_operand" "k")
1986 : (match_operand 1 "register_operand" "k"))))
1987 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
1988 :
1989 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_k_reg" 3
1990 : (and (eq_attr "cpu" "c86_4g_m7")
1991 : (and (eq_attr "type" "mskmov")
1992 : (and (match_operand 0 "register_operand" "k")
1993 : (match_operand 1 "register_operand" "r"))))
1994 : "c86-4g-m7-double,c86-4g-m7-fpu1*2,c86-4g-m7-fpu1*2|c86-4g-m7-fpu3*2")
1995 :
1996 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_k_m" 8
1997 : (and (eq_attr "cpu" "c86_4g_m7")
1998 : (and (eq_attr "type" "mskmov")
1999 : (and (match_operand 0 "register_operand" "k")
2000 : (match_operand 1 "memory_operand"))))
2001 : "c86-4g-m7-direct,c86-4g-m7-load")
|