2018-04-04 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / config / i386 / znver1.md
blobec84f618e7bbb99668d5578dec8d2ed1860177e4
1 ;; Copyright (C) 2012-2018 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.
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/>.
20 (define_attr "znver1_decode" "direct,vector,double"
21   (const_string "direct"))
23 ;; AMD znver1 Scheduling
24 ;; Modeling automatons for zen decoders, integer execution pipes,
25 ;; AGU pipes and floating point execution units.
26 (define_automaton "znver1, znver1_ieu, znver1_fp, znver1_agu")
28 ;; Decoders unit has 4 decoders and all of them can decode fast path
29 ;; and vector type instructions.
30 (define_cpu_unit "znver1-decode0" "znver1")
31 (define_cpu_unit "znver1-decode1" "znver1")
32 (define_cpu_unit "znver1-decode2" "znver1")
33 (define_cpu_unit "znver1-decode3" "znver1")
35 ;; Currently blocking all decoders for vector path instructions as
36 ;; they are dispatched separetely as microcode sequence.
37 ;; Fix me: Need to revisit this.
38 (define_reservation "znver1-vector" "znver1-decode0+znver1-decode1+znver1-decode2+znver1-decode3")
40 ;; Direct instructions can be issued to any of the four decoders.
41 (define_reservation "znver1-direct" "znver1-decode0|znver1-decode1|znver1-decode2|znver1-decode3")
43 ;; Fix me: Need to revisit this later to simulate fast path double behavior.
44 (define_reservation "znver1-double" "znver1-direct")
47 ;; Integer unit 4 ALU pipes.
48 (define_cpu_unit "znver1-ieu0" "znver1_ieu")
49 (define_cpu_unit "znver1-ieu1" "znver1_ieu")
50 (define_cpu_unit "znver1-ieu2" "znver1_ieu")
51 (define_cpu_unit "znver1-ieu3" "znver1_ieu")
52 (define_reservation "znver1-ieu" "znver1-ieu0|znver1-ieu1|znver1-ieu2|znver1-ieu3")
54 ;; 2 AGU pipes.
55 (define_cpu_unit "znver1-agu0" "znver1_agu")
56 (define_cpu_unit "znver1-agu1" "znver1_agu")
57 (define_reservation "znver1-agu-reserve" "znver1-agu0|znver1-agu1")
59 (define_reservation "znver1-load" "znver1-agu-reserve")
60 (define_reservation "znver1-store" "znver1-agu-reserve")
62 ;; vectorpath (microcoded) instructions are single issue instructions.
63 ;; So, they occupy all the integer units.
64 (define_reservation "znver1-ivector" "znver1-ieu0+znver1-ieu1
65                                       +znver1-ieu2+znver1-ieu3
66                                       +znver1-agu0+znver1-agu1")
68 ;; Floating point unit 4 FP pipes.
69 (define_cpu_unit "znver1-fp0" "znver1_fp")
70 (define_cpu_unit "znver1-fp1" "znver1_fp")
71 (define_cpu_unit "znver1-fp2" "znver1_fp")
72 (define_cpu_unit "znver1-fp3" "znver1_fp")
74 (define_reservation "znver1-fpu" "znver1-fp0|znver1-fp1|znver1-fp2|znver1-fp3")
76 (define_reservation "znver1-fvector" "znver1-fp0+znver1-fp1
77                                       +znver1-fp2+znver1-fp3
78                                       +znver1-agu0+znver1-agu1")
80 ;; Call instruction
81 (define_insn_reservation "znver1_call" 1
82                          (and (eq_attr "cpu" "znver1")
83                               (eq_attr "type" "call,callv"))
84                          "znver1-double,znver1-store,znver1-ieu0|znver1-ieu3")
86 ;; General instructions
87 (define_insn_reservation "znver1_push" 1
88                          (and (eq_attr "cpu" "znver1")
89                               (and (eq_attr "type" "push")
90                                    (eq_attr "memory" "none,unknown")))
91                          "znver1-direct,znver1-store")
93 (define_insn_reservation "znver1_push_store" 1
94                          (and (eq_attr "cpu" "znver1")
95                               (and (eq_attr "type" "push")
96                                    (eq_attr "memory" "store")))
97                          "znver1-direct,znver1-store")
99 (define_insn_reservation "znver1_push_both" 5
100                          (and (eq_attr "cpu" "znver1")
101                               (and (eq_attr "type" "push")
102                                    (eq_attr "memory" "both")))
103                          "znver1-direct,znver1-load,znver1-store")
105 (define_insn_reservation "znver1_pop" 4
106                          (and (eq_attr "cpu" "znver1")
107                               (and (eq_attr "type" "pop")
108                                    (eq_attr "memory" "load")))
109                          "znver1-direct,znver1-load")
111 (define_insn_reservation "znver1_pop_mem" 4
112                          (and (eq_attr "cpu" "znver1")
113                               (and (eq_attr "type" "pop")
114                                    (eq_attr "memory" "both")))
115                          "znver1-direct,znver1-load,znver1-store")
117 ;; Leave
118 (define_insn_reservation "znver1_leave" 1
119                          (and (eq_attr "cpu" "znver1")
120                               (eq_attr "type" "leave"))
121                          "znver1-double,znver1-ieu, znver1-store")
123 ;; Integer Instructions or General instructions
124 ;; Multiplications
125 ;; Reg operands
126 (define_insn_reservation "znver1_imul" 3
127                          (and (eq_attr "cpu" "znver1")
128                               (and (eq_attr "type" "imul")
129                                    (eq_attr "memory" "none")))
130                          "znver1-direct,znver1-ieu1")
132 (define_insn_reservation "znver1_imul_mem" 7
133                          (and (eq_attr "cpu" "znver1")
134                               (and (eq_attr "type" "imul")
135                                    (eq_attr "memory" "!none")))
136                          "znver1-direct,znver1-load, znver1-ieu1")
138 ;; Divisions
139 ;; Reg operands
140 (define_insn_reservation "znver1_idiv_DI" 41
141                          (and (eq_attr "cpu" "znver1")
142                               (and (eq_attr "type" "idiv")
143                                    (and (eq_attr "mode" "DI")
144                                         (eq_attr "memory" "none"))))
145                          "znver1-double,znver1-ieu2*41")
147 (define_insn_reservation "znver1_idiv_SI" 25
148                          (and (eq_attr "cpu" "znver1")
149                               (and (eq_attr "type" "idiv")
150                                    (and (eq_attr "mode" "SI")
151                                         (eq_attr "memory" "none"))))
152                          "znver1-double,znver1-ieu2*25")
154 (define_insn_reservation "znver1_idiv_HI" 17
155                          (and (eq_attr "cpu" "znver1")
156                               (and (eq_attr "type" "idiv")
157                                    (and (eq_attr "mode" "HI")
158                                         (eq_attr "memory" "none"))))
159                          "znver1-double,znver1-ieu2*17")
161 (define_insn_reservation "znver1_idiv_QI" 12
162                          (and (eq_attr "cpu" "znver1")
163                               (and (eq_attr "type" "idiv")
164                                    (and (eq_attr "mode" "QI")
165                                         (eq_attr "memory" "none"))))
166                          "znver1-direct,znver1-ieu2*12")
168 ;; Mem operands
169 (define_insn_reservation "znver1_idiv_mem_DI" 45
170                          (and (eq_attr "cpu" "znver1")
171                               (and (eq_attr "type" "idiv")
172                                    (and (eq_attr "mode" "DI")
173                                         (eq_attr "memory" "none"))))
174                          "znver1-double,znver1-load,znver1-ieu2*41")
176 (define_insn_reservation "znver1_idiv_mem_SI" 29
177                          (and (eq_attr "cpu" "znver1")
178                               (and (eq_attr "type" "idiv")
179                                    (and (eq_attr "mode" "SI")
180                                         (eq_attr "memory" "none"))))
181                          "znver1-double,znver1-load,znver1-ieu2*25")
183 (define_insn_reservation "znver1_idiv_mem_HI" 21
184                          (and (eq_attr "cpu" "znver1")
185                               (and (eq_attr "type" "idiv")
186                                    (and (eq_attr "mode" "HI")
187                                         (eq_attr "memory" "none"))))
188                          "znver1-double,znver1-load,znver1-ieu2*17")
190 (define_insn_reservation "znver1_idiv_mem_QI" 16
191                          (and (eq_attr "cpu" "znver1")
192                               (and (eq_attr "type" "idiv")
193                                    (and (eq_attr "mode" "QI")
194                                         (eq_attr "memory" "none"))))
195                          "znver1-direct,znver1-load,znver1-ieu2*12")
197 ;; STR ISHIFT which are micro coded.
198 ;; Fix me: Latency need to be rechecked.
199 (define_insn_reservation "znver1_str_ishift" 6
200                          (and (eq_attr "cpu" "znver1")
201                               (and (eq_attr "type" "str,ishift")
202                                    (eq_attr "memory" "both,store")))
203                          "znver1-vector,znver1-ivector")
204 ;; MOV - integer moves
205 (define_insn_reservation "znver1_load_imov_double" 2
206                          (and (eq_attr "cpu" "znver1")
207                               (and (eq_attr "znver1_decode" "double")
208                                    (and (eq_attr "type" "imovx")
209                                         (eq_attr "memory" "none"))))
210                          "znver1-double,znver1-ieu")
212 (define_insn_reservation "znver1_load_imov_direct" 1
213                          (and (eq_attr "cpu" "znver1")
214                               (and (eq_attr "type" "imov,imovx")
215                                    (eq_attr "memory" "none")))
216                          "znver1-direct,znver1-ieu")
218 (define_insn_reservation "znver1_load_imov_double_store" 2
219                          (and (eq_attr "cpu" "znver1")
220                               (and (eq_attr "znver1_decode" "double")
221                                    (and (eq_attr "type" "imovx")
222                                         (eq_attr "memory" "store"))))
223                          "znver1-double,znver1-ieu,znver1-store")
225 (define_insn_reservation "znver1_load_imov_direct_store" 1
226                          (and (eq_attr "cpu" "znver1")
227                               (and (eq_attr "type" "imov,imovx")
228                                    (eq_attr "memory" "store")))
229                                    "znver1-direct,znver1-ieu,znver1-store")
231 (define_insn_reservation "znver1_load_imov_double_load" 5
232                          (and (eq_attr "cpu" "znver1")
233                               (and (eq_attr "znver1_decode" "double")
234                                    (and (eq_attr "type" "imovx")
235                                         (eq_attr "memory" "load"))))
236                          "znver1-double,znver1-load")
238 (define_insn_reservation "znver1_load_imov_direct_load" 4
239                          (and (eq_attr "cpu" "znver1")
240                               (and (eq_attr "type" "imov,imovx")
241                                    (eq_attr "memory" "load")))
242                          "znver1-direct,znver1-load")
244 ;; INTEGER/GENERAL instructions
245 ;; register/imm operands only: ALU, ICMP, NEG, NOT, ROTATE, ISHIFT, TEST
246 (define_insn_reservation "znver1_insn" 1
247                          (and (eq_attr "cpu" "znver1")
248                               (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec,icmov")
249                                    (eq_attr "memory" "none,unknown")))
250                          "znver1-direct,znver1-ieu")
252 (define_insn_reservation "znver1_insn_load" 5
253                          (and (eq_attr "cpu" "znver1")
254                               (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec,icmov")
255                                    (eq_attr "memory" "load")))
256                          "znver1-direct,znver1-load,znver1-ieu")
258 (define_insn_reservation "znver1_insn_store" 1
259                          (and (eq_attr "cpu" "znver1")
260                               (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec")
261                                    (eq_attr "memory" "store")))
262                          "znver1-direct,znver1-ieu,znver1-store")
264 (define_insn_reservation "znver1_insn_both" 5
265                          (and (eq_attr "cpu" "znver1")
266                               (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec")
267                                    (eq_attr "memory" "both")))
268                          "znver1-direct,znver1-load,znver1-ieu,znver1-store")
270 ;; Fix me: Other vector type insns keeping latency 6 as of now.
271 (define_insn_reservation "znver1_ieu_vector" 6
272                          (and (eq_attr "cpu" "znver1")
273                               (eq_attr "type" "other,str,multi"))
274                          "znver1-vector,znver1-ivector")
276 ;; ALU1 register operands.
277 (define_insn_reservation "znver1_alu1_vector" 3
278                          (and (eq_attr "cpu" "znver1")
279                               (and (eq_attr "znver1_decode" "vector")
280                                    (and (eq_attr "type" "alu1")
281                                         (eq_attr "memory" "none,unknown"))))
282                          "znver1-vector,znver1-ivector")
284 (define_insn_reservation "znver1_alu1_double" 2
285                          (and (eq_attr "cpu" "znver1")
286                               (and (eq_attr "znver1_decode" "double")
287                                    (and (eq_attr "type" "alu1")
288                                         (eq_attr "memory" "none,unknown"))))
289                          "znver1-double,znver1-ieu")
291 (define_insn_reservation "znver1_alu1_direct" 1
292                          (and (eq_attr "cpu" "znver1")
293                               (and (eq_attr "znver1_decode" "direct")
294                                    (and (eq_attr "type" "alu1")
295                                         (eq_attr "memory" "none,unknown"))))
296                          "znver1-direct,znver1-ieu")
298 ;; Branches : Fix me need to model conditional branches.
299 (define_insn_reservation "znver1_branch" 1
300                          (and (eq_attr "cpu" "znver1")
301                               (and (eq_attr "type" "ibr")
302                                    (eq_attr "memory" "none")))
303                           "znver1-direct")
305 ;; Indirect branches check latencies.
306 (define_insn_reservation "znver1_indirect_branch_mem" 6
307                          (and (eq_attr "cpu" "znver1")
308                               (and (eq_attr "type" "ibr")
309                                    (eq_attr "memory" "load")))
310                          "znver1-vector,znver1-ivector")
312 ;; LEA executes in ALU units with 1 cycle latency.
313 (define_insn_reservation "znver1_lea" 1
314                          (and (eq_attr "cpu" "znver1")
315                               (eq_attr "type" "lea"))
316                          "znver1-direct,znver1-ieu")
318 ;; Other integer instrucions
319 (define_insn_reservation "znver1_idirect" 1
320                          (and (eq_attr "cpu" "znver1")
321                               (and (eq_attr "unit" "integer,unknown")
322                                    (eq_attr "memory" "none,unknown")))
323                          "znver1-direct,znver1-ieu")
325 ;;  Floating point
326 (define_insn_reservation "znver1_fp_cmov" 6
327                          (and (eq_attr "cpu" "znver1")
328                               (eq_attr "type" "fcmov"))
329                          "znver1-vector,znver1-fvector")
331 (define_insn_reservation "znver1_fp_mov_direct_load" 8 
332                          (and (eq_attr "cpu" "znver1")
333                               (and (eq_attr "znver1_decode" "direct")
334                                    (and (eq_attr "type" "fmov")
335                                         (eq_attr "memory" "load"))))
336                          "znver1-direct,znver1-load,znver1-fp3|znver1-fp1")
338 (define_insn_reservation "znver1_fp_mov_direct_store" 5
339                          (and (eq_attr "cpu" "znver1")
340                               (and (eq_attr "znver1_decode" "direct")
341                                    (and (eq_attr "type" "fmov")
342                                         (eq_attr "memory" "store"))))
343                          "znver1-direct,znver1-fp2|znver1-fp3,znver1-store")
345 (define_insn_reservation "znver1_fp_mov_double" 4
346                          (and (eq_attr "cpu" "znver1")
347                               (and (eq_attr "znver1_decode" "double")
348                                    (and (eq_attr "type" "fmov")
349                                         (eq_attr "memory" "none"))))
350                          "znver1-double,znver1-fp3")
352 (define_insn_reservation "znver1_fp_mov_double_load" 12
353                          (and (eq_attr "cpu" "znver1")
354                               (and (eq_attr "znver1_decode" "double")
355                                    (and (eq_attr "type" "fmov")
356                                         (eq_attr "memory" "load"))))
357                          "znver1-double,znver1-load,znver1-fp3")
359 (define_insn_reservation "znver1_fp_mov_direct" 1
360                          (and (eq_attr "cpu" "znver1")
361                               (eq_attr "type" "fmov"))
362                          "znver1-direct,znver1-fp3")
364 (define_insn_reservation "znver1_fp_spc_direct" 5
365                          (and (eq_attr "cpu" "znver1")
366                               (and (eq_attr "type" "fpspc")
367                                    (eq_attr "memory" "store")))
368                          "znver1-direct,znver1-fp3,znver1-fp2")
370 (define_insn_reservation "znver1_fp_insn_vector" 6
371                          (and (eq_attr "cpu" "znver1")
372                               (and (eq_attr "znver1_decode" "vector")
373                                    (eq_attr "type" "fpspc,mmxcvt,sselog1,ssemul,ssemov")))
374                          "znver1-vector,znver1-fvector")
376 ;; FABS
377 (define_insn_reservation "znver1_fp_fsgn" 1
378                          (and (eq_attr "cpu" "znver1")
379                               (eq_attr "type" "fsgn"))
380                          "znver1-direct,znver1-fp3")
382 (define_insn_reservation "znver1_fp_fcmp" 2
383                          (and (eq_attr "cpu" "znver1")
384                               (and (eq_attr "memory" "none")
385                                    (and (eq_attr "znver1_decode" "double")
386                                         (eq_attr "type" "fcmp"))))
387                          "znver1-double,znver1-fp0,znver1-fp2")
389 (define_insn_reservation "znver1_fp_fcmp_load" 9
390                          (and (eq_attr "cpu" "znver1")
391                               (and (eq_attr "memory" "none")
392                                    (and (eq_attr "znver1_decode" "double")
393                                         (eq_attr "type" "fcmp"))))
394                          "znver1-double,znver1-load, znver1-fp0,znver1-fp2")
396 ;;FADD FSUB FMUL
397 (define_insn_reservation "znver1_fp_op_mul" 5
398                          (and (eq_attr "cpu" "znver1")
399                               (and (eq_attr "type" "fop,fmul")
400                                    (eq_attr "memory" "none")))
401                          "znver1-direct,znver1-fp0*5")
403 (define_insn_reservation "znver1_fp_op_mul_load" 12 
404                          (and (eq_attr "cpu" "znver1")
405                               (and (eq_attr "type" "fop,fmul")
406                                    (eq_attr "memory" "load")))
407                          "znver1-direct,znver1-load,znver1-fp0*5")
409 (define_insn_reservation "znver1_fp_op_imul_load" 16
410                          (and (eq_attr "cpu" "znver1")
411                               (and (eq_attr "type" "fop,fmul")
412                                    (and (eq_attr "fp_int_src" "true")
413                                         (eq_attr "memory" "load"))))
414                         "znver1-double,znver1-load,znver1-fp3,znver1-fp0")
416 (define_insn_reservation "znver1_fp_op_div" 15
417                          (and (eq_attr "cpu" "znver1")
418                               (and (eq_attr "type" "fdiv")
419                                    (eq_attr "memory" "none")))
420                          "znver1-direct,znver1-fp3*15")
422 (define_insn_reservation "znver1_fp_op_div_load" 22
423                          (and (eq_attr "cpu" "znver1")
424                               (and (eq_attr "type" "fdiv")
425                                    (eq_attr "memory" "load")))
426                          "znver1-direct,znver1-load,znver1-fp3*15")
428 (define_insn_reservation "znver1_fp_op_idiv_load" 27
429                          (and (eq_attr "cpu" "znver1")
430                               (and (eq_attr "type" "fdiv")
431                                    (and (eq_attr "fp_int_src" "true")
432                                         (eq_attr "memory" "load"))))
433                          "znver1-double,znver1-load,znver1-fp3*19")
435 ;; MMX, SSE, SSEn.n, AVX, AVX2 instructions
436 (define_insn_reservation "znver1_fp_insn" 1
437                          (and (eq_attr "cpu" "znver1")
438                               (eq_attr "type" "mmx"))
439                          "znver1-direct,znver1-fpu")
441 (define_insn_reservation "znver1_mmx_add" 1
442                          (and (eq_attr "cpu" "znver1")
443                               (and (eq_attr "type" "mmxadd")
444                                    (eq_attr "memory" "none")))
445                          "znver1-direct,znver1-fp0|znver1-fp1|znver1-fp3")
447 (define_insn_reservation "znver1_mmx_add_load" 8
448                          (and (eq_attr "cpu" "znver1")
449                               (and (eq_attr "type" "mmxadd")
450                                    (eq_attr "memory" "load")))
451                          "znver1-direct,znver1-load,znver1-fp0|znver1-fp1|znver1-fp3")
453 (define_insn_reservation "znver1_mmx_cmp" 1
454                          (and (eq_attr "cpu" "znver1")
455                               (and (eq_attr "type" "mmxcmp")
456                                    (eq_attr "memory" "none")))
457                          "znver1-direct,znver1-fp0|znver1-fp3")
459 (define_insn_reservation "znver1_mmx_cmp_load" 8
460                          (and (eq_attr "cpu" "znver1")
461                               (and (eq_attr "type" "mmxcmp")
462                                    (eq_attr "memory" "load")))
463                          "znver1-direct,znver1-load,znver1-fp0|znver1-fp3")
465 (define_insn_reservation "znver1_mmx_cvt_pck_shuf" 1
466                          (and (eq_attr "cpu" "znver1")
467                               (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1")
468                                    (eq_attr "memory" "none")))
469                          "znver1-direct,znver1-fp1|znver1-fp2")
471 (define_insn_reservation "znver1_mmx_cvt_pck_shuf_load" 8
472                          (and (eq_attr "cpu" "znver1")
473                               (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1")
474                                    (eq_attr "memory" "load")))
475                          "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
477 (define_insn_reservation "znver1_mmx_shift_move" 1
478                          (and (eq_attr "cpu" "znver1")
479                               (and (eq_attr "type" "mmxshft,mmxmov")
480                                    (eq_attr "memory" "none")))
481                          "znver1-direct,znver1-fp2")
483 (define_insn_reservation "znver1_mmx_shift_move_load" 8
484                          (and (eq_attr "cpu" "znver1")
485                               (and (eq_attr "type" "mmxshft,mmxmov")
486                                    (eq_attr "memory" "load")))
487                          "znver1-direct,znver1-load,znver1-fp2")
489 (define_insn_reservation "znver1_mmx_move_store" 1
490                          (and (eq_attr "cpu" "znver1")
491                               (and (eq_attr "type" "mmxshft,mmxmov")
492                                    (eq_attr "memory" "store,both")))
493                           "znver1-direct,znver1-fp2,znver1-store")
495 (define_insn_reservation "znver1_mmx_mul" 3
496                          (and (eq_attr "cpu" "znver1")
497                               (and (eq_attr "type" "mmxmul")
498                                    (eq_attr "memory" "none")))
499                           "znver1-direct,znver1-fp0*3")
501 (define_insn_reservation "znver1_mmx_load" 10
502                          (and (eq_attr "cpu" "znver1")
503                               (and (eq_attr "type" "mmxmul")
504                                    (eq_attr "memory" "load")))
505                          "znver1-direct,znver1-load,znver1-fp0*3")
507 (define_insn_reservation "znver1_avx256_log" 1
508                          (and (eq_attr "cpu" "znver1")
509                               (and (eq_attr "mode" "V8SF,V4DF,OI")
510                                    (and (eq_attr "type" "sselog")
511                                         (eq_attr "memory" "none"))))
512                          "znver1-double,znver1-fpu")
514 (define_insn_reservation "znver1_avx256_log_load" 8
515                          (and (eq_attr "cpu" "znver1")
516                               (and (eq_attr "mode" "V8SF,V4DF,OI")
517                                    (and (eq_attr "type" "sselog")
518                                         (eq_attr "memory" "load"))))
519                          "znver1-double,znver1-load,znver1-fpu")
521 (define_insn_reservation "znver1_sse_log" 1
522                          (and (eq_attr "cpu" "znver1")
523                               (and (eq_attr "type" "sselog")
524                                    (eq_attr "memory" "none")))
525                          "znver1-direct,znver1-fpu")
527 (define_insn_reservation "znver1_sse_log_load" 8
528                          (and (eq_attr "cpu" "znver1")
529                               (and (eq_attr "type" "sselog")
530                                    (eq_attr "memory" "load")))
531                          "znver1-direct,znver1-load,znver1-fpu")
533 (define_insn_reservation "znver1_avx256_log1" 1
534                          (and (eq_attr "cpu" "znver1")
535                               (and (eq_attr "mode" "V8SF,V4DF,OI")
536                                    (and (eq_attr "type" "sselog1")
537                                         (eq_attr "memory" "none"))))
538                          "znver1-double,znver1-fp1|znver1-fp2")
540 (define_insn_reservation "znver1_avx256_log1_load" 8
541                          (and (eq_attr "cpu" "znver1")
542                               (and (eq_attr "mode" "V8SF,V4DF,OI")
543                                    (and (eq_attr "type" "sselog1")
544                                         (eq_attr "memory" "!none"))))
545                          "znver1-double,znver1-load,znver1-fp1|znver1-fp2")
547 (define_insn_reservation "znver1_sse_log1" 1
548                          (and (eq_attr "cpu" "znver1")
549                               (and (eq_attr "type" "sselog1")
550                                    (eq_attr "memory" "none")))
551                          "znver1-direct,znver1-fp1|znver1-fp2")
553 (define_insn_reservation "znver1_sse_log1_load" 8
554                          (and (eq_attr "cpu" "znver1")
555                               (and (eq_attr "type" "sselog1")
556                                    (eq_attr "memory" "!none")))
557                          "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
559 (define_insn_reservation "znver1_sse_comi" 1
560                          (and (eq_attr "cpu" "znver1")
561                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
562                                    (and (eq_attr "prefix" "!vex")
563                                         (and (eq_attr "prefix_extra" "0")
564                                              (and (eq_attr "type" "ssecomi")
565                                                   (eq_attr "memory" "none"))))))
566                          "znver1-direct,znver1-fp0|znver1-fp1")
568 (define_insn_reservation "znver1_sse_comi_load" 8
569                          (and (eq_attr "cpu" "znver1")
570                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
571                                    (and (eq_attr "prefix" "!vex")
572                                         (and (eq_attr "prefix_extra" "0")
573                                              (and (eq_attr "type" "ssecomi")
574                                                   (eq_attr "memory" "load"))))))
575                          "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
577 (define_insn_reservation "znver1_sse_comi_double" 2
578                          (and (eq_attr "cpu" "znver1")
579                               (and (eq_attr "mode" "V4SF,V2DF,TI")
580                                    (and (eq_attr "prefix" "vex")
581                                         (and (eq_attr "prefix_extra" "0")
582                                              (and (eq_attr "type" "ssecomi")
583                                                   (eq_attr "memory" "none"))))))
584                          "znver1-double,znver1-fp0|znver1-fp1")
586 (define_insn_reservation "znver1_sse_comi_double_load" 10
587                          (and (eq_attr "cpu" "znver1")
588                               (and (eq_attr "mode" "V4SF,V2DF,TI")
589                                    (and (eq_attr "prefix" "vex")
590                                         (and (eq_attr "prefix_extra" "0")
591                                              (and (eq_attr "type" "ssecomi")
592                                                   (eq_attr "memory" "load"))))))
593                          "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
595 (define_insn_reservation "znver1_sse_test" 1
596                          (and (eq_attr "cpu" "znver1")
597                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")
598                                    (and (eq_attr "prefix_extra" "1")
599                                         (and (eq_attr "type" "ssecomi")
600                                              (eq_attr "memory" "none")))))
601                          "znver1-direct,znver1-fp1|znver1-fp2")
603 (define_insn_reservation "znver1_sse_test_load" 8
604                          (and (eq_attr "cpu" "znver1")
605                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")
606                                    (and (eq_attr "prefix_extra" "1")
607                                         (and (eq_attr "type" "ssecomi")
608                                              (eq_attr "memory" "load")))))
609                          "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
611 ;; SSE moves
612 ;; Fix me:  Need to revist this again some of the moves may be restricted
613 ;; to some fpu pipes.
614 (define_insn_reservation "znver1_sse_mov" 2
615                          (and (eq_attr "cpu" "znver1")
616                               (and (eq_attr "mode" "SI")
617                                    (and (eq_attr "isa" "avx")
618                                         (and (eq_attr "type" "ssemov")
619                                              (eq_attr "memory" "none")))))
620                          "znver1-direct,znver1-ieu0")
622 (define_insn_reservation "znver1_avx_mov" 2
623                          (and (eq_attr "cpu" "znver1")
624                               (and (eq_attr "mode" "TI")
625                                    (and (eq_attr "isa" "avx")
626                                         (and (eq_attr "type" "ssemov")
627                                              (and (match_operand:SI 1 "register_operand")
628                                                   (eq_attr "memory" "none"))))))
629                          "znver1-direct,znver1-ieu2")
631 (define_insn_reservation "znver1_sseavx_mov" 1
632                          (and (eq_attr "cpu" "znver1")
633                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")
634                                    (and (eq_attr "type" "ssemov")
635                                         (eq_attr "memory" "none"))))
636                          "znver1-direct,znver1-fpu")
638 (define_insn_reservation "znver1_sseavx_mov_store" 1
639                          (and (eq_attr "cpu" "znver1")
640                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")
641                                    (and (eq_attr "type" "ssemov")
642                                         (eq_attr "memory" "store"))))
643                         "znver1-direct,znver1-fpu,znver1-store")
645 (define_insn_reservation "znver1_sseavx_mov_load" 8
646                          (and (eq_attr "cpu" "znver1")
647                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")
648                                    (and (eq_attr "type" "ssemov")
649                                         (eq_attr "memory" "load"))))
650                          "znver1-direct,znver1-load,znver1-fpu")
652 (define_insn_reservation "znver1_avx256_mov" 1
653                          (and (eq_attr "cpu" "znver1")
654                               (and (eq_attr "mode" "V8SF,V4DF,OI")
655                                    (and (eq_attr "type" "ssemov")
656                                         (eq_attr "memory" "none"))))
657                          "znver1-double,znver1-fpu")
659 (define_insn_reservation "znver1_avx256_mov_store" 1
660                          (and (eq_attr "cpu" "znver1")
661                               (and (eq_attr "mode" "V8SF,V4DF,OI")
662                                    (and (eq_attr "type" "ssemov")
663                                         (eq_attr "memory" "store"))))
664                          "znver1-double,znver1-fpu,znver1-store")
666 (define_insn_reservation "znver1_avx256_mov_load" 8
667                          (and (eq_attr "cpu" "znver1")
668                               (and (eq_attr "mode" "V8SF,V4DF,OI")
669                                    (and (eq_attr "type" "ssemov")
670                                         (eq_attr "memory" "load"))))
671                          "znver1-double,znver1-load,znver1-fpu")
673 ;; SSE add
674 (define_insn_reservation "znver1_sseavx_add" 3
675                          (and (eq_attr "cpu" "znver1")
676                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")
677                                    (and (eq_attr "type" "sseadd")
678                                         (eq_attr "memory" "none"))))
679                          "znver1-direct,znver1-fp2|znver1-fp3")
681 (define_insn_reservation "znver1_sseavx_add_load" 10
682                          (and (eq_attr "cpu" "znver1")
683                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")
684                                    (and (eq_attr "type" "sseadd")
685                                         (eq_attr "memory" "load"))))
686                          "znver1-direct,znver1-load,znver1-fp2|znver1-fp3")
688 (define_insn_reservation "znver1_avx256_add" 3
689                          (and (eq_attr "cpu" "znver1")
690                               (and (eq_attr "mode" "V8SF,V4DF,OI")
691                                    (and (eq_attr "type" "sseadd")
692                                         (eq_attr "memory" "none"))))
693                          "znver1-double,znver1-fp2|znver1-fp3")
695 (define_insn_reservation "znver1_avx256_add_load" 10
696                          (and (eq_attr "cpu" "znver1")
697                               (and (eq_attr "mode" "V8SF,V4DF,OI")
698                                    (and (eq_attr "type" "sseadd")
699                                         (eq_attr "memory" "load"))))
700                          "znver1-double,znver1-load,znver1-fp2|znver1-fp3")
702 (define_insn_reservation "znver1_sseavx_fma" 5
703                          (and (eq_attr "cpu" "znver1")
704                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
705                                    (and (eq_attr "type" "ssemuladd")
706                                         (eq_attr "memory" "none"))))
707                          "znver1-direct,znver1-fp0|znver1-fp1")
709 (define_insn_reservation "znver1_sseavx_fma_load" 12
710                          (and (eq_attr "cpu" "znver1")
711                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
712                                    (and (eq_attr "type" "ssemuladd")
713                                         (eq_attr "memory" "load"))))
714                         "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
716 (define_insn_reservation "znver1_avx256_fma" 5
717                          (and (eq_attr "cpu" "znver1")
718                               (and (eq_attr "mode" "V8SF,V4DF")
719                                    (and (eq_attr "type" "ssemuladd")
720                                         (eq_attr "memory" "none"))))
721                          "znver1-double,znver1-fp0|znver1-fp1")
723 (define_insn_reservation "znver1_avx256_fma_load" 12
724                          (and (eq_attr "cpu" "znver1")
725                               (and (eq_attr "mode" "V8SF,V4DF")
726                                    (and (eq_attr "type" "ssemuladd")
727                                         (eq_attr "memory" "load"))))
728                          "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
730 (define_insn_reservation "znver1_sseavx_iadd" 1
731                          (and (eq_attr "cpu" "znver1")
732                               (and (eq_attr "mode" "DI,TI")
733                                    (and (eq_attr "type" "sseiadd")
734                                         (eq_attr "memory" "none"))))
735                          "znver1-direct,znver1-fp0|znver1-fp1|znver1-fp3")
737 (define_insn_reservation "znver1_sseavx_iadd_load" 8
738                          (and (eq_attr "cpu" "znver1")
739                               (and (eq_attr "mode" "DI,TI")
740                                    (and (eq_attr "type" "sseiadd")
741                                         (eq_attr "memory" "load"))))
742                          "znver1-direct,znver1-load,znver1-fp0|znver1-fp1|znver1-fp3")
744 (define_insn_reservation "znver1_avx256_iadd" 1
745                          (and (eq_attr "cpu" "znver1")
746                               (and (eq_attr "mode" "OI")
747                                    (and (eq_attr "type" "sseiadd")
748                                         (eq_attr "memory" "none"))))
749                          "znver1-double,znver1-fp0|znver1-fp1|znver1-fp3")
751 (define_insn_reservation "znver1_avx256_iadd_load" 8
752                          (and (eq_attr "cpu" "znver1")
753                               (and (eq_attr "mode" "OI")
754                                    (and (eq_attr "type" "sseiadd")
755                                         (eq_attr "memory" "load"))))
756                          "znver1-double,znver1-load,znver1-fp0|znver1-fp1|znver1-fp3")
758 ;; SSE conversions.
759 (define_insn_reservation "znver1_ssecvtsf_si_load" 12
760                          (and (eq_attr "cpu" "znver1")
761                               (and (eq_attr "mode" "SI")
762                                    (and (eq_attr "type" "sseicvt")
763                                         (and (match_operand:SF 1 "memory_operand")
764                                              (eq_attr "memory" "load")))))
765                          "znver1-double,znver1-load,znver1-fp3,znver1-ieu0")
767 (define_insn_reservation "znver1_ssecvtdf_si" 5
768                          (and (eq_attr "cpu" "znver1")
769                               (and (eq_attr "mode" "SI")
770                                    (and (match_operand:DF 1 "register_operand")
771                                         (and (eq_attr "type" "sseicvt")
772                                              (eq_attr "memory" "none")))))
773                          "znver1-double,znver1-fp3,znver1-ieu0")
775 (define_insn_reservation "znver1_ssecvtdf_si_load" 12
776                          (and (eq_attr "cpu" "znver1")
777                               (and (eq_attr "mode" "SI")
778                                    (and (eq_attr "type" "sseicvt")
779                                         (and (match_operand:DF 1 "memory_operand")
780                                              (eq_attr "memory" "load")))))
781                          "znver1-double,znver1-load,znver1-fp3,znver1-ieu0")
783 ;; All other used ssecvt fp3 pipes
784 ;; Check: Need to revisit this again.
785 ;; Some SSE converts may use different pipe combinations.
786 (define_insn_reservation "znver1_ssecvt" 4
787                          (and (eq_attr "cpu" "znver1")
788                               (and (eq_attr "type" "ssecvt")
789                                    (eq_attr "memory" "none")))
790                          "znver1-direct,znver1-fp3")
792 (define_insn_reservation "znver1_ssecvt_load" 11
793                          (and (eq_attr "cpu" "znver1")
794                               (and (eq_attr "type" "ssecvt")
795                                    (eq_attr "memory" "load")))
796                          "znver1-direct,znver1-load,znver1-fp3")
798 ;; SSE div
799 (define_insn_reservation "znver1_ssediv_ss_ps" 10
800                          (and (eq_attr "cpu" "znver1")
801                               (and (eq_attr "mode" "V4SF,SF")
802                                    (and (eq_attr "type" "ssediv")
803                                         (eq_attr "memory" "none"))))
804                          "znver1-direct,znver1-fp3*10")
806 (define_insn_reservation "znver1_ssediv_ss_ps_load" 17
807                          (and (eq_attr "cpu" "znver1")
808                               (and (eq_attr "mode" "V4SF,SF")
809                                    (and (eq_attr "type" "ssediv")
810                                         (eq_attr "memory" "load"))))
811                          "znver1-direct,znver1-load,znver1-fp3*10")
813 (define_insn_reservation "znver1_ssediv_sd_pd" 13
814                          (and (eq_attr "cpu" "znver1")
815                               (and (eq_attr "mode" "V2DF,DF")
816                                    (and (eq_attr "type" "ssediv")
817                                         (eq_attr "memory" "none"))))
818                          "znver1-direct,znver1-fp3*13")
820 (define_insn_reservation "znver1_ssediv_sd_pd_load" 20
821                          (and (eq_attr "cpu" "znver1")
822                               (and (eq_attr "mode" "V2DF,DF")
823                                    (and (eq_attr "type" "ssediv")
824                                         (eq_attr "memory" "load"))))
825                          "znver1-direct,znver1-load,znver1-fp3*13")
827 (define_insn_reservation "znver1_ssediv_avx256_ps" 12
828                          (and (eq_attr "cpu" "znver1")
829                               (and (eq_attr "mode" "V8SF")
830                                    (and (eq_attr "memory" "none")
831                                         (eq_attr "type" "ssediv"))))
832                          "znver1-double,znver1-fp3*12")
834 (define_insn_reservation "znver1_ssediv_avx256_ps_load" 19
835                          (and (eq_attr "cpu" "znver1")
836                               (and (eq_attr "mode" "V8SF")
837                                    (and (eq_attr "type" "ssediv")
838                                         (eq_attr "memory" "load"))))
839                          "znver1-double,znver1-load,znver1-fp3*12")
841 (define_insn_reservation "znver1_ssediv_avx256_pd" 15
842                          (and (eq_attr "cpu" "znver1")
843                               (and (eq_attr "mode" "V4DF")
844                                    (and (eq_attr "type" "ssediv")
845                                         (eq_attr "memory" "none"))))
846                          "znver1-double,znver1-fp3*15")
848 (define_insn_reservation "znver1_ssediv_avx256_pd_load" 22 
849                          (and (eq_attr "cpu" "znver1")
850                               (and (eq_attr "mode" "V4DF")
851                                    (and (eq_attr "type" "ssediv")
852                                         (eq_attr "memory" "load"))))
853                          "znver1-double,znver1-load,znver1-fp3*15")
854 ;; SSE MUL
855 (define_insn_reservation "znver1_ssemul_ss_ps" 3
856                          (and (eq_attr "cpu" "znver1")
857                               (and (eq_attr "mode" "V4SF,SF")
858                                    (and (eq_attr "type" "ssemul")
859                                         (eq_attr "memory" "none"))))
860                          "znver1-direct,(znver1-fp0|znver1-fp1)*3")
862 (define_insn_reservation "znver1_ssemul_ss_ps_load" 10 
863                          (and (eq_attr "cpu" "znver1")
864                               (and (eq_attr "mode" "V4SF,SF")
865                                    (and (eq_attr "type" "ssemul")
866                                         (eq_attr "memory" "load"))))
867                          "znver1-direct,znver1-load,(znver1-fp0|znver1-fp1)*3")
869 (define_insn_reservation "znver1_ssemul_avx256_ps" 3
870                          (and (eq_attr "cpu" "znver1")
871                               (and (eq_attr "mode" "V8SF")
872                                    (and (eq_attr "type" "ssemul")
873                                         (eq_attr "memory" "none"))))
874                          "znver1-double,(znver1-fp0|znver1-fp1)*3")
876 (define_insn_reservation "znver1_ssemul_avx256_ps_load" 10
877                          (and (eq_attr "cpu" "znver1")
878                               (and (eq_attr "mode" "V8SF")
879                                    (and (eq_attr "type" "ssemul")
880                                         (eq_attr "memory" "load"))))
881                          "znver1-double,znver1-load,(znver1-fp0|znver1-fp1)*3")
883 (define_insn_reservation "znver1_ssemul_sd_pd" 4
884                          (and (eq_attr "cpu" "znver1")
885                               (and (eq_attr "mode" "V2DF,DF")
886                                    (and (eq_attr "type" "ssemul")
887                                         (eq_attr "memory" "none"))))
888                          "znver1-direct,(znver1-fp0|znver1-fp1)*4")
890 (define_insn_reservation "znver1_ssemul_sd_pd_load" 11
891                          (and (eq_attr "cpu" "znver1")
892                               (and (eq_attr "mode" "V2DF,DF")
893                                    (and (eq_attr "type" "ssemul")
894                                         (eq_attr "memory" "load"))))
895                          "znver1-direct,znver1-load,(znver1-fp0|znver1-fp1)*4")
897 (define_insn_reservation "znver1_ssemul_avx256_pd" 5
898                          (and (eq_attr "cpu" "znver1")
899                               (and (eq_attr "mode" "V4DF")
900                                    (and (eq_attr "mode" "V4DF")
901                                         (and (eq_attr "type" "ssemul")
902                                              (eq_attr "memory" "none")))))
903                          "znver1-double,(znver1-fp0|znver1-fp1)*4")
905 (define_insn_reservation "znver1_ssemul_avx256_pd_load" 12
906                          (and (eq_attr "cpu" "znver1")
907                               (and (eq_attr "mode" "V4DF")
908                                    (and (eq_attr "type" "ssemul")
909                                         (eq_attr "memory" "load"))))
910                          "znver1-double,znver1-load,(znver1-fp0|znver1-fp1)*4")
912 ;;SSE imul
913 (define_insn_reservation "znver1_sseimul" 3
914                          (and (eq_attr "cpu" "znver1")
915                               (and (eq_attr "mode" "TI")
916                                    (and (eq_attr "type" "sseimul")
917                                         (eq_attr "memory" "none"))))
918                          "znver1-direct,znver1-fp0*3")
920 (define_insn_reservation "znver1_sseimul_avx256" 4
921                          (and (eq_attr "cpu" "znver1")
922                               (and (eq_attr "mode" "OI")
923                                    (and (eq_attr "type" "sseimul")
924                                         (eq_attr "memory" "none"))))
925                          "znver1-double,znver1-fp0*4")
927 (define_insn_reservation "znver1_sseimul_load" 10
928                          (and (eq_attr "cpu" "znver1")
929                               (and (eq_attr "mode" "TI")
930                                    (and (eq_attr "type" "sseimul")
931                                         (eq_attr "memory" "load"))))
932                          "znver1-direct,znver1-load,znver1-fp0*3")
934 (define_insn_reservation "znver1_sseimul_avx256_load" 11
935                          (and (eq_attr "cpu" "znver1")
936                               (and (eq_attr "mode" "OI")
937                                    (and (eq_attr "type" "sseimul")
938                                         (eq_attr "memory" "load"))))
939                          "znver1-double,znver1-load,znver1-fp0*4")
941 (define_insn_reservation "znver1_sseimul_di" 3 
942                          (and (eq_attr "cpu" "znver1")
943                               (and (eq_attr "mode" "DI")
944                                    (and (eq_attr "memory" "none")
945                                         (eq_attr "type" "sseimul"))))
946                          "znver1-direct,znver1-fp0*3")
948 (define_insn_reservation "znver1_sseimul_load_di" 10 
949                          (and (eq_attr "cpu" "znver1")
950                               (and (eq_attr "mode" "DI")
951                                    (and (eq_attr "type" "sseimul")
952                                         (eq_attr "memory" "load"))))
953                          "znver1-direct,znver1-load,znver1-fp0*3")
955 ;; SSE compares
956 (define_insn_reservation "znver1_sse_cmp" 1
957                          (and (eq_attr "cpu" "znver1")
958                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
959                                    (and (eq_attr "type" "ssecmp")
960                                         (eq_attr "memory" "none"))))
961                          "znver1-direct,znver1-fp0|znver1-fp1")
963 (define_insn_reservation "znver1_sse_cmp_load" 8
964                          (and (eq_attr "cpu" "znver1")
965                               (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
966                                    (and (eq_attr "type" "ssecmp")
967                                         (eq_attr "memory" "load"))))
968                          "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
970 (define_insn_reservation "znver1_sse_cmp_avx256" 1
971                          (and (eq_attr "cpu" "znver1")
972                               (and (eq_attr "mode" "V8SF,V4DF")
973                                    (and (eq_attr "type" "ssecmp")
974                                         (eq_attr "memory" "none"))))
975                         "znver1-double,znver1-fp0|znver1-fp1")
977 (define_insn_reservation "znver1_sse_cmp_avx256_load" 8
978                          (and (eq_attr "cpu" "znver1")
979                               (and (eq_attr "mode" "V8SF,V4DF")
980                                    (and (eq_attr "type" "ssecmp")
981                                         (eq_attr "memory" "load"))))
982                          "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
984 (define_insn_reservation "znver1_sse_icmp" 1
985                          (and (eq_attr "cpu" "znver1")
986                               (and (eq_attr "mode" "QI,HI,SI,DI,TI")
987                                    (and (eq_attr "type" "ssecmp")
988                                         (eq_attr "memory" "none"))))
989                          "znver1-direct,znver1-fp0|znver1-fp3")
991 (define_insn_reservation "znver1_sse_icmp_load" 8
992                          (and (eq_attr "cpu" "znver1")
993                               (and (eq_attr "mode" "QI,HI,SI,DI,TI")
994                                    (and (eq_attr "type" "ssecmp")
995                                         (eq_attr "memory" "load"))))
996                          "znver1-direct,znver1-load,znver1-fp0|znver1-fp3")
998 (define_insn_reservation "znver1_sse_icmp_avx256" 1
999                          (and (eq_attr "cpu" "znver1")
1000                               (and (eq_attr "mode" "OI")
1001                                    (and (eq_attr "type" "ssecmp")
1002                                         (eq_attr "memory" "none"))))
1003                          "znver1-double,znver1-fp0|znver1-fp3")
1005 (define_insn_reservation "znver1_sse_icmp_avx256_load" 8
1006                          (and (eq_attr "cpu" "znver1")
1007                               (and (eq_attr "mode" "OI")
1008                                    (and (eq_attr "type" "ssecmp")
1009                                         (eq_attr "memory" "load"))))
1010                          "znver1-double,znver1-load,znver1-fp0|znver1-fp3")