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 separetely 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-direct")
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-direct,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/genaral 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-ieu0|c86-4g-m7-bru0,c86-4g-m7-store")
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-ieu0|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-ieu0|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-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-double,c86-4g-m7-ieu2,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_2x2,c86-4g-m7-fpu_0_2x2")
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-fpu_0_2x2,c86-4g-m7-fpu_0_2x2")
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 0 : (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_2x4,c86-4g-m7-fpu_0_2x4")
777 :
778 0 : (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_2x4,c86-4g-m7-fpu_0_2x4")
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 0 : (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 0 : (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 0 : (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 0 :
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 0 : (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 0 :
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 0 : (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 0 :
821 : ;; SHUF/MULTISHIFTQB
822 : (define_insn_reservation "c86_4g_m7_avx512_shuf_xymm" 3
823 : (and (eq_attr "cpu" "c86_4g_m7")
824 0 : (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 0 : "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 0 : (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 0 : "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 0 : (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 0 : "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 0 : (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 0 : "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 0 : (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 0 : "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 0 : (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 0 :
869 : ;; CMPESTR
870 : (define_insn_reservation "c86_4g_m7_avx512_cmpestr" 6
871 : (and (eq_attr "cpu" "c86_4g_m7")
872 0 : (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 0 :
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 0 : (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 0 : ;; 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 0 : (and (eq_attr "c86_attr" "other")
889 : (eq_attr "memory" "none"))))
890 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
891 :
892 0 : (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 0 : (eq_attr "memory" "load"))))
897 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
898 :
899 : ;; SSELOG1
900 0 : ;; 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 0 : (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 0 :
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 0 : (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 0 :
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 0 : (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 0 :
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 0 : (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 0 :
933 : ;; ABS
934 : (define_insn_reservation "c86_4g_m7_avx512_abs" 1
935 : (and (eq_attr "cpu" "c86_4g_m7")
936 0 : (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 0 : "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 0 : (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 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
949 :
950 : ;; SIGN
951 : (define_insn_reservation "c86_4g_m7_avx_sign" 1
952 0 : (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 0 : "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu3")
957 :
958 : (define_insn_reservation "c86_4g_m7_avx_sign_load" 8
959 : (and (eq_attr "cpu" "c86_4g_m7")
960 0 : (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-fpu0|c86-4g-m7-fpu3")
964 0 :
965 : ;; BLEND/ABS/AES
966 : (define_insn_reservation "c86_4g_m7_avx_blend" 1
967 : (and (eq_attr "cpu" "c86_4g_m7")
968 0 : (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 0 : "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 0 : (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 0 : "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 0 : (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 0 : "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 0 : (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 0 : "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 0 : (and (eq_attr "type" "sselog1")
1001 : (and (eq_attr "c86_attr" "aes")
1002 : (and (eq_attr "prefix" "!evex")
1003 : (eq_attr "memory" "none")))))
1004 0 : "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu1")
1005 :
1006 : (define_insn_reservation "c86_4g_m7_avx_aes_load" 10
1007 : (and (eq_attr "cpu" "c86_4g_m7")
1008 0 : (and (eq_attr "type" "sselog1")
1009 : (and (eq_attr "c86_attr" "aes")
1010 : (and (eq_attr "prefix" "!evex")
1011 : (eq_attr "memory" "load")))))
1012 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0|c86-4g-m7-fpu1")
1013 :
1014 : ;; EXTR
1015 : (define_insn_reservation "c86_4g_m7_extr" 5
1016 0 : (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 0 : "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1")
1021 :
1022 : (define_insn_reservation "c86_4g_m7_extr_load" 12
1023 : (and (eq_attr "cpu" "c86_4g_m7")
1024 0 : (and (eq_attr "type" "sselog1,sselog,mmxcvt")
1025 : (and (eq_attr "c86_attr" "extr")
1026 : (eq_attr "memory" "!none"))))
1027 : "c86-4g-m7-double,c86-4g-m7-store,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1")
1028 0 :
1029 : ;; SSECOMI
1030 : (define_insn_reservation "c86_4g_m7_avx_ssecomi_comi" 1
1031 : (and (eq_attr "cpu" "c86_4g_m7")
1032 0 : (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 0 :
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 0 : (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 0 : (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 0 : (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 0 : (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 0 : "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 0 : (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 0 : "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 0 : (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 0 :
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 0 : (and (eq_attr "prefix" "!evex")
1077 : (eq_attr "memory" "none"))))
1078 : "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu3")
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-fpu0|c86-4g-m7-fpu3")
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-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-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_xy" 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 : (and (eq_attr "memory" "none")
1310 : (eq_attr "memory" "none"))))))
1311 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1312 0 :
1313 : (define_insn_reservation "c86_4g_m7_avx512_sseadd_maxmin_xy_load" 8
1314 : (and (eq_attr "cpu" "c86_4g_m7")
1315 : (and (eq_attr "type" "sseadd,sse")
1316 0 : (and (eq_attr "c86_attr" "maxmin")
1317 : (and (eq_attr "prefix" "evex")
1318 : (ior (eq_attr "memory" "load")
1319 : (eq_attr "memory" "load"))))))
1320 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1321 :
1322 : (define_insn_reservation "c86_4g_m7_avx_sseadd_maxmin" 1
1323 : (and (eq_attr "cpu" "c86_4g_m7")
1324 0 : (and (eq_attr "type" "sseadd,sse")
1325 : (and (eq_attr "c86_attr" "maxmin")
1326 : (and (eq_attr "prefix" "vex")
1327 : (eq_attr "memory" "none")))))
1328 0 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
1329 :
1330 : (define_insn_reservation "c86_4g_m7_avx_sseadd_maxmin_load" 8
1331 : (and (eq_attr "cpu" "c86_4g_m7")
1332 0 : (and (eq_attr "type" "sseadd,sse")
1333 : (and (eq_attr "c86_attr" "maxmin")
1334 : (and (eq_attr "prefix" "vex")
1335 : (eq_attr "memory" "load")))))
1336 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
1337 :
1338 : (define_insn_reservation "c86_4g_m7_sse_sseadd_maxmin" 1
1339 : (and (eq_attr "cpu" "c86_4g_m7")
1340 0 : (and (eq_attr "type" "sseadd,sse")
1341 : (and (eq_attr "c86_attr" "maxmin")
1342 : (and (eq_attr "prefix" "orig")
1343 : (eq_attr "memory" "none")))))
1344 0 : "c86-4g-m7-direct,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
1345 :
1346 : (define_insn_reservation "c86_4g_m7_sse_sseadd_maxmin_load" 8
1347 : (and (eq_attr "cpu" "c86_4g_m7")
1348 0 : (and (eq_attr "type" "sseadd,sse")
1349 : (and (eq_attr "c86_attr" "maxmin")
1350 : (and (eq_attr "prefix" "orig")
1351 : (eq_attr "memory" "load")))))
1352 0 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
1353 :
1354 : ;; SUB/ADD
1355 : (define_insn_reservation "c86_4g_m7_avx512_sseadd_xy" 3
1356 0 : (and (eq_attr "cpu" "c86_4g_m7")
1357 : (and (eq_attr "type" "sseadd")
1358 : (and (eq_attr "c86_attr" "other")
1359 : (eq_attr "memory" "none"))))
1360 0 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
1361 :
1362 : (define_insn_reservation "c86_4g_m7_avx512_sseadd_xy_load" 10
1363 : (and (eq_attr "cpu" "c86_4g_m7")
1364 0 : (and (eq_attr "type" "sseadd")
1365 : (and (eq_attr "c86_attr" "other")
1366 : (eq_attr "memory" "load"))))
1367 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
1368 0 :
1369 : ;; HADD/HSUB
1370 : (define_insn_reservation "c86_4g_m7_avx_sseadd_hplus" 7
1371 : (and (eq_attr "cpu" "c86_4g_m7")
1372 0 : (and (eq_attr "type" "sseadd,sseadd1")
1373 : (and (eq_attr "c86_attr" "hplus")
1374 : (eq_attr "memory" "none"))))
1375 : "c86-4g-m7-vector")
1376 0 :
1377 : (define_insn_reservation "c86_4g_m7_avx_sseadd_hplus_load" 14
1378 : (and (eq_attr "cpu" "c86_4g_m7")
1379 : (and (eq_attr "type" "sseadd,sseadd1")
1380 0 : (and (eq_attr "c86_attr" "hplus")
1381 : (eq_attr "memory" "load"))))
1382 : "c86-4g-m7-vector,c86-4g-m7-load")
1383 :
1384 0 : ;; SSEIADD
1385 : (define_insn_reservation "c86_4g_m7_avx512_sseiadd_madd" 3
1386 : (and (eq_attr "cpu" "c86_4g_m7")
1387 : (and (eq_attr "type" "sseiadd")
1388 0 : (and (eq_attr "c86_attr" "sadbw,madd")
1389 : (and (ior (eq_attr "prefix" "evex")
1390 : (eq_attr "mode" "XI"))
1391 : (eq_attr "memory" "none")))))
1392 0 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1393 :
1394 : (define_insn_reservation "c86_4g_m7_avx512_sseiadd_madd_mem" 10
1395 : (and (eq_attr "cpu" "c86_4g_m7")
1396 0 : (and (eq_attr "type" "sseiadd")
1397 : (and (eq_attr "c86_attr" "sadbw,madd")
1398 : (and (ior (eq_attr "prefix" "evex")
1399 : (eq_attr "mode" "XI"))
1400 0 : (eq_attr "memory" "load")))))
1401 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1402 :
1403 : (define_insn_reservation "c86_4g_m7_avx_sseiadd_sadbw" 3
1404 0 : (and (eq_attr "cpu" "c86_4g_m7")
1405 : (and (eq_attr "type" "sseiadd")
1406 0 : (and (eq_attr "c86_attr" "sadbw")
1407 : (and (eq_attr "prefix" "vex,maybe_evex")
1408 0 : (and (eq_attr "mode" "TI,OI")
1409 : (eq_attr "memory" "none"))))))
1410 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
1411 :
1412 0 : (define_insn_reservation "c86_4g_m7_avx_sseiadd_sadbw_mem" 10
1413 : (and (eq_attr "cpu" "c86_4g_m7")
1414 : (and (eq_attr "type" "sseiadd")
1415 : (and (eq_attr "c86_attr" "sadbw")
1416 0 : (and (eq_attr "prefix" "vex,maybe_evex")
1417 : (and (eq_attr "mode" "TI,OI")
1418 : (eq_attr "memory" "load"))))))
1419 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
1420 0 :
1421 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_sadbw" 3
1422 : (and (eq_attr "cpu" "c86_4g_m7")
1423 : (and (eq_attr "type" "sseiadd")
1424 : (and (eq_attr "c86_attr" "sadbw")
1425 : (and (eq_attr "prefix" "orig")
1426 0 : (eq_attr "memory" "none")))))
1427 : "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu3")
1428 :
1429 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_sadbw_mem" 10
1430 : (and (eq_attr "cpu" "c86_4g_m7")
1431 : (and (eq_attr "type" "sseiadd")
1432 : (and (eq_attr "c86_attr" "sadbw")
1433 : (and (eq_attr "prefix" "orig")
1434 : (eq_attr "memory" "load")))))
1435 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0|c86-4g-m7-fpu3")
1436 :
1437 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_madd" 3
1438 : (and (eq_attr "cpu" "c86_4g_m7")
1439 : (and (eq_attr "type" "sseiadd")
1440 : (and (eq_attr "c86_attr" "madd")
1441 : (and (eq_attr "prefix" "!evex")
1442 : (eq_attr "memory" "none")))))
1443 : "c86-4g-m7-direct,c86-4g-m7-fpu0")
1444 :
1445 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_madd_mem" 10
1446 : (and (eq_attr "cpu" "c86_4g_m7")
1447 : (and (eq_attr "type" "sseiadd")
1448 : (and (eq_attr "c86_attr" "madd")
1449 : (and (eq_attr "prefix" "!evex")
1450 : (eq_attr "memory" "load")))))
1451 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0")
1452 :
1453 : ;; AVG
1454 : (define_insn_reservation "c86_4g_m7_avx512_sseiadd_avg" 1
1455 : (and (eq_attr "cpu" "c86_4g_m7")
1456 : (and (eq_attr "type" "sseiadd")
1457 : (and (eq_attr "c86_attr" "avg")
1458 : (eq_attr "memory" "none"))))
1459 : "c86-4g-m7-direct,c86-4g-m7-fpu")
1460 :
1461 : (define_insn_reservation "c86_4g_m7_avx512_sseiadd_avg_load" 8
1462 : (and (eq_attr "cpu" "c86_4g_m7")
1463 : (and (eq_attr "type" "sseiadd")
1464 : (and (eq_attr "c86_attr" "avg")
1465 : (eq_attr "memory" "load"))))
1466 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
1467 :
1468 : (define_insn_reservation "c86_4g_m7_avx_sseiadd_hplus" 3
1469 : (and (eq_attr "cpu" "c86_4g_m7")
1470 : (and (eq_attr "type" "sseiadd,sseiadd1")
1471 : (and (eq_attr "c86_attr" "hplus")
1472 : (and (eq_attr "prefix" "vex")
1473 : (eq_attr "memory" "none")))))
1474 : "c86-4g-m7-vector")
1475 :
1476 : (define_insn_reservation "c86_4g_m7_avx_sseiadd_hplus_load" 10
1477 : (and (eq_attr "cpu" "c86_4g_m7")
1478 : (and (eq_attr "type" "sseiadd,sseiadd1")
1479 : (and (eq_attr "c86_attr" "hplus")
1480 : (and (eq_attr "prefix" "vex")
1481 : (eq_attr "memory" "load")))))
1482 : "c86-4g-m7-vector,c86-4g-m7-load")
1483 :
1484 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_hplus" 3
1485 : (and (eq_attr "cpu" "c86_4g_m7")
1486 : (and (eq_attr "type" "sseiadd,sseiadd1")
1487 : (and (eq_attr "c86_attr" "hplus")
1488 : (and (eq_attr "prefix" "orig")
1489 : (eq_attr "memory" "none")))))
1490 : "c86-4g-m7-vector,c86-4g-m7-fpux2")
1491 :
1492 : (define_insn_reservation "c86_4g_m7_sse_sseiadd_hplus_load" 10
1493 : (and (eq_attr "cpu" "c86_4g_m7")
1494 : (and (eq_attr "type" "sseiadd,sseiadd1")
1495 : (and (eq_attr "c86_attr" "hplus")
1496 : (and (eq_attr "prefix" "orig")
1497 : (eq_attr "memory" "load")))))
1498 : "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux2")
1499 :
1500 : ;; SSEMUL
1501 : (define_insn_reservation "c86_4g_m7_avx512_ssemul" 3
1502 : (and (eq_attr "cpu" "c86_4g_m7")
1503 : (and (eq_attr "type" "ssemul")
1504 : (eq_attr "memory" "none")))
1505 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1506 :
1507 : (define_insn_reservation "c86_4g_m7_avx512_ssemul_load" 10
1508 : (and (eq_attr "cpu" "c86_4g_m7")
1509 : (and (eq_attr "type" "ssemul")
1510 : (eq_attr "memory" "load")))
1511 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1512 :
1513 : ;; SSEDIV
1514 : (define_insn_reservation "c86_4g_m7_avx512_ssediv_x" 13
1515 : (and (eq_attr "cpu" "c86_4g_m7")
1516 : (and (eq_attr "type" "ssediv")
1517 : (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
1518 : (eq_attr "memory" "none"))))
1519 : "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x8")
1520 :
1521 : (define_insn_reservation "c86_4g_m7_avx512_ssediv_xmem" 20
1522 : (and (eq_attr "cpu" "c86_4g_m7")
1523 : (and (eq_attr "type" "ssediv")
1524 : (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
1525 : (eq_attr "memory" "load"))))
1526 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x8")
1527 :
1528 : (define_insn_reservation "c86_4g_m7_avx512_ssediv_y" 13
1529 : (and (eq_attr "cpu" "c86_4g_m7")
1530 : (and (eq_attr "type" "ssediv")
1531 : (and (eq_attr "mode" "V8SF,V4DF")
1532 : (eq_attr "memory" "none"))))
1533 : "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*8")
1534 :
1535 : (define_insn_reservation "c86_4g_m7_avx512_ssediv_ymem" 20
1536 : (and (eq_attr "cpu" "c86_4g_m7")
1537 : (and (eq_attr "type" "ssediv")
1538 : (and (eq_attr "mode" "V8SF,V4DF")
1539 : (eq_attr "memory" "load"))))
1540 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*8")
1541 :
1542 : (define_insn_reservation "c86_4g_m7_avx512_ssediv_z" 24
1543 : (and (eq_attr "cpu" "c86_4g_m7")
1544 : (and (eq_attr "type" "ssediv")
1545 : (and (eq_attr "mode" "V16SF,V8DF")
1546 : (eq_attr "memory" "none"))))
1547 : "c86-4g-m7-double,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*20")
1548 :
1549 : (define_insn_reservation "c86_4g_m7_avx512_ssediv_zmem" 31
1550 : (and (eq_attr "cpu" "c86_4g_m7")
1551 : (and (eq_attr "type" "ssediv")
1552 : (and (eq_attr "mode" "V16SF,V8DF")
1553 : (eq_attr "memory" "load"))))
1554 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*20")
1555 :
1556 : ;; SSECMP
1557 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp" 5
1558 : (and (eq_attr "cpu" "c86_4g_m7")
1559 : (and (eq_attr "type" "ssecmp")
1560 : (and (eq_attr "prefix" "evex")
1561 : (and (eq_attr "mode" "V2DF,V4DF,V8SF,V4SF,SF,DF")
1562 : (eq_attr "memory" "none")))))
1563 : "c86-4g-m7-double,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3")
1564 :
1565 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_load" 12
1566 : (and (eq_attr "cpu" "c86_4g_m7")
1567 : (and (eq_attr "type" "ssecmp")
1568 : (and (eq_attr "prefix" "evex")
1569 : (and (eq_attr "mode" "V2DF,V4DF,V8SF,V4SF,SF,DF")
1570 : (eq_attr "memory" "load")))))
1571 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3")
1572 :
1573 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_z" 5
1574 : (and (eq_attr "cpu" "c86_4g_m7")
1575 : (and (eq_attr "type" "ssecmp")
1576 : (and (eq_attr "mode" "V16SF,V8DF,XI")
1577 : (and (eq_attr "c86_attr" "other")
1578 : (eq_attr "memory" "none")))))
1579 : "c86-4g-m7-vector,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3")
1580 :
1581 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_z_load" 12
1582 : (and (eq_attr "cpu" "c86_4g_m7")
1583 : (and (eq_attr "type" "ssecmp")
1584 : (and (eq_attr "mode" "V16SF,V8DF,XI")
1585 : (and (eq_attr "c86_attr" "other")
1586 : (eq_attr "memory" "load")))))
1587 : "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3x2")
1588 :
1589 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp" 5
1590 : (and (eq_attr "cpu" "c86_4g_m7")
1591 : (and (eq_attr "type" "ssecmp")
1592 : (and (eq_attr "prefix" "evex")
1593 : (and (eq_attr "mode" "TI,OI")
1594 : (and (eq_attr "c86_attr" "other")
1595 : (eq_attr "memory" "none"))))))
1596 : "c86-4g-m7-double,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3")
1597 :
1598 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp_load" 12
1599 : (and (eq_attr "cpu" "c86_4g_m7")
1600 : (and (eq_attr "type" "ssecmp")
1601 : (and (eq_attr "prefix" "evex")
1602 : (and (eq_attr "mode" "TI,OI")
1603 : (and (eq_attr "c86_attr" "other")
1604 : (eq_attr "memory" "load"))))))
1605 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3")
1606 :
1607 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp_z" 5
1608 : (and (eq_attr "cpu" "c86_4g_m7")
1609 : (and (eq_attr "type" "ssecmp")
1610 : (and (eq_attr "prefix" "evex")
1611 : (and (eq_attr "mode" "XI")
1612 : (and (eq_attr "c86_attr" "other,ptest")
1613 : (eq_attr "memory" "none"))))))
1614 : "c86-4g-m7-double,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3")
1615 :
1616 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp_z_load" 12
1617 : (and (eq_attr "cpu" "c86_4g_m7")
1618 : (and (eq_attr "type" "ssecmp")
1619 : (and (eq_attr "prefix" "evex")
1620 : (and (eq_attr "mode" "XI")
1621 : (and (eq_attr "c86_attr" "other,ptest")
1622 : (eq_attr "memory" "load"))))))
1623 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3x2")
1624 :
1625 : (define_insn_reservation "c86_4g_m7_avx_ssecmp_vp" 1
1626 : (and (eq_attr "cpu" "c86_4g_m7")
1627 : (and (eq_attr "type" "ssecmp")
1628 : (and (eq_attr "prefix" "!evex")
1629 : (eq_attr "memory" "none"))))
1630 : "c86-4g-m7-direct,c86-4g-m7-fpu")
1631 :
1632 : (define_insn_reservation "c86_4g_m7_avx_ssecmp_vp_load" 8
1633 : (and (eq_attr "cpu" "c86_4g_m7")
1634 : (and (eq_attr "type" "ssecmp")
1635 : (and (eq_attr "prefix" "!evex")
1636 : (eq_attr "memory" "load"))))
1637 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
1638 :
1639 : ;; VPTEST
1640 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_test" 6
1641 : (and (eq_attr "cpu" "c86_4g_m7")
1642 : (and (eq_attr "type" "ssecmp")
1643 : (and (eq_attr "mode" "TI,OI")
1644 : (and (eq_attr "c86_attr" "ptest")
1645 : (eq_attr "memory" "none")))))
1646 : "c86-4g-m7-double,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3")
1647 :
1648 : (define_insn_reservation "c86_4g_m7_avx512_ssecmp_test_load" 13
1649 : (and (eq_attr "cpu" "c86_4g_m7")
1650 : (and (eq_attr "type" "ssecmp")
1651 : (and (eq_attr "mode" "TI,OI")
1652 : (and (eq_attr "c86_attr" "ptest")
1653 : (eq_attr "memory" "load")))))
1654 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fpu_1_3")
1655 :
1656 : ;; SSECVT
1657 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_xy" 4
1658 : (and (eq_attr "cpu" "c86_4g_m7")
1659 : (and (eq_attr "type" "ssecvt")
1660 : (and (eq_attr "c86_attr" "other")
1661 : (and (eq_attr "prefix" "evex")
1662 : (and (eq_attr "mode" "TI,V4SF,V2DF,OI,V8SF,V4DF")
1663 : (and (not (ior (match_operand:V8DI 1 "register_operand")
1664 : (match_operand:V8DF 1 "register_operand")))
1665 : (eq_attr "memory" "none")))))))
1666 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
1667 :
1668 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_xy_load" 11
1669 : (and (eq_attr "cpu" "c86_4g_m7")
1670 : (and (eq_attr "type" "ssecvt")
1671 : (and (eq_attr "prefix" "evex")
1672 : (and (eq_attr "c86_attr" "other")
1673 : (and (eq_attr "mode" "TI,V4SF,V2DF,OI,V8SF,V4DF")
1674 : (and (not (ior (match_operand:V8DI 1 "register_operand")
1675 : (match_operand:V8DF 1 "register_operand")))
1676 : (eq_attr "memory" "!none")))))))
1677 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
1678 :
1679 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_y_z" 8
1680 : (and (eq_attr "cpu" "c86_4g_m7")
1681 : (and (eq_attr "type" "ssecvt")
1682 : (and (eq_attr "mode" "OI,V8SF,V4DF")
1683 : (and (eq_attr "c86_attr" "other")
1684 : (and (ior (match_operand:V8DI 1 "register_operand")
1685 : (match_operand:V8DF 1 "register_operand"))
1686 : (eq_attr "memory" "none"))))))
1687 : "c86-4g-m7-double,c86-4g-m7-fpu_1_3")
1688 :
1689 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_y_z_load" 15
1690 : (and (eq_attr "cpu" "c86_4g_m7")
1691 : (and (eq_attr "type" "ssecvt")
1692 : (and (eq_attr "mode" "OI,V8SF,V4DF")
1693 : (and (eq_attr "c86_attr" "other")
1694 : (and (ior (match_operand:V8DI 1 "memory_operand")
1695 : (match_operand:V8DF 1 "memory_operand"))
1696 : (eq_attr "memory" "!none"))))))
1697 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
1698 :
1699 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_z" 4
1700 : (and (eq_attr "cpu" "c86_4g_m7")
1701 : (and (eq_attr "type" "ssecvt")
1702 : (and (eq_attr "c86_attr" "other")
1703 : (and (eq_attr "mode" "XI,V16SF,V8DF")
1704 : (eq_attr "memory" "none")))))
1705 : "c86-4g-m7-double,c86-4g-m7-fpu_1_3")
1706 :
1707 : (define_insn_reservation "c86_4g_m7_avx512_ssecvt_z_load" 11
1708 : (and (eq_attr "cpu" "c86_4g_m7")
1709 : (and (eq_attr "type" "ssecvt")
1710 : (and (eq_attr "c86_attr" "other")
1711 : (and (eq_attr "mode" "XI,V16SF,V8DF")
1712 : (eq_attr "memory" "!none")))))
1713 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
1714 :
1715 : (define_insn_reservation "c86_4g_m7_avx_ssecvt" 4
1716 : (and (eq_attr "cpu" "c86_4g_m7")
1717 : (and (eq_attr "type" "ssecvt")
1718 : (and (eq_attr "prefix" "!evex")
1719 : (and (eq_attr "mmx_isa" "base")
1720 : (eq_attr "memory" "none")))))
1721 : "c86-4g-m7-direct,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
1722 :
1723 : (define_insn_reservation "c86_4g_m7_avx_ssecvt_load" 11
1724 : (and (eq_attr "cpu" "c86_4g_m7")
1725 : (and (eq_attr "type" "ssecvt")
1726 : (and (eq_attr "prefix" "!evex")
1727 : (and (eq_attr "mmx_isa" "base")
1728 : (eq_attr "memory" "!none")))))
1729 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
1730 :
1731 : ;; CVTPI
1732 : (define_insn_reservation "c86_4g_m7_sse_ssecvt_pspi" 4
1733 : (and (eq_attr "cpu" "c86_4g_m7")
1734 : (and (eq_attr "type" "ssecvt")
1735 : (and (eq_attr "mode" "SF,DI")
1736 : (eq_attr "memory" "none"))))
1737 : "c86-4g-m7-direct,c86-4g-m7-fpu1")
1738 :
1739 : (define_insn_reservation "c86_4g_m7_sse_ssecvt_pspi_load" 11
1740 : (and (eq_attr "cpu" "c86_4g_m7")
1741 : (and (eq_attr "type" "ssecvt")
1742 : (and (eq_attr "mode" "SF,DI")
1743 : (eq_attr "memory" "load"))))
1744 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1")
1745 :
1746 : (define_insn_reservation "c86_4g_m7_sse_ssecvt_pi" 5
1747 : (and (eq_attr "cpu" "c86_4g_m7")
1748 : (and (eq_attr "type" "ssecvt")
1749 : (and (not (eq_attr "mode" "SF,DI"))
1750 : (and (eq_attr "mmx_isa" "native")
1751 : (eq_attr "memory" "none")))))
1752 : "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1")
1753 :
1754 : (define_insn_reservation "c86_4g_m7_sse_ssecvt_pi_load" 12
1755 : (and (eq_attr "cpu" "c86_4g_m7")
1756 : (and (eq_attr "type" "ssecvt")
1757 : (and (not (eq_attr "mode" "SF,DI"))
1758 : (and (eq_attr "mmx_isa" "native")
1759 : (eq_attr "memory" "load")))))
1760 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1")
1761 :
1762 : ;; SSEMULADD
1763 : (define_insn_reservation "c86_4g_m7_avx512_muladd" 4
1764 : (and (eq_attr "cpu" "c86_4g_m7")
1765 : (and (eq_attr "type" "ssemuladd")
1766 : (and (eq_attr "c86_attr" "other")
1767 : (eq_attr "memory" "none"))))
1768 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1769 :
1770 : (define_insn_reservation "c86_4g_m7_avx512_muladd_load" 11
1771 : (and (eq_attr "cpu" "c86_4g_m7")
1772 : (and (eq_attr "type" "ssemuladd")
1773 : (and (eq_attr "c86_attr" "other")
1774 : (eq_attr "memory" "load"))))
1775 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1776 :
1777 : (define_insn_reservation "c86_4g_m7_avx512_muladd_madd" 4
1778 : (and (eq_attr "cpu" "c86_4g_m7")
1779 : (and (eq_attr "type" "ssemuladd,sse")
1780 : (and (eq_attr "c86_attr" "madd,rcp")
1781 : (and (eq_attr "prefix" "evex")
1782 : (eq_attr "memory" "none")))))
1783 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1784 :
1785 : (define_insn_reservation "c86_4g_m7_avx512_muladd_madd_load" 11
1786 : (and (eq_attr "cpu" "c86_4g_m7")
1787 : (and (eq_attr "type" "ssemuladd,sse")
1788 : (and (eq_attr "c86_attr" "madd,rcp")
1789 : (and (eq_attr "prefix" "evex")
1790 : (eq_attr "memory" "load")))))
1791 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1792 :
1793 : ;; SSE
1794 : (define_insn_reservation "c86_4g_m7_avx512_sse_range" 1
1795 : (and (eq_attr "cpu" "c86_4g_m7")
1796 : (and (eq_attr "type" "sse")
1797 : (and (eq_attr "c86_attr" "other")
1798 : (and (eq_attr "length_immediate" "!1")
1799 : (and (eq_attr "prefix" "evex")
1800 : (and (eq_attr "c86_decode" "direct")
1801 : (eq_attr "memory" "none")))))))
1802 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
1803 :
1804 : (define_insn_reservation "c86_4g_m7_avx512_sse_range_load" 8
1805 : (and (eq_attr "cpu" "c86_4g_m7")
1806 : (and (eq_attr "type" "sse")
1807 : (and (eq_attr "c86_attr" "other")
1808 : (and (eq_attr "length_immediate" "!1")
1809 : (and (eq_attr "c86_decode" "direct")
1810 : (and (eq_attr "prefix" "evex")
1811 : (eq_attr "memory" "load")))))))
1812 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
1813 :
1814 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_x" 2
1815 : (and (eq_attr "cpu" "c86_4g_m7")
1816 : (and (eq_attr "type" "sse")
1817 : (and (eq_attr "c86_decode" "vector")
1818 : (and (eq_attr "mode" "TI")
1819 : (eq_attr "memory" "none")))))
1820 : "c86-4g-m7-vector,c86-4g-m7-fpu_1_3x2")
1821 :
1822 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_x_load" 9
1823 : (and (eq_attr "cpu" "c86_4g_m7")
1824 : (and (eq_attr "type" "sse")
1825 : (and (eq_attr "c86_decode" "vector")
1826 : (and (eq_attr "mode" "TI")
1827 : (eq_attr "memory" "load")))))
1828 : "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3x2")
1829 :
1830 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_y" 5
1831 : (and (eq_attr "cpu" "c86_4g_m7")
1832 : (and (eq_attr "type" "sse")
1833 : (and (eq_attr "c86_decode" "vector")
1834 : (and (eq_attr "mode" "OI")
1835 : (eq_attr "memory" "none")))))
1836 : "c86-4g-m7-vector,c86-4g-m7-fpu_1_3x3")
1837 :
1838 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_y_load" 12
1839 : (and (eq_attr "cpu" "c86_4g_m7")
1840 : (and (eq_attr "type" "sse")
1841 : (and (eq_attr "c86_decode" "vector")
1842 : (and (eq_attr "mode" "OI")
1843 : (eq_attr "memory" "load")))))
1844 : "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3x3")
1845 :
1846 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_z" 8
1847 : (and (eq_attr "cpu" "c86_4g_m7")
1848 : (and (eq_attr "type" "sse")
1849 : (and (eq_attr "c86_decode" "vector")
1850 : (and (eq_attr "mode" "XI")
1851 : (eq_attr "memory" "none")))))
1852 : "c86-4g-m7-vector,c86-4g-m7-fpu_1_3x6")
1853 :
1854 : (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_z_load" 15
1855 : (and (eq_attr "cpu" "c86_4g_m7")
1856 : (and (eq_attr "type" "sse")
1857 : (and (eq_attr "c86_decode" "vector")
1858 : (and (eq_attr "mode" "XI")
1859 : (eq_attr "memory" "load")))))
1860 : "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3x6")
1861 :
1862 : (define_insn_reservation "c86_4g_m7_avx512_sse_class" 4
1863 : (and (eq_attr "cpu" "c86_4g_m7")
1864 : (and (eq_attr "type" "sse")
1865 : (and (eq_attr "c86_attr" "other")
1866 : (and (eq_attr "length_immediate" "1")
1867 : (and (not (eq_attr "mode" "V32HF,V16SF,V8DF"))
1868 : (eq_attr "memory" "none"))))))
1869 : "c86-4g-m7-double,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3")
1870 :
1871 : (define_insn_reservation "c86_4g_m7_avx512_sse_class_load" 11
1872 : (and (eq_attr "cpu" "c86_4g_m7")
1873 : (and (eq_attr "type" "sse")
1874 : (and (eq_attr "c86_attr" "other")
1875 : (and (eq_attr "length_immediate" "1")
1876 : (and (not (eq_attr "mode" "V32HF,V16SF,V8DF"))
1877 : (eq_attr "memory" "load"))))))
1878 : "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3")
1879 :
1880 : (define_insn_reservation "c86_4g_m7_avx512_sse_class_z" 4
1881 : (and (eq_attr "cpu" "c86_4g_m7")
1882 : (and (eq_attr "type" "sse")
1883 : (and (eq_attr "c86_attr" "other")
1884 : (and (eq_attr "length_immediate" "1")
1885 : (and (eq_attr "mode" "V32HF,V16SF,V8DF")
1886 : (eq_attr "memory" "none"))))))
1887 : "c86-4g-m7-vector,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3")
1888 :
1889 : (define_insn_reservation "c86_4g_m7_avx512_sse_class_z_load" 11
1890 : (and (eq_attr "cpu" "c86_4g_m7")
1891 : (and (eq_attr "type" "sse")
1892 : (and (eq_attr "c86_attr" "other")
1893 : (and (eq_attr "length_immediate" "1")
1894 : (and (eq_attr "mode" "V32HF,V16SF,V8DF")
1895 : (eq_attr "memory" "load"))))))
1896 : "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3")
1897 :
1898 : (define_insn_reservation "c86_4g_m7_avx_sse" 5
1899 : (and (eq_attr "cpu" "c86_4g_m7")
1900 : (and (eq_attr "type" "sse")
1901 : (and (eq_attr "c86_attr" "rcp,other")
1902 : (and (eq_attr "prefix" "!evex")
1903 : (eq_attr "memory" "none")))))
1904 : "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
1905 :
1906 : (define_insn_reservation "c86_4g_m7_avx_sse_load" 12
1907 : (and (eq_attr "cpu" "c86_4g_m7")
1908 : (and (eq_attr "type" "sse")
1909 : (and (eq_attr "c86_attr" "rcp,other")
1910 : (and (eq_attr "prefix" "!evex")
1911 : (eq_attr "memory" "load")))))
1912 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
1913 :
1914 : ;; SSE SQRT
1915 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_x" 14
1916 : (and (eq_attr "cpu" "c86_4g_m7")
1917 : (and (eq_attr "type" "sse")
1918 : (and (eq_attr "mode" "SF,V4SF")
1919 : (and (eq_attr "c86_attr" "sqrt")
1920 : (eq_attr "memory" "none")))))
1921 : "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x9")
1922 :
1923 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_xload" 21
1924 : (and (eq_attr "cpu" "c86_4g_m7")
1925 : (and (eq_attr "type" "sse")
1926 : (and (eq_attr "mode" "SF,V4SF")
1927 : (and (eq_attr "c86_attr" "sqrt")
1928 : (eq_attr "memory" "load")))))
1929 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x9")
1930 :
1931 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_y" 14
1932 : (and (eq_attr "cpu" "c86_4g_m7")
1933 : (and (eq_attr "type" "sse")
1934 : (and (eq_attr "mode" "V8SF")
1935 : (and (eq_attr "c86_attr" "sqrt")
1936 : (eq_attr "memory" "none")))))
1937 : "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*9")
1938 :
1939 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_yload" 21
1940 : (and (eq_attr "cpu" "c86_4g_m7")
1941 : (and (eq_attr "type" "sse")
1942 : (and (eq_attr "mode" "V8SF")
1943 : (and (eq_attr "c86_attr" "sqrt")
1944 : (eq_attr "memory" "load")))))
1945 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*9")
1946 :
1947 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_z" 26
1948 : (and (eq_attr "cpu" "c86_4g_m7")
1949 : (and (eq_attr "type" "sse")
1950 : (and (eq_attr "mode" "V16SF")
1951 : (and (eq_attr "c86_attr" "sqrt")
1952 : (eq_attr "memory" "none")))))
1953 : "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*22")
1954 :
1955 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_zload" 33
1956 : (and (eq_attr "cpu" "c86_4g_m7")
1957 : (and (eq_attr "type" "sse")
1958 : (and (eq_attr "mode" "V16SF")
1959 : (and (eq_attr "c86_attr" "sqrt")
1960 : (eq_attr "memory" "load")))))
1961 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*22")
1962 :
1963 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_x" 20
1964 : (and (eq_attr "cpu" "c86_4g_m7")
1965 : (and (eq_attr "type" "sse")
1966 : (and (eq_attr "mode" "DF,V2DF")
1967 : (and (eq_attr "c86_attr" "sqrt")
1968 : (eq_attr "memory" "none")))))
1969 : "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x15")
1970 :
1971 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_xload" 27
1972 : (and (eq_attr "cpu" "c86_4g_m7")
1973 : (and (eq_attr "type" "sse")
1974 : (and (eq_attr "mode" "DF,V2DF")
1975 : (and (eq_attr "c86_attr" "sqrt")
1976 : (eq_attr "memory" "load")))))
1977 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x15")
1978 :
1979 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_y" 20
1980 : (and (eq_attr "cpu" "c86_4g_m7")
1981 : (and (eq_attr "type" "sse")
1982 : (and (eq_attr "mode" "V4DF")
1983 : (and (eq_attr "c86_attr" "sqrt")
1984 : (eq_attr "memory" "none")))))
1985 : "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*15")
1986 :
1987 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_yload" 27
1988 : (and (eq_attr "cpu" "c86_4g_m7")
1989 : (and (eq_attr "type" "sse")
1990 : (and (eq_attr "mode" "V4DF")
1991 : (and (eq_attr "c86_attr" "sqrt")
1992 : (eq_attr "memory" "load")))))
1993 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*15")
1994 :
1995 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_z" 38
1996 : (and (eq_attr "cpu" "c86_4g_m7")
1997 : (and (eq_attr "type" "sse")
1998 : (and (eq_attr "mode" "V8DF")
1999 : (and (eq_attr "c86_attr" "sqrt")
2000 : (eq_attr "memory" "none")))))
2001 : "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*34")
2002 :
2003 : (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_zload" 45
2004 : (and (eq_attr "cpu" "c86_4g_m7")
2005 : (and (eq_attr "type" "sse")
2006 : (and (eq_attr "mode" "V8DF")
2007 : (and (eq_attr "c86_attr" "sqrt")
2008 : (eq_attr "memory" "load")))))
2009 : "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*34")
2010 :
2011 : ;; MSKLOG/MSKMOV
2012 : (define_insn_reservation "c86_4g_m7_avx512_msklog" 1
2013 : (and (eq_attr "cpu" "c86_4g_m7")
2014 : (and (eq_attr "type" "msklog")
2015 : (eq_attr "c86_decode" "direct")))
2016 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
2017 :
2018 : (define_insn_reservation "c86_4g_m7_avx512_msklog_vector" 4
2019 : (and (eq_attr "cpu" "c86_4g_m7")
2020 : (and (eq_attr "type" "msklog")
2021 : (eq_attr "c86_decode" "vector")))
2022 : "c86-4g-m7-vector,c86-4g-m7-fpu_1_3")
2023 :
2024 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_reg_k" 1
2025 : (and (eq_attr "cpu" "c86_4g_m7")
2026 : (and (eq_attr "type" "mskmov")
2027 : (and (match_operand 0 "register_operand" "r")
2028 : (eq_attr "memory" "none"))))
2029 : "c86-4g-m7-double,c86-4g-m7-fpu3,c86-4g-m7-fpu_1_3")
2030 :
2031 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_xy_k" 2
2032 : (and (eq_attr "cpu" "c86_4g_m7")
2033 : (and (eq_attr "type" "mskmov")
2034 : (ior (match_operand:V2DI 0 "register_operand" "v")
2035 : (match_operand:V4DI 0 "register_operand" "v"))))
2036 : "c86-4g-m7-double,c86-4g-m7-fpu3,c86-4g-m7-fpu_1_3")
2037 :
2038 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_z_k" 3
2039 : (and (eq_attr "cpu" "c86_4g_m7")
2040 : (and (eq_attr "type" "mskmov")
2041 : (match_operand:V8DI 0 "register_operand" "v")))
2042 : "c86-4g-m7-vector,c86-4g-m7-fpu3,c86-4g-m7-fpu_1_3")
2043 :
2044 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_k_k" 1
2045 : (and (eq_attr "cpu" "c86_4g_m7")
2046 : (and (eq_attr "type" "mskmov")
2047 : (and (match_operand 0 "register_operand" "k")
2048 : (match_operand 1 "register_operand" "k"))))
2049 : "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
2050 :
2051 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_k_reg" 3
2052 : (and (eq_attr "cpu" "c86_4g_m7")
2053 : (and (eq_attr "type" "mskmov")
2054 : (and (match_operand 0 "register_operand" "k")
2055 : (match_operand 1 "register_operand" "r"))))
2056 : "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-fpu_1_3")
2057 :
2058 : (define_insn_reservation "c86_4g_m7_avx512_mskmov_k_m" 8
2059 : (and (eq_attr "cpu" "c86_4g_m7")
2060 : (and (eq_attr "type" "mskmov")
2061 : (and (match_operand 0 "register_operand" "k")
2062 : (match_operand 1 "memory_operand"))))
2063 : "c86-4g-m7-direct,c86-4g-m7-load")
|