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