llvm.org GIT mirror llvm / 36dd4b4
[X86][Broadwell] Merge multiple InstrRW entries that map to the same SchedWriteRes group (NFCI) (PR35955) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328076 91177308-0d34-0410-b5e6-96231b3b80d8 Craig Topper 2 years ago
1 changed file(s) with 1965 addition(s) and 1996 deletion(s). Raw diff Collapse all Expand all
267267 let NumMicroOps = 1;
268268 let ResourceCycles = [1];
269269 }
270 def: InstRW<[BWWriteResGroup1], (instregex "MMX_MOVD64from64rr")>;
271 def: InstRW<[BWWriteResGroup1], (instregex "MMX_MOVD64grr")>;
272 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PMOVMSKBrr")>;
273 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSLLDri")>;
274 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSLLDrr")>;
275 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSLLQri")>;
276 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSLLQrr")>;
277 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSLLWri")>;
278 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSLLWrr")>;
279 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSRADri")>;
280 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSRADrr")>;
281 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSRAWri")>;
282 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSRAWrr")>;
283 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSRLDri")>;
284 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSRLDrr")>;
285 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSRLQri")>;
286 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSRLQrr")>;
287 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSRLWri")>;
288 def: InstRW<[BWWriteResGroup1], (instregex "MMX_PSRLWrr")>;
289 def: InstRW<[BWWriteResGroup1], (instregex "MOVPDI2DIrr")>;
290 def: InstRW<[BWWriteResGroup1], (instregex "MOVPQIto64rr")>;
291 def: InstRW<[BWWriteResGroup1], (instregex "PSLLDri")>;
292 def: InstRW<[BWWriteResGroup1], (instregex "PSLLQri")>;
293 def: InstRW<[BWWriteResGroup1], (instregex "PSLLWri")>;
294 def: InstRW<[BWWriteResGroup1], (instregex "PSRADri")>;
295 def: InstRW<[BWWriteResGroup1], (instregex "PSRAWri")>;
296 def: InstRW<[BWWriteResGroup1], (instregex "PSRLDri")>;
297 def: InstRW<[BWWriteResGroup1], (instregex "PSRLQri")>;
298 def: InstRW<[BWWriteResGroup1], (instregex "PSRLWri")>;
299 def: InstRW<[BWWriteResGroup1], (instregex "VMOVPDI2DIrr")>;
300 def: InstRW<[BWWriteResGroup1], (instregex "VMOVPQIto64rr")>;
301 def: InstRW<[BWWriteResGroup1], (instregex "VPSLLDYri")>;
302 def: InstRW<[BWWriteResGroup1], (instregex "VPSLLDri")>;
303 def: InstRW<[BWWriteResGroup1], (instregex "VPSLLQYri")>;
304 def: InstRW<[BWWriteResGroup1], (instregex "VPSLLQri")>;
305 def: InstRW<[BWWriteResGroup1], (instregex "VPSLLVQYrr")>;
306 def: InstRW<[BWWriteResGroup1], (instregex "VPSLLVQrr")>;
307 def: InstRW<[BWWriteResGroup1], (instregex "VPSLLWYri")>;
308 def: InstRW<[BWWriteResGroup1], (instregex "VPSLLWri")>;
309 def: InstRW<[BWWriteResGroup1], (instregex "VPSRADYri")>;
310 def: InstRW<[BWWriteResGroup1], (instregex "VPSRADri")>;
311 def: InstRW<[BWWriteResGroup1], (instregex "VPSRAWYri")>;
312 def: InstRW<[BWWriteResGroup1], (instregex "VPSRAWri")>;
313 def: InstRW<[BWWriteResGroup1], (instregex "VPSRLDYri")>;
314 def: InstRW<[BWWriteResGroup1], (instregex "VPSRLDri")>;
315 def: InstRW<[BWWriteResGroup1], (instregex "VPSRLQYri")>;
316 def: InstRW<[BWWriteResGroup1], (instregex "VPSRLQri")>;
317 def: InstRW<[BWWriteResGroup1], (instregex "VPSRLVQYrr")>;
318 def: InstRW<[BWWriteResGroup1], (instregex "VPSRLVQrr")>;
319 def: InstRW<[BWWriteResGroup1], (instregex "VPSRLWYri")>;
320 def: InstRW<[BWWriteResGroup1], (instregex "VPSRLWri")>;
321 def: InstRW<[BWWriteResGroup1], (instregex "VTESTPDYrr")>;
322 def: InstRW<[BWWriteResGroup1], (instregex "VTESTPDrr")>;
323 def: InstRW<[BWWriteResGroup1], (instregex "VTESTPSYrr")>;
324 def: InstRW<[BWWriteResGroup1], (instregex "VTESTPSrr")>;
270 def: InstRW<[BWWriteResGroup1], (instregex "MMX_MOVD64from64rr",
271 "MMX_MOVD64grr",
272 "MMX_PMOVMSKBrr",
273 "MMX_PSLLDri",
274 "MMX_PSLLDrr",
275 "MMX_PSLLQri",
276 "MMX_PSLLQrr",
277 "MMX_PSLLWri",
278 "MMX_PSLLWrr",
279 "MMX_PSRADri",
280 "MMX_PSRADrr",
281 "MMX_PSRAWri",
282 "MMX_PSRAWrr",
283 "MMX_PSRLDri",
284 "MMX_PSRLDrr",
285 "MMX_PSRLQri",
286 "MMX_PSRLQrr",
287 "MMX_PSRLWri",
288 "MMX_PSRLWrr",
289 "MOVPDI2DIrr",
290 "MOVPQIto64rr",
291 "PSLLDri",
292 "PSLLQri",
293 "PSLLWri",
294 "PSRADri",
295 "PSRAWri",
296 "PSRLDri",
297 "PSRLQri",
298 "PSRLWri",
299 "VMOVPDI2DIrr",
300 "VMOVPQIto64rr",
301 "VPSLLDYri",
302 "VPSLLDri",
303 "VPSLLQYri",
304 "VPSLLQri",
305 "VPSLLVQYrr",
306 "VPSLLVQrr",
307 "VPSLLWYri",
308 "VPSLLWri",
309 "VPSRADYri",
310 "VPSRADri",
311 "VPSRAWYri",
312 "VPSRAWri",
313 "VPSRLDYri",
314 "VPSRLDri",
315 "VPSRLQYri",
316 "VPSRLQri",
317 "VPSRLVQYrr",
318 "VPSRLVQrr",
319 "VPSRLWYri",
320 "VPSRLWri",
321 "VTESTPDYrr",
322 "VTESTPDrr",
323 "VTESTPSYrr",
324 "VTESTPSrr")>;
325325
326326 def BWWriteResGroup2 : SchedWriteRes<[BWPort1]> {
327327 let Latency = 1;
328328 let NumMicroOps = 1;
329329 let ResourceCycles = [1];
330330 }
331 def: InstRW<[BWWriteResGroup2], (instregex "COMP_FST0r")>;
332 def: InstRW<[BWWriteResGroup2], (instregex "COM_FST0r")>;
333 def: InstRW<[BWWriteResGroup2], (instregex "UCOM_FPr")>;
334 def: InstRW<[BWWriteResGroup2], (instregex "UCOM_Fr")>;
331 def: InstRW<[BWWriteResGroup2], (instregex "COMP_FST0r",
332 "COM_FST0r",
333 "UCOM_FPr",
334 "UCOM_Fr")>;
335335
336336 def BWWriteResGroup3 : SchedWriteRes<[BWPort5]> {
337337 let Latency = 1;
338338 let NumMicroOps = 1;
339339 let ResourceCycles = [1];
340340 }
341 def: InstRW<[BWWriteResGroup3], (instregex "ANDNPDrr")>;
342 def: InstRW<[BWWriteResGroup3], (instregex "ANDNPSrr")>;
343 def: InstRW<[BWWriteResGroup3], (instregex "ANDPDrr")>;
344 def: InstRW<[BWWriteResGroup3], (instregex "ANDPSrr")>;
345 def: InstRW<[BWWriteResGroup3], (instregex "INSERTPSrr")>;
346 def: InstRW<[BWWriteResGroup3], (instregex "MMX_MOVD64rr")>;
347 def: InstRW<[BWWriteResGroup3], (instregex "MMX_MOVD64to64rr")>;
348 def: InstRW<[BWWriteResGroup3], (instregex "MMX_MOVQ2DQrr")>;
349 def: InstRW<[BWWriteResGroup3], (instregex "MMX_PALIGNRrri")>;
350 def: InstRW<[BWWriteResGroup3], (instregex "MMX_PSHUFBrr")>;
351 def: InstRW<[BWWriteResGroup3], (instregex "MMX_PSHUFWri")>;
352 def: InstRW<[BWWriteResGroup3], (instregex "MMX_PUNPCKHBWirr")>;
353 def: InstRW<[BWWriteResGroup3], (instregex "MMX_PUNPCKHDQirr")>;
354 def: InstRW<[BWWriteResGroup3], (instregex "MMX_PUNPCKHWDirr")>;
355 def: InstRW<[BWWriteResGroup3], (instregex "MMX_PUNPCKLBWirr")>;
356 def: InstRW<[BWWriteResGroup3], (instregex "MMX_PUNPCKLDQirr")>;
357 def: InstRW<[BWWriteResGroup3], (instregex "MMX_PUNPCKLWDirr")>;
358 def: InstRW<[BWWriteResGroup3], (instregex "MOV64toPQIrr")>;
359 def: InstRW<[BWWriteResGroup3], (instregex "MOVAPDrr")>;
360 def: InstRW<[BWWriteResGroup3], (instregex "MOVAPSrr")>;
361 def: InstRW<[BWWriteResGroup3], (instregex "MOVDDUPrr")>;
362 def: InstRW<[BWWriteResGroup3], (instregex "MOVDI2PDIrr")>;
363 def: InstRW<[BWWriteResGroup3], (instregex "MOVHLPSrr")>;
364 def: InstRW<[BWWriteResGroup3], (instregex "MOVLHPSrr")>;
365 def: InstRW<[BWWriteResGroup3], (instregex "MOVSDrr")>;
366 def: InstRW<[BWWriteResGroup3], (instregex "MOVSHDUPrr")>;
367 def: InstRW<[BWWriteResGroup3], (instregex "MOVSLDUPrr")>;
368 def: InstRW<[BWWriteResGroup3], (instregex "MOVSSrr")>;
369 def: InstRW<[BWWriteResGroup3], (instregex "MOVUPDrr")>;
370 def: InstRW<[BWWriteResGroup3], (instregex "MOVUPSrr")>;
371 def: InstRW<[BWWriteResGroup3], (instregex "ORPDrr")>;
372 def: InstRW<[BWWriteResGroup3], (instregex "ORPSrr")>;
373 def: InstRW<[BWWriteResGroup3], (instregex "PACKSSDWrr")>;
374 def: InstRW<[BWWriteResGroup3], (instregex "PACKSSWBrr")>;
375 def: InstRW<[BWWriteResGroup3], (instregex "PACKUSDWrr")>;
376 def: InstRW<[BWWriteResGroup3], (instregex "PACKUSWBrr")>;
377 def: InstRW<[BWWriteResGroup3], (instregex "PALIGNRrri")>;
378 def: InstRW<[BWWriteResGroup3], (instregex "PBLENDWrri")>;
379 def: InstRW<[BWWriteResGroup3], (instregex "PMOVSXBDrr")>;
380 def: InstRW<[BWWriteResGroup3], (instregex "PMOVSXBQrr")>;
381 def: InstRW<[BWWriteResGroup3], (instregex "PMOVSXBWrr")>;
382 def: InstRW<[BWWriteResGroup3], (instregex "PMOVSXDQrr")>;
383 def: InstRW<[BWWriteResGroup3], (instregex "PMOVSXWDrr")>;
384 def: InstRW<[BWWriteResGroup3], (instregex "PMOVSXWQrr")>;
385 def: InstRW<[BWWriteResGroup3], (instregex "PMOVZXBDrr")>;
386 def: InstRW<[BWWriteResGroup3], (instregex "PMOVZXBQrr")>;
387 def: InstRW<[BWWriteResGroup3], (instregex "PMOVZXBWrr")>;
388 def: InstRW<[BWWriteResGroup3], (instregex "PMOVZXDQrr")>;
389 def: InstRW<[BWWriteResGroup3], (instregex "PMOVZXWDrr")>;
390 def: InstRW<[BWWriteResGroup3], (instregex "PMOVZXWQrr")>;
391 def: InstRW<[BWWriteResGroup3], (instregex "PSHUFBrr")>;
392 def: InstRW<[BWWriteResGroup3], (instregex "PSHUFDri")>;
393 def: InstRW<[BWWriteResGroup3], (instregex "PSHUFHWri")>;
394 def: InstRW<[BWWriteResGroup3], (instregex "PSHUFLWri")>;
395 def: InstRW<[BWWriteResGroup3], (instregex "PSLLDQri")>;
396 def: InstRW<[BWWriteResGroup3], (instregex "PSRLDQri")>;
397 def: InstRW<[BWWriteResGroup3], (instregex "PUNPCKHBWrr")>;
398 def: InstRW<[BWWriteResGroup3], (instregex "PUNPCKHDQrr")>;
399 def: InstRW<[BWWriteResGroup3], (instregex "PUNPCKHQDQrr")>;
400 def: InstRW<[BWWriteResGroup3], (instregex "PUNPCKHWDrr")>;
401 def: InstRW<[BWWriteResGroup3], (instregex "PUNPCKLBWrr")>;
402 def: InstRW<[BWWriteResGroup3], (instregex "PUNPCKLDQrr")>;
403 def: InstRW<[BWWriteResGroup3], (instregex "PUNPCKLQDQrr")>;
404 def: InstRW<[BWWriteResGroup3], (instregex "PUNPCKLWDrr")>;
405 def: InstRW<[BWWriteResGroup3], (instregex "SHUFPDrri")>;
406 def: InstRW<[BWWriteResGroup3], (instregex "SHUFPSrri")>;
407 def: InstRW<[BWWriteResGroup3], (instregex "UNPCKHPDrr")>;
408 def: InstRW<[BWWriteResGroup3], (instregex "UNPCKHPSrr")>;
409 def: InstRW<[BWWriteResGroup3], (instregex "UNPCKLPDrr")>;
410 def: InstRW<[BWWriteResGroup3], (instregex "UNPCKLPSrr")>;
411 def: InstRW<[BWWriteResGroup3], (instregex "VANDNPDYrr")>;
412 def: InstRW<[BWWriteResGroup3], (instregex "VANDNPDrr")>;
413 def: InstRW<[BWWriteResGroup3], (instregex "VANDNPSYrr")>;
414 def: InstRW<[BWWriteResGroup3], (instregex "VANDNPSrr")>;
415 def: InstRW<[BWWriteResGroup3], (instregex "VANDPDYrr")>;
416 def: InstRW<[BWWriteResGroup3], (instregex "VANDPDrr")>;
417 def: InstRW<[BWWriteResGroup3], (instregex "VANDPSYrr")>;
418 def: InstRW<[BWWriteResGroup3], (instregex "VANDPSrr")>;
419 def: InstRW<[BWWriteResGroup3], (instregex "VBROADCASTSSrr")>;
420 def: InstRW<[BWWriteResGroup3], (instregex "VINSERTPSrr")>;
421 def: InstRW<[BWWriteResGroup3], (instregex "VMOV64toPQIrr")>;
422 def: InstRW<[BWWriteResGroup3], (instregex "VMOVAPDYrr")>;
423 def: InstRW<[BWWriteResGroup3], (instregex "VMOVAPDrr")>;
424 def: InstRW<[BWWriteResGroup3], (instregex "VMOVAPSYrr")>;
425 def: InstRW<[BWWriteResGroup3], (instregex "VMOVAPSrr")>;
426 def: InstRW<[BWWriteResGroup3], (instregex "VMOVDDUPYrr")>;
427 def: InstRW<[BWWriteResGroup3], (instregex "VMOVDDUPrr")>;
428 def: InstRW<[BWWriteResGroup3], (instregex "VMOVDI2PDIrr")>;
429 def: InstRW<[BWWriteResGroup3], (instregex "VMOVHLPSrr")>;
430 def: InstRW<[BWWriteResGroup3], (instregex "VMOVLHPSrr")>;
431 def: InstRW<[BWWriteResGroup3], (instregex "VMOVSDrr")>;
432 def: InstRW<[BWWriteResGroup3], (instregex "VMOVSHDUPYrr")>;
433 def: InstRW<[BWWriteResGroup3], (instregex "VMOVSHDUPrr")>;
434 def: InstRW<[BWWriteResGroup3], (instregex "VMOVSLDUPYrr")>;
435 def: InstRW<[BWWriteResGroup3], (instregex "VMOVSLDUPrr")>;
436 def: InstRW<[BWWriteResGroup3], (instregex "VMOVSSrr")>;
437 def: InstRW<[BWWriteResGroup3], (instregex "VMOVUPDYrr")>;
438 def: InstRW<[BWWriteResGroup3], (instregex "VMOVUPDrr")>;
439 def: InstRW<[BWWriteResGroup3], (instregex "VMOVUPSYrr")>;
440 def: InstRW<[BWWriteResGroup3], (instregex "VMOVUPSrr")>;
441 def: InstRW<[BWWriteResGroup3], (instregex "VORPDYrr")>;
442 def: InstRW<[BWWriteResGroup3], (instregex "VORPDrr")>;
443 def: InstRW<[BWWriteResGroup3], (instregex "VORPSYrr")>;
444 def: InstRW<[BWWriteResGroup3], (instregex "VORPSrr")>;
445 def: InstRW<[BWWriteResGroup3], (instregex "VPACKSSDWYrr")>;
446 def: InstRW<[BWWriteResGroup3], (instregex "VPACKSSDWrr")>;
447 def: InstRW<[BWWriteResGroup3], (instregex "VPACKSSWBYrr")>;
448 def: InstRW<[BWWriteResGroup3], (instregex "VPACKSSWBrr")>;
449 def: InstRW<[BWWriteResGroup3], (instregex "VPACKUSDWYrr")>;
450 def: InstRW<[BWWriteResGroup3], (instregex "VPACKUSDWrr")>;
451 def: InstRW<[BWWriteResGroup3], (instregex "VPACKUSWBYrr")>;
452 def: InstRW<[BWWriteResGroup3], (instregex "VPACKUSWBrr")>;
453 def: InstRW<[BWWriteResGroup3], (instregex "VPALIGNRYrri")>;
454 def: InstRW<[BWWriteResGroup3], (instregex "VPALIGNRrri")>;
455 def: InstRW<[BWWriteResGroup3], (instregex "VPBLENDWYrri")>;
456 def: InstRW<[BWWriteResGroup3], (instregex "VPBLENDWrri")>;
457 def: InstRW<[BWWriteResGroup3], (instregex "VPBROADCASTDrr")>;
458 def: InstRW<[BWWriteResGroup3], (instregex "VPBROADCASTQrr")>;
459 def: InstRW<[BWWriteResGroup3], (instregex "VPERMILPDYri")>;
460 def: InstRW<[BWWriteResGroup3], (instregex "VPERMILPDYrr")>;
461 def: InstRW<[BWWriteResGroup3], (instregex "VPERMILPDri")>;
462 def: InstRW<[BWWriteResGroup3], (instregex "VPERMILPDrr")>;
463 def: InstRW<[BWWriteResGroup3], (instregex "VPERMILPSYri")>;
464 def: InstRW<[BWWriteResGroup3], (instregex "VPERMILPSYrr")>;
465 def: InstRW<[BWWriteResGroup3], (instregex "VPERMILPSri")>;
466 def: InstRW<[BWWriteResGroup3], (instregex "VPERMILPSrr")>;
467 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVSXBDrr")>;
468 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVSXBQrr")>;
469 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVSXBWrr")>;
470 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVSXDQrr")>;
471 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVSXWDrr")>;
472 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVSXWQrr")>;
473 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVZXBDrr")>;
474 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVZXBQrr")>;
475 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVZXBWrr")>;
476 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVZXDQrr")>;
477 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVZXWDrr")>;
478 def: InstRW<[BWWriteResGroup3], (instregex "VPMOVZXWQrr")>;
479 def: InstRW<[BWWriteResGroup3], (instregex "VPSHUFBYrr")>;
480 def: InstRW<[BWWriteResGroup3], (instregex "VPSHUFBrr")>;
481 def: InstRW<[BWWriteResGroup3], (instregex "VPSHUFDYri")>;
482 def: InstRW<[BWWriteResGroup3], (instregex "VPSHUFDri")>;
483 def: InstRW<[BWWriteResGroup3], (instregex "VPSHUFHWYri")>;
484 def: InstRW<[BWWriteResGroup3], (instregex "VPSHUFHWri")>;
485 def: InstRW<[BWWriteResGroup3], (instregex "VPSHUFLWYri")>;
486 def: InstRW<[BWWriteResGroup3], (instregex "VPSHUFLWri")>;
487 def: InstRW<[BWWriteResGroup3], (instregex "VPSLLDQYri")>;
488 def: InstRW<[BWWriteResGroup3], (instregex "VPSLLDQri")>;
489 def: InstRW<[BWWriteResGroup3], (instregex "VPSRLDQYri")>;
490 def: InstRW<[BWWriteResGroup3], (instregex "VPSRLDQri")>;
491 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKHBWYrr")>;
492 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKHBWrr")>;
493 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKHDQYrr")>;
494 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKHDQrr")>;
495 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKHQDQYrr")>;
496 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKHQDQrr")>;
497 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKHWDYrr")>;
498 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKHWDrr")>;
499 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKLBWYrr")>;
500 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKLBWrr")>;
501 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKLDQYrr")>;
502 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKLDQrr")>;
503 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKLQDQYrr")>;
504 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKLQDQrr")>;
505 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKLWDYrr")>;
506 def: InstRW<[BWWriteResGroup3], (instregex "VPUNPCKLWDrr")>;
507 def: InstRW<[BWWriteResGroup3], (instregex "VSHUFPDYrri")>;
508 def: InstRW<[BWWriteResGroup3], (instregex "VSHUFPDrri")>;
509 def: InstRW<[BWWriteResGroup3], (instregex "VSHUFPSYrri")>;
510 def: InstRW<[BWWriteResGroup3], (instregex "VSHUFPSrri")>;
511 def: InstRW<[BWWriteResGroup3], (instregex "VUNPCKHPDYrr")>;
512 def: InstRW<[BWWriteResGroup3], (instregex "VUNPCKHPDrr")>;
513 def: InstRW<[BWWriteResGroup3], (instregex "VUNPCKHPSYrr")>;
514 def: InstRW<[BWWriteResGroup3], (instregex "VUNPCKHPSrr")>;
515 def: InstRW<[BWWriteResGroup3], (instregex "VUNPCKLPDYrr")>;
516 def: InstRW<[BWWriteResGroup3], (instregex "VUNPCKLPDrr")>;
517 def: InstRW<[BWWriteResGroup3], (instregex "VUNPCKLPSYrr")>;
518 def: InstRW<[BWWriteResGroup3], (instregex "VUNPCKLPSrr")>;
519 def: InstRW<[BWWriteResGroup3], (instregex "VXORPDYrr")>;
520 def: InstRW<[BWWriteResGroup3], (instregex "VXORPDrr")>;
521 def: InstRW<[BWWriteResGroup3], (instregex "VXORPSYrr")>;
522 def: InstRW<[BWWriteResGroup3], (instregex "VXORPSrr")>;
523 def: InstRW<[BWWriteResGroup3], (instregex "XORPDrr")>;
524 def: InstRW<[BWWriteResGroup3], (instregex "XORPSrr")>;
341 def: InstRW<[BWWriteResGroup3], (instregex "ANDNPDrr",
342 "ANDNPSrr",
343 "ANDPDrr",
344 "ANDPSrr",
345 "INSERTPSrr",
346 "MMX_MOVD64rr",
347 "MMX_MOVD64to64rr",
348 "MMX_MOVQ2DQrr",
349 "MMX_PALIGNRrri",
350 "MMX_PSHUFBrr",
351 "MMX_PSHUFWri",
352 "MMX_PUNPCKHBWirr",
353 "MMX_PUNPCKHDQirr",
354 "MMX_PUNPCKHWDirr",
355 "MMX_PUNPCKLBWirr",
356 "MMX_PUNPCKLDQirr",
357 "MMX_PUNPCKLWDirr",
358 "MOV64toPQIrr",
359 "MOVAPDrr",
360 "MOVAPSrr",
361 "MOVDDUPrr",
362 "MOVDI2PDIrr",
363 "MOVHLPSrr",
364 "MOVLHPSrr",
365 "MOVSDrr",
366 "MOVSHDUPrr",
367 "MOVSLDUPrr",
368 "MOVSSrr",
369 "MOVUPDrr",
370 "MOVUPSrr",
371 "ORPDrr",
372 "ORPSrr",
373 "PACKSSDWrr",
374 "PACKSSWBrr",
375 "PACKUSDWrr",
376 "PACKUSWBrr",
377 "PALIGNRrri",
378 "PBLENDWrri",
379 "PMOVSXBDrr",
380 "PMOVSXBQrr",
381 "PMOVSXBWrr",
382 "PMOVSXDQrr",
383 "PMOVSXWDrr",
384 "PMOVSXWQrr",
385 "PMOVZXBDrr",
386 "PMOVZXBQrr",
387 "PMOVZXBWrr",
388 "PMOVZXDQrr",
389 "PMOVZXWDrr",
390 "PMOVZXWQrr",
391 "PSHUFBrr",
392 "PSHUFDri",
393 "PSHUFHWri",
394 "PSHUFLWri",
395 "PSLLDQri",
396 "PSRLDQri",
397 "PUNPCKHBWrr",
398 "PUNPCKHDQrr",
399 "PUNPCKHQDQrr",
400 "PUNPCKHWDrr",
401 "PUNPCKLBWrr",
402 "PUNPCKLDQrr",
403 "PUNPCKLQDQrr",
404 "PUNPCKLWDrr",
405 "SHUFPDrri",
406 "SHUFPSrri",
407 "UNPCKHPDrr",
408 "UNPCKHPSrr",
409 "UNPCKLPDrr",
410 "UNPCKLPSrr",
411 "VANDNPDYrr",
412 "VANDNPDrr",
413 "VANDNPSYrr",
414 "VANDNPSrr",
415 "VANDPDYrr",
416 "VANDPDrr",
417 "VANDPSYrr",
418 "VANDPSrr",
419 "VBROADCASTSSrr",
420 "VINSERTPSrr",
421 "VMOV64toPQIrr",
422 "VMOVAPDYrr",
423 "VMOVAPDrr",
424 "VMOVAPSYrr",
425 "VMOVAPSrr",
426 "VMOVDDUPYrr",
427 "VMOVDDUPrr",
428 "VMOVDI2PDIrr",
429 "VMOVHLPSrr",
430 "VMOVLHPSrr",
431 "VMOVSDrr",
432 "VMOVSHDUPYrr",
433 "VMOVSHDUPrr",
434 "VMOVSLDUPYrr",
435 "VMOVSLDUPrr",
436 "VMOVSSrr",
437 "VMOVUPDYrr",
438 "VMOVUPDrr",
439 "VMOVUPSYrr",
440 "VMOVUPSrr",
441 "VORPDYrr",
442 "VORPDrr",
443 "VORPSYrr",
444 "VORPSrr",
445 "VPACKSSDWYrr",
446 "VPACKSSDWrr",
447 "VPACKSSWBYrr",
448 "VPACKSSWBrr",
449 "VPACKUSDWYrr",
450 "VPACKUSDWrr",
451 "VPACKUSWBYrr",
452 "VPACKUSWBrr",
453 "VPALIGNRYrri",
454 "VPALIGNRrri",
455 "VPBLENDWYrri",
456 "VPBLENDWrri",
457 "VPBROADCASTDrr",
458 "VPBROADCASTQrr",
459 "VPERMILPDYri",
460 "VPERMILPDYrr",
461 "VPERMILPDri",
462 "VPERMILPDrr",
463 "VPERMILPSYri",
464 "VPERMILPSYrr",
465 "VPERMILPSri",
466 "VPERMILPSrr",
467 "VPMOVSXBDrr",
468 "VPMOVSXBQrr",
469 "VPMOVSXBWrr",
470 "VPMOVSXDQrr",
471 "VPMOVSXWDrr",
472 "VPMOVSXWQrr",
473 "VPMOVZXBDrr",
474 "VPMOVZXBQrr",
475 "VPMOVZXBWrr",
476 "VPMOVZXDQrr",
477 "VPMOVZXWDrr",
478 "VPMOVZXWQrr",
479 "VPSHUFBYrr",
480 "VPSHUFBrr",
481 "VPSHUFDYri",
482 "VPSHUFDri",
483 "VPSHUFHWYri",
484 "VPSHUFHWri",
485 "VPSHUFLWYri",
486 "VPSHUFLWri",
487 "VPSLLDQYri",
488 "VPSLLDQri",
489 "VPSRLDQYri",
490 "VPSRLDQri",
491 "VPUNPCKHBWYrr",
492 "VPUNPCKHBWrr",
493 "VPUNPCKHDQYrr",
494 "VPUNPCKHDQrr",
495 "VPUNPCKHQDQYrr",
496 "VPUNPCKHQDQrr",
497 "VPUNPCKHWDYrr",
498 "VPUNPCKHWDrr",
499 "VPUNPCKLBWYrr",
500 "VPUNPCKLBWrr",
501 "VPUNPCKLDQYrr",
502 "VPUNPCKLDQrr",
503 "VPUNPCKLQDQYrr",
504 "VPUNPCKLQDQrr",
505 "VPUNPCKLWDYrr",
506 "VPUNPCKLWDrr",
507 "VSHUFPDYrri",
508 "VSHUFPDrri",
509 "VSHUFPSYrri",
510 "VSHUFPSrri",
511 "VUNPCKHPDYrr",
512 "VUNPCKHPDrr",
513 "VUNPCKHPSYrr",
514 "VUNPCKHPSrr",
515 "VUNPCKLPDYrr",
516 "VUNPCKLPDrr",
517 "VUNPCKLPSYrr",
518 "VUNPCKLPSrr",
519 "VXORPDYrr",
520 "VXORPDrr",
521 "VXORPSYrr",
522 "VXORPSrr",
523 "XORPDrr",
524 "XORPSrr")>;
525525
526526 def BWWriteResGroup4 : SchedWriteRes<[BWPort6]> {
527527 let Latency = 1;
535535 let NumMicroOps = 1;
536536 let ResourceCycles = [1];
537537 }
538 def: InstRW<[BWWriteResGroup5], (instregex "FINCSTP")>;
539 def: InstRW<[BWWriteResGroup5], (instregex "FNOP")>;
538 def: InstRW<[BWWriteResGroup5], (instregex "FINCSTP",
539 "FNOP")>;
540540
541541 def BWWriteResGroup6 : SchedWriteRes<[BWPort06]> {
542542 let Latency = 1;
543543 let NumMicroOps = 1;
544544 let ResourceCycles = [1];
545545 }
546 def: InstRW<[BWWriteResGroup6], (instregex "ADC(16|32|64)ri")>;
547 def: InstRW<[BWWriteResGroup6], (instregex "ADC(16|32|64)i")>;
548 def: InstRW<[BWWriteResGroup6], (instregex "ADC(8|16|32|64)rr")>;
549 def: InstRW<[BWWriteResGroup6], (instregex "ADCX(32|64)rr")>;
550 def: InstRW<[BWWriteResGroup6], (instregex "ADOX(32|64)rr")>;
551 def: InstRW<[BWWriteResGroup6], (instregex "BT(16|32|64)ri8")>;
552 def: InstRW<[BWWriteResGroup6], (instregex "BT(16|32|64)rr")>;
553 def: InstRW<[BWWriteResGroup6], (instregex "BTC(16|32|64)ri8")>;
554 def: InstRW<[BWWriteResGroup6], (instregex "BTC(16|32|64)rr")>;
555 def: InstRW<[BWWriteResGroup6], (instregex "BTR(16|32|64)ri8")>;
556 def: InstRW<[BWWriteResGroup6], (instregex "BTR(16|32|64)rr")>;
557 def: InstRW<[BWWriteResGroup6], (instregex "BTS(16|32|64)ri8")>;
558 def: InstRW<[BWWriteResGroup6], (instregex "BTS(16|32|64)rr")>;
559 def: InstRW<[BWWriteResGroup6], (instregex "CDQ")>;
560 def: InstRW<[BWWriteResGroup6], (instregex "CMOV(AE|B|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)(16|32|64)rr")>;
561 def: InstRW<[BWWriteResGroup6], (instregex "CQO")>;
562 def: InstRW<[BWWriteResGroup6], (instregex "J(A|AE|B|BE|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)_1")>;
563 def: InstRW<[BWWriteResGroup6], (instregex "J(A|AE|B|BE|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)_4")>;
564 def: InstRW<[BWWriteResGroup6], (instregex "JMP_1")>;
565 def: InstRW<[BWWriteResGroup6], (instregex "JMP_4")>;
566 def: InstRW<[BWWriteResGroup6], (instregex "RORX(32|64)ri")>;
567 def: InstRW<[BWWriteResGroup6], (instregex "SAR(8|16|32|64)r1")>;
568 def: InstRW<[BWWriteResGroup6], (instregex "SAR(8|16|32|64)ri")>;
569 def: InstRW<[BWWriteResGroup6], (instregex "SARX(32|64)rr")>;
570 def: InstRW<[BWWriteResGroup6], (instregex "SBB(16|32|64)ri")>;
571 def: InstRW<[BWWriteResGroup6], (instregex "SBB(16|32|64)i")>;
572 def: InstRW<[BWWriteResGroup6], (instregex "SBB(8|16|32|64)rr")>;
573 def: InstRW<[BWWriteResGroup6], (instregex "SET(AE|B|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)r")>;
574 def: InstRW<[BWWriteResGroup6], (instregex "SHL(8|16|32|64)r1")>;
575 def: InstRW<[BWWriteResGroup6], (instregex "SHL(8|16|32|64)ri")>;
576 def: InstRW<[BWWriteResGroup6], (instregex "SHLX(32|64)rr")>;
577 def: InstRW<[BWWriteResGroup6], (instregex "SHR(8|16|32|64)r1")>;
578 def: InstRW<[BWWriteResGroup6], (instregex "SHR(8|16|32|64)ri")>;
579 def: InstRW<[BWWriteResGroup6], (instregex "SHRX(32|64)rr")>;
546 def: InstRW<[BWWriteResGroup6], (instregex "ADC(16|32|64)ri",
547 "ADC(16|32|64)i",
548 "ADC(8|16|32|64)rr",
549 "ADCX(32|64)rr",
550 "ADOX(32|64)rr",
551 "BT(16|32|64)ri8",
552 "BT(16|32|64)rr",
553 "BTC(16|32|64)ri8",
554 "BTC(16|32|64)rr",
555 "BTR(16|32|64)ri8",
556 "BTR(16|32|64)rr",
557 "BTS(16|32|64)ri8",
558 "BTS(16|32|64)rr",
559 "CDQ",
560 "CMOV(AE|B|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)(16|32|64)rr",
561 "CQO",
562 "J(A|AE|B|BE|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)_1",
563 "J(A|AE|B|BE|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)_4",
564 "JMP_1",
565 "JMP_4",
566 "RORX(32|64)ri",
567 "SAR(8|16|32|64)r1",
568 "SAR(8|16|32|64)ri",
569 "SARX(32|64)rr",
570 "SBB(16|32|64)ri",
571 "SBB(16|32|64)i",
572 "SBB(8|16|32|64)rr",
573 "SET(AE|B|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)r",
574 "SHL(8|16|32|64)r1",
575 "SHL(8|16|32|64)ri",
576 "SHLX(32|64)rr",
577 "SHR(8|16|32|64)r1",
578 "SHR(8|16|32|64)ri",
579 "SHRX(32|64)rr")>;
580580
581581 def BWWriteResGroup7 : SchedWriteRes<[BWPort15]> {
582582 let Latency = 1;
583583 let NumMicroOps = 1;
584584 let ResourceCycles = [1];
585585 }
586 def: InstRW<[BWWriteResGroup7], (instregex "ANDN(32|64)rr")>;
587 def: InstRW<[BWWriteResGroup7], (instregex "BLSI(32|64)rr")>;
588 def: InstRW<[BWWriteResGroup7], (instregex "BLSMSK(32|64)rr")>;
589 def: InstRW<[BWWriteResGroup7], (instregex "BLSR(32|64)rr")>;
590 def: InstRW<[BWWriteResGroup7], (instregex "BZHI(32|64)rr")>;
591 def: InstRW<[BWWriteResGroup7], (instregex "LEA(16|32|64)(_32)?r")>;
592 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PABSBrr")>;
593 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PABSDrr")>;
594 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PABSWrr")>;
595 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PADDBirr")>;
596 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PADDDirr")>;
597 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PADDQirr")>;
598 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PADDSBirr")>;
599 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PADDSWirr")>;
600 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PADDUSBirr")>;
601 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PADDUSWirr")>;
602 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PADDWirr")>;
603 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PAVGBirr")>;
604 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PAVGWirr")>;
605 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PCMPEQBirr")>;
606 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PCMPEQDirr")>;
607 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PCMPEQWirr")>;
608 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PCMPGTBirr")>;
609 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PCMPGTDirr")>;
610 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PCMPGTWirr")>;
611 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PMAXSWirr")>;
612 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PMAXUBirr")>;
613 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PMINSWirr")>;
614 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PMINUBirr")>;
615 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSIGNBrr")>;
616 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSIGNDrr")>;
617 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSIGNWrr")>;
618 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSUBBirr")>;
619 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSUBDirr")>;
620 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSUBQirr")>;
621 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSUBSBirr")>;
622 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSUBSWirr")>;
623 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSUBUSBirr")>;
624 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSUBUSWirr")>;
625 def: InstRW<[BWWriteResGroup7], (instregex "MMX_PSUBWirr")>;
626 def: InstRW<[BWWriteResGroup7], (instregex "PABSBrr")>;
627 def: InstRW<[BWWriteResGroup7], (instregex "PABSDrr")>;
628 def: InstRW<[BWWriteResGroup7], (instregex "PABSWrr")>;
629 def: InstRW<[BWWriteResGroup7], (instregex "PADDBrr")>;
630 def: InstRW<[BWWriteResGroup7], (instregex "PADDDrr")>;
631 def: InstRW<[BWWriteResGroup7], (instregex "PADDQrr")>;
632 def: InstRW<[BWWriteResGroup7], (instregex "PADDSBrr")>;
633 def: InstRW<[BWWriteResGroup7], (instregex "PADDSWrr")>;
634 def: InstRW<[BWWriteResGroup7], (instregex "PADDUSBrr")>;
635 def: InstRW<[BWWriteResGroup7], (instregex "PADDUSWrr")>;
636 def: InstRW<[BWWriteResGroup7], (instregex "PADDWrr")>;
637 def: InstRW<[BWWriteResGroup7], (instregex "PAVGBrr")>;
638 def: InstRW<[BWWriteResGroup7], (instregex "PAVGWrr")>;
639 def: InstRW<[BWWriteResGroup7], (instregex "PCMPEQBrr")>;
640 def: InstRW<[BWWriteResGroup7], (instregex "PCMPEQDrr")>;
641 def: InstRW<[BWWriteResGroup7], (instregex "PCMPEQQrr")>;
642 def: InstRW<[BWWriteResGroup7], (instregex "PCMPEQWrr")>;
643 def: InstRW<[BWWriteResGroup7], (instregex "PCMPGTBrr")>;
644 def: InstRW<[BWWriteResGroup7], (instregex "PCMPGTDrr")>;
645 def: InstRW<[BWWriteResGroup7], (instregex "PCMPGTWrr")>;
646 def: InstRW<[BWWriteResGroup7], (instregex "PMAXSBrr")>;
647 def: InstRW<[BWWriteResGroup7], (instregex "PMAXSDrr")>;
648 def: InstRW<[BWWriteResGroup7], (instregex "PMAXSWrr")>;
649 def: InstRW<[BWWriteResGroup7], (instregex "PMAXUBrr")>;
650 def: InstRW<[BWWriteResGroup7], (instregex "PMAXUDrr")>;
651 def: InstRW<[BWWriteResGroup7], (instregex "PMAXUWrr")>;
652 def: InstRW<[BWWriteResGroup7], (instregex "PMINSBrr")>;
653 def: InstRW<[BWWriteResGroup7], (instregex "PMINSDrr")>;
654 def: InstRW<[BWWriteResGroup7], (instregex "PMINSWrr")>;
655 def: InstRW<[BWWriteResGroup7], (instregex "PMINUBrr")>;
656 def: InstRW<[BWWriteResGroup7], (instregex "PMINUDrr")>;
657 def: InstRW<[BWWriteResGroup7], (instregex "PMINUWrr")>;
658 def: InstRW<[BWWriteResGroup7], (instregex "PSIGNBrr")>;
659 def: InstRW<[BWWriteResGroup7], (instregex "PSIGNDrr")>;
660 def: InstRW<[BWWriteResGroup7], (instregex "PSIGNWrr")>;
661 def: InstRW<[BWWriteResGroup7], (instregex "PSUBBrr")>;
662 def: InstRW<[BWWriteResGroup7], (instregex "PSUBDrr")>;
663 def: InstRW<[BWWriteResGroup7], (instregex "PSUBQrr")>;
664 def: InstRW<[BWWriteResGroup7], (instregex "PSUBSBrr")>;
665 def: InstRW<[BWWriteResGroup7], (instregex "PSUBSWrr")>;
666 def: InstRW<[BWWriteResGroup7], (instregex "PSUBUSBrr")>;
667 def: InstRW<[BWWriteResGroup7], (instregex "PSUBUSWrr")>;
668 def: InstRW<[BWWriteResGroup7], (instregex "PSUBWrr")>;
669 def: InstRW<[BWWriteResGroup7], (instregex "VPABSBYrr")>;
670 def: InstRW<[BWWriteResGroup7], (instregex "VPABSBrr")>;
671 def: InstRW<[BWWriteResGroup7], (instregex "VPABSDYrr")>;
672 def: InstRW<[BWWriteResGroup7], (instregex "VPABSDrr")>;
673 def: InstRW<[BWWriteResGroup7], (instregex "VPABSWYrr")>;
674 def: InstRW<[BWWriteResGroup7], (instregex "VPABSWrr")>;
675 def: InstRW<[BWWriteResGroup7], (instregex "VPADDBYrr")>;
676 def: InstRW<[BWWriteResGroup7], (instregex "VPADDBrr")>;
677 def: InstRW<[BWWriteResGroup7], (instregex "VPADDDYrr")>;
678 def: InstRW<[BWWriteResGroup7], (instregex "VPADDDrr")>;
679 def: InstRW<[BWWriteResGroup7], (instregex "VPADDQYrr")>;
680 def: InstRW<[BWWriteResGroup7], (instregex "VPADDQrr")>;
681 def: InstRW<[BWWriteResGroup7], (instregex "VPADDSBYrr")>;
682 def: InstRW<[BWWriteResGroup7], (instregex "VPADDSBrr")>;
683 def: InstRW<[BWWriteResGroup7], (instregex "VPADDSWYrr")>;
684 def: InstRW<[BWWriteResGroup7], (instregex "VPADDSWrr")>;
685 def: InstRW<[BWWriteResGroup7], (instregex "VPADDUSBYrr")>;
686 def: InstRW<[BWWriteResGroup7], (instregex "VPADDUSBrr")>;
687 def: InstRW<[BWWriteResGroup7], (instregex "VPADDUSWYrr")>;
688 def: InstRW<[BWWriteResGroup7], (instregex "VPADDUSWrr")>;
689 def: InstRW<[BWWriteResGroup7], (instregex "VPADDWYrr")>;
690 def: InstRW<[BWWriteResGroup7], (instregex "VPADDWrr")>;
691 def: InstRW<[BWWriteResGroup7], (instregex "VPAVGBYrr")>;
692 def: InstRW<[BWWriteResGroup7], (instregex "VPAVGBrr")>;
693 def: InstRW<[BWWriteResGroup7], (instregex "VPAVGWYrr")>;
694 def: InstRW<[BWWriteResGroup7], (instregex "VPAVGWrr")>;
695 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPEQBYrr")>;
696 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPEQBrr")>;
697 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPEQDYrr")>;
698 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPEQDrr")>;
699 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPEQQYrr")>;
700 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPEQQrr")>;
701 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPEQWYrr")>;
702 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPEQWrr")>;
703 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPGTBYrr")>;
704 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPGTBrr")>;
705 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPGTDYrr")>;
706 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPGTDrr")>;
707 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPGTWYrr")>;
708 def: InstRW<[BWWriteResGroup7], (instregex "VPCMPGTWrr")>;
709 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXSBYrr")>;
710 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXSBrr")>;
711 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXSDYrr")>;
712 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXSDrr")>;
713 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXSWYrr")>;
714 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXSWrr")>;
715 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXUBYrr")>;
716 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXUBrr")>;
717 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXUDYrr")>;
718 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXUDrr")>;
719 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXUWYrr")>;
720 def: InstRW<[BWWriteResGroup7], (instregex "VPMAXUWrr")>;
721 def: InstRW<[BWWriteResGroup7], (instregex "VPMINSBYrr")>;
722 def: InstRW<[BWWriteResGroup7], (instregex "VPMINSBrr")>;
723 def: InstRW<[BWWriteResGroup7], (instregex "VPMINSDYrr")>;
724 def: InstRW<[BWWriteResGroup7], (instregex "VPMINSDrr")>;
725 def: InstRW<[BWWriteResGroup7], (instregex "VPMINSWYrr")>;
726 def: InstRW<[BWWriteResGroup7], (instregex "VPMINSWrr")>;
727 def: InstRW<[BWWriteResGroup7], (instregex "VPMINUBYrr")>;
728 def: InstRW<[BWWriteResGroup7], (instregex "VPMINUBrr")>;
729 def: InstRW<[BWWriteResGroup7], (instregex "VPMINUDYrr")>;
730 def: InstRW<[BWWriteResGroup7], (instregex "VPMINUDrr")>;
731 def: InstRW<[BWWriteResGroup7], (instregex "VPMINUWYrr")>;
732 def: InstRW<[BWWriteResGroup7], (instregex "VPMINUWrr")>;
733 def: InstRW<[BWWriteResGroup7], (instregex "VPSIGNBYrr")>;
734 def: InstRW<[BWWriteResGroup7], (instregex "VPSIGNBrr")>;
735 def: InstRW<[BWWriteResGroup7], (instregex "VPSIGNDYrr")>;
736 def: InstRW<[BWWriteResGroup7], (instregex "VPSIGNDrr")>;
737 def: InstRW<[BWWriteResGroup7], (instregex "VPSIGNWYrr")>;
738 def: InstRW<[BWWriteResGroup7], (instregex "VPSIGNWrr")>;
739 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBBYrr")>;
740 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBBrr")>;
741 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBDYrr")>;
742 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBDrr")>;
743 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBQYrr")>;
744 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBQrr")>;
745 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBSBYrr")>;
746 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBSBrr")>;
747 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBSWYrr")>;
748 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBSWrr")>;
749 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBUSBYrr")>;
750 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBUSBrr")>;
751 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBUSWYrr")>;
752 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBUSWrr")>;
753 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBWYrr")>;
754 def: InstRW<[BWWriteResGroup7], (instregex "VPSUBWrr")>;
586 def: InstRW<[BWWriteResGroup7], (instregex "ANDN(32|64)rr",
587 "BLSI(32|64)rr",
588 "BLSMSK(32|64)rr",
589 "BLSR(32|64)rr",
590 "BZHI(32|64)rr",
591 "LEA(16|32|64)(_32)?r",
592 "MMX_PABSBrr",
593 "MMX_PABSDrr",
594 "MMX_PABSWrr",
595 "MMX_PADDBirr",
596 "MMX_PADDDirr",
597 "MMX_PADDQirr",
598 "MMX_PADDSBirr",
599 "MMX_PADDSWirr",
600 "MMX_PADDUSBirr",
601 "MMX_PADDUSWirr",
602 "MMX_PADDWirr",
603 "MMX_PAVGBirr",
604 "MMX_PAVGWirr",
605 "MMX_PCMPEQBirr",
606 "MMX_PCMPEQDirr",
607 "MMX_PCMPEQWirr",
608 "MMX_PCMPGTBirr",
609 "MMX_PCMPGTDirr",
610 "MMX_PCMPGTWirr",
611 "MMX_PMAXSWirr",
612 "MMX_PMAXUBirr",
613 "MMX_PMINSWirr",
614 "MMX_PMINUBirr",
615 "MMX_PSIGNBrr",
616 "MMX_PSIGNDrr",
617 "MMX_PSIGNWrr",
618 "MMX_PSUBBirr",
619 "MMX_PSUBDirr",
620 "MMX_PSUBQirr",
621 "MMX_PSUBSBirr",
622 "MMX_PSUBSWirr",
623 "MMX_PSUBUSBirr",
624 "MMX_PSUBUSWirr",
625 "MMX_PSUBWirr",
626 "PABSBrr",
627 "PABSDrr",
628 "PABSWrr",
629 "PADDBrr",
630 "PADDDrr",
631 "PADDQrr",
632 "PADDSBrr",
633 "PADDSWrr",
634 "PADDUSBrr",
635 "PADDUSWrr",
636 "PADDWrr",
637 "PAVGBrr",
638 "PAVGWrr",
639 "PCMPEQBrr",
640 "PCMPEQDrr",
641 "PCMPEQQrr",
642 "PCMPEQWrr",
643 "PCMPGTBrr",
644 "PCMPGTDrr",
645 "PCMPGTWrr",
646 "PMAXSBrr",
647 "PMAXSDrr",
648 "PMAXSWrr",
649 "PMAXUBrr",
650 "PMAXUDrr",
651 "PMAXUWrr",
652 "PMINSBrr",
653 "PMINSDrr",
654 "PMINSWrr",
655 "PMINUBrr",
656 "PMINUDrr",
657 "PMINUWrr",
658 "PSIGNBrr",
659 "PSIGNDrr",
660 "PSIGNWrr",
661 "PSUBBrr",
662 "PSUBDrr",
663 "PSUBQrr",
664 "PSUBSBrr",
665 "PSUBSWrr",
666 "PSUBUSBrr",
667 "PSUBUSWrr",
668 "PSUBWrr",
669 "VPABSBYrr",
670 "VPABSBrr",
671 "VPABSDYrr",
672 "VPABSDrr",
673 "VPABSWYrr",
674 "VPABSWrr",
675 "VPADDBYrr",
676 "VPADDBrr",
677 "VPADDDYrr",
678 "VPADDDrr",
679 "VPADDQYrr",
680 "VPADDQrr",
681 "VPADDSBYrr",
682 "VPADDSBrr",
683 "VPADDSWYrr",
684 "VPADDSWrr",
685 "VPADDUSBYrr",
686 "VPADDUSBrr",
687 "VPADDUSWYrr",
688 "VPADDUSWrr",
689 "VPADDWYrr",
690 "VPADDWrr",
691 "VPAVGBYrr",
692 "VPAVGBrr",
693 "VPAVGWYrr",
694 "VPAVGWrr",
695 "VPCMPEQBYrr",
696 "VPCMPEQBrr",
697 "VPCMPEQDYrr",
698 "VPCMPEQDrr",
699 "VPCMPEQQYrr",
700 "VPCMPEQQrr",
701 "VPCMPEQWYrr",
702 "VPCMPEQWrr",
703 "VPCMPGTBYrr",
704 "VPCMPGTBrr",
705 "VPCMPGTDYrr",
706 "VPCMPGTDrr",
707 "VPCMPGTWYrr",
708 "VPCMPGTWrr",
709 "VPMAXSBYrr",
710 "VPMAXSBrr",
711 "VPMAXSDYrr",
712 "VPMAXSDrr",
713 "VPMAXSWYrr",
714 "VPMAXSWrr",
715 "VPMAXUBYrr",
716 "VPMAXUBrr",
717 "VPMAXUDYrr",
718 "VPMAXUDrr",
719 "VPMAXUWYrr",
720 "VPMAXUWrr",
721 "VPMINSBYrr",
722 "VPMINSBrr",
723 "VPMINSDYrr",
724 "VPMINSDrr",
725 "VPMINSWYrr",
726 "VPMINSWrr",
727 "VPMINUBYrr",
728 "VPMINUBrr",
729 "VPMINUDYrr",
730 "VPMINUDrr",
731 "VPMINUWYrr",
732 "VPMINUWrr",
733 "VPSIGNBYrr",
734 "VPSIGNBrr",
735 "VPSIGNDYrr",
736 "VPSIGNDrr",
737 "VPSIGNWYrr",
738 "VPSIGNWrr",
739 "VPSUBBYrr",
740 "VPSUBBrr",
741 "VPSUBDYrr",
742 "VPSUBDrr",
743 "VPSUBQYrr",
744 "VPSUBQrr",
745 "VPSUBSBYrr",
746 "VPSUBSBrr",
747 "VPSUBSWYrr",
748 "VPSUBSWrr",
749 "VPSUBUSBYrr",
750 "VPSUBUSBrr",
751 "VPSUBUSWYrr",
752 "VPSUBUSWrr",
753 "VPSUBWYrr",
754 "VPSUBWrr")>;
755755
756756 def BWWriteResGroup8 : SchedWriteRes<[BWPort015]> {
757757 let Latency = 1;
758758 let NumMicroOps = 1;
759759 let ResourceCycles = [1];
760760 }
761 def: InstRW<[BWWriteResGroup8], (instregex "BLENDPDrri")>;
762 def: InstRW<[BWWriteResGroup8], (instregex "BLENDPSrri")>;
763 def: InstRW<[BWWriteResGroup8], (instregex "MMX_MOVQ64rr")>;
764 def: InstRW<[BWWriteResGroup8], (instregex "MMX_PANDNirr")>;
765 def: InstRW<[BWWriteResGroup8], (instregex "MMX_PANDirr")>;
766 def: InstRW<[BWWriteResGroup8], (instregex "MMX_PORirr")>;
767 def: InstRW<[BWWriteResGroup8], (instregex "MMX_PXORirr")>;
768 def: InstRW<[BWWriteResGroup8], (instregex "MOVDQArr")>;
769 def: InstRW<[BWWriteResGroup8], (instregex "MOVDQUrr")>;
770 def: InstRW<[BWWriteResGroup8], (instregex "MOVPQI2QIrr")>;
771 def: InstRW<[BWWriteResGroup8], (instregex "PANDNrr")>;
772 def: InstRW<[BWWriteResGroup8], (instregex "PANDrr")>;
773 def: InstRW<[BWWriteResGroup8], (instregex "PORrr")>;
774 def: InstRW<[BWWriteResGroup8], (instregex "PXORrr")>;
775 def: InstRW<[BWWriteResGroup8], (instregex "VBLENDPDYrri")>;
776 def: InstRW<[BWWriteResGroup8], (instregex "VBLENDPDrri")>;
777 def: InstRW<[BWWriteResGroup8], (instregex "VBLENDPSYrri")>;
778 def: InstRW<[BWWriteResGroup8], (instregex "VBLENDPSrri")>;
779 def: InstRW<[BWWriteResGroup8], (instregex "VMOVDQAYrr")>;
780 def: InstRW<[BWWriteResGroup8], (instregex "VMOVDQArr")>;
781 def: InstRW<[BWWriteResGroup8], (instregex "VMOVDQUYrr")>;
782 def: InstRW<[BWWriteResGroup8], (instregex "VMOVDQUrr")>;
783 def: InstRW<[BWWriteResGroup8], (instregex "VMOVPQI2QIrr")>;
784 def: InstRW<[BWWriteResGroup8], (instregex "VMOVZPQILo2PQIrr")>;
785 def: InstRW<[BWWriteResGroup8], (instregex "VPANDNYrr")>;
786 def: InstRW<[BWWriteResGroup8], (instregex "VPANDNrr")>;
787 def: InstRW<[BWWriteResGroup8], (instregex "VPANDYrr")>;
788 def: InstRW<[BWWriteResGroup8], (instregex "VPANDrr")>;
789 def: InstRW<[BWWriteResGroup8], (instregex "VPBLENDDYrri")>;
790 def: InstRW<[BWWriteResGroup8], (instregex "VPBLENDDrri")>;
791 def: InstRW<[BWWriteResGroup8], (instregex "VPORYrr")>;
792 def: InstRW<[BWWriteResGroup8], (instregex "VPORrr")>;
793 def: InstRW<[BWWriteResGroup8], (instregex "VPXORYrr")>;
794 def: InstRW<[BWWriteResGroup8], (instregex "VPXORrr")>;
761 def: InstRW<[BWWriteResGroup8], (instregex "BLENDPDrri",
762 "BLENDPSrri",
763 "MMX_MOVQ64rr",
764 "MMX_PANDNirr",
765 "MMX_PANDirr",
766 "MMX_PORirr",
767 "MMX_PXORirr",
768 "MOVDQArr",
769 "MOVDQUrr",
770 "MOVPQI2QIrr",
771 "PANDNrr",
772 "PANDrr",
773 "PORrr",
774 "PXORrr",
775 "VBLENDPDYrri",
776 "VBLENDPDrri",
777 "VBLENDPSYrri",
778 "VBLENDPSrri",
779 "VMOVDQAYrr",
780 "VMOVDQArr",
781 "VMOVDQUYrr",
782 "VMOVDQUrr",
783 "VMOVPQI2QIrr",
784 "VMOVZPQILo2PQIrr",
785 "VPANDNYrr",
786 "VPANDNrr",
787 "VPANDYrr",
788 "VPANDrr",
789 "VPBLENDDYrri",
790 "VPBLENDDrri",
791 "VPORYrr",
792 "VPORrr",
793 "VPXORYrr",
794 "VPXORrr")>;
795795
796796 def BWWriteResGroup9 : SchedWriteRes<[BWPort0156]> {
797797 let Latency = 1;
798798 let NumMicroOps = 1;
799799 let ResourceCycles = [1];
800800 }
801 def: InstRW<[BWWriteResGroup9], (instregex "ADD(8|16|32|64)ri")>;
802 def: InstRW<[BWWriteResGroup9], (instregex "ADD(8|16|32|64)rr")>;
803 def: InstRW<[BWWriteResGroup9], (instregex "ADD(8|16|32|64)i")>;
804 def: InstRW<[BWWriteResGroup9], (instregex "AND(8|16|32|64)ri")>;
805 def: InstRW<[BWWriteResGroup9], (instregex "AND(8|16|32|64)rr")>;
806 def: InstRW<[BWWriteResGroup9], (instregex "AND(8|16|32|64)i")>;
807 def: InstRW<[BWWriteResGroup9], (instregex "CBW")>;
808 def: InstRW<[BWWriteResGroup9], (instregex "CLC")>;
809 def: InstRW<[BWWriteResGroup9], (instregex "CMC")>;
810 def: InstRW<[BWWriteResGroup9], (instregex "CMP(8|16|32|64)ri")>;
811 def: InstRW<[BWWriteResGroup9], (instregex "CMP(8|16|32|64)rr")>;
812 def: InstRW<[BWWriteResGroup9], (instregex "CMP(8|16|32|64)i")>;
813801 def: InstRW<[BWWriteResGroup9], (instrs CWDE)>;
814 def: InstRW<[BWWriteResGroup9], (instregex "DEC(8|16|32|64)r")>;
815 def: InstRW<[BWWriteResGroup9], (instregex "INC(8|16|32|64)r")>;
816 def: InstRW<[BWWriteResGroup9], (instregex "LAHF")>;
817 def: InstRW<[BWWriteResGroup9], (instregex "MOV(8|16|32|64)rr")>;
818 def: InstRW<[BWWriteResGroup9], (instregex "MOV(8|16|32|64)ri")>;
819 def: InstRW<[BWWriteResGroup9], (instregex "MOVSX(16|32|64)rr16")>;
820 def: InstRW<[BWWriteResGroup9], (instregex "MOVSX(16|32|64)rr32")>;
821 def: InstRW<[BWWriteResGroup9], (instregex "MOVSX(16|32|64)rr8")>;
822 def: InstRW<[BWWriteResGroup9], (instregex "MOVZX(16|32|64)rr16")>;
823 def: InstRW<[BWWriteResGroup9], (instregex "MOVZX(16|32|64)rr8")>;
824 def: InstRW<[BWWriteResGroup9], (instregex "NEG(8|16|32|64)r")>;
825 def: InstRW<[BWWriteResGroup9], (instregex "NOOP")>;
826 def: InstRW<[BWWriteResGroup9], (instregex "NOT(8|16|32|64)r")>;
827 def: InstRW<[BWWriteResGroup9], (instregex "OR(8|16|32|64)ri")>;
828 def: InstRW<[BWWriteResGroup9], (instregex "OR(8|16|32|64)rr")>;
829 def: InstRW<[BWWriteResGroup9], (instregex "OR(8|16|32|64)i")>;
830 def: InstRW<[BWWriteResGroup9], (instregex "SAHF")>;
831 def: InstRW<[BWWriteResGroup9], (instregex "SGDT64m")>;
832 def: InstRW<[BWWriteResGroup9], (instregex "SIDT64m")>;
833 def: InstRW<[BWWriteResGroup9], (instregex "SLDT64m")>;
834 def: InstRW<[BWWriteResGroup9], (instregex "SMSW16m")>;
835 def: InstRW<[BWWriteResGroup9], (instregex "STC")>;
836 def: InstRW<[BWWriteResGroup9], (instregex "STRm")>;
837 def: InstRW<[BWWriteResGroup9], (instregex "SUB(8|16|32|64)ri")>;
838 def: InstRW<[BWWriteResGroup9], (instregex "SUB(8|16|32|64)rr")>;
839 def: InstRW<[BWWriteResGroup9], (instregex "SUB(8|16|32|64)i")>;
840 def: InstRW<[BWWriteResGroup9], (instregex "SYSCALL")>;
841 def: InstRW<[BWWriteResGroup9], (instregex "TEST(8|16|32|64)rr")>;
842 def: InstRW<[BWWriteResGroup9], (instregex "TEST(8|16|32|64)i")>;
843 def: InstRW<[BWWriteResGroup9], (instregex "TEST(8|16|32|64)ri")>;
844 def: InstRW<[BWWriteResGroup9], (instregex "XCHG(16|32|64)rr")>;
845 def: InstRW<[BWWriteResGroup9], (instregex "XOR(8|16|32|64)ri")>;
846 def: InstRW<[BWWriteResGroup9], (instregex "XOR(8|16|32|64)rr")>;
847 def: InstRW<[BWWriteResGroup9], (instregex "XOR(8|16|32|64)i")>;
802 def: InstRW<[BWWriteResGroup9], (instregex "ADD(8|16|32|64)ri",
803 "ADD(8|16|32|64)rr",
804 "ADD(8|16|32|64)i",
805 "AND(8|16|32|64)ri",
806 "AND(8|16|32|64)rr",
807 "AND(8|16|32|64)i",
808 "CBW",
809 "CLC",
810 "CMC",
811 "CMP(8|16|32|64)ri",
812 "CMP(8|16|32|64)rr",
813 "CMP(8|16|32|64)i",
814 "DEC(8|16|32|64)r",
815 "INC(8|16|32|64)r",
816 "LAHF",
817 "MOV(8|16|32|64)rr",
818 "MOV(8|16|32|64)ri",
819 "MOVSX(16|32|64)rr16",
820 "MOVSX(16|32|64)rr32",
821 "MOVSX(16|32|64)rr8",
822 "MOVZX(16|32|64)rr16",
823 "MOVZX(16|32|64)rr8",
824 "NEG(8|16|32|64)r",
825 "NOOP",
826 "NOT(8|16|32|64)r",
827 "OR(8|16|32|64)ri",
828 "OR(8|16|32|64)rr",
829 "OR(8|16|32|64)i",
830 "SAHF",
831 "SGDT64m",
832 "SIDT64m",
833 "SLDT64m",
834 "SMSW16m",
835 "STC",
836 "STRm",
837 "SUB(8|16|32|64)ri",
838 "SUB(8|16|32|64)rr",
839 "SUB(8|16|32|64)i",
840 "SYSCALL",
841 "TEST(8|16|32|64)rr",
842 "TEST(8|16|32|64)i",
843 "TEST(8|16|32|64)ri",
844 "XCHG(16|32|64)rr",
845 "XOR(8|16|32|64)ri",
846 "XOR(8|16|32|64)rr",
847 "XOR(8|16|32|64)i")>;
848848
849849 def BWWriteResGroup10 : SchedWriteRes<[BWPort4,BWPort237]> {
850850 let Latency = 1;
851851 let NumMicroOps = 2;
852852 let ResourceCycles = [1,1];
853853 }
854 def: InstRW<[BWWriteResGroup10], (instregex "FBSTPm")>;
855 def: InstRW<[BWWriteResGroup10], (instregex "MMX_MOVD64from64rm")>;
856 def: InstRW<[BWWriteResGroup10], (instregex "MMX_MOVD64mr")>;
857 def: InstRW<[BWWriteResGroup10], (instregex "MMX_MOVNTQmr")>;
858 def: InstRW<[BWWriteResGroup10], (instregex "MMX_MOVQ64mr")>;
859 def: InstRW<[BWWriteResGroup10], (instregex "MOV(16|32|64)mr")>;
860 def: InstRW<[BWWriteResGroup10], (instregex "MOV8mi")>;
861 def: InstRW<[BWWriteResGroup10], (instregex "MOV8mr")>;
862 def: InstRW<[BWWriteResGroup10], (instregex "MOVAPDmr")>;
863 def: InstRW<[BWWriteResGroup10], (instregex "MOVAPSmr")>;
864 def: InstRW<[BWWriteResGroup10], (instregex "MOVDQAmr")>;
865 def: InstRW<[BWWriteResGroup10], (instregex "MOVDQUmr")>;
866 def: InstRW<[BWWriteResGroup10], (instregex "MOVHPDmr")>;
867 def: InstRW<[BWWriteResGroup10], (instregex "MOVHPSmr")>;
868 def: InstRW<[BWWriteResGroup10], (instregex "MOVLPDmr")>;
869 def: InstRW<[BWWriteResGroup10], (instregex "MOVLPSmr")>;
870 def: InstRW<[BWWriteResGroup10], (instregex "MOVNTDQmr")>;
871 def: InstRW<[BWWriteResGroup10], (instregex "MOVNTI_64mr")>;
872 def: InstRW<[BWWriteResGroup10], (instregex "MOVNTImr")>;
873 def: InstRW<[BWWriteResGroup10], (instregex "MOVNTPDmr")>;
874 def: InstRW<[BWWriteResGroup10], (instregex "MOVNTPSmr")>;
875 def: InstRW<[BWWriteResGroup10], (instregex "MOVPDI2DImr")>;
876 def: InstRW<[BWWriteResGroup10], (instregex "MOVPQI2QImr")>;
877 def: InstRW<[BWWriteResGroup10], (instregex "MOVPQIto64mr")>;
878 def: InstRW<[BWWriteResGroup10], (instregex "MOVSDmr")>;
879 def: InstRW<[BWWriteResGroup10], (instregex "MOVSSmr")>;
880 def: InstRW<[BWWriteResGroup10], (instregex "MOVUPDmr")>;
881 def: InstRW<[BWWriteResGroup10], (instregex "MOVUPSmr")>;
882 def: InstRW<[BWWriteResGroup10], (instregex "ST_FP32m")>;
883 def: InstRW<[BWWriteResGroup10], (instregex "ST_FP64m")>;
884 def: InstRW<[BWWriteResGroup10], (instregex "ST_FP80m")>;
885 def: InstRW<[BWWriteResGroup10], (instregex "VEXTRACTF128mr")>;
886 def: InstRW<[BWWriteResGroup10], (instregex "VEXTRACTI128mr")>;
887 def: InstRW<[BWWriteResGroup10], (instregex "VMOVAPDYmr")>;
888 def: InstRW<[BWWriteResGroup10], (instregex "VMOVAPDmr")>;
889 def: InstRW<[BWWriteResGroup10], (instregex "VMOVAPSYmr")>;
890 def: InstRW<[BWWriteResGroup10], (instregex "VMOVAPSmr")>;
891 def: InstRW<[BWWriteResGroup10], (instregex "VMOVDQAYmr")>;
892 def: InstRW<[BWWriteResGroup10], (instregex "VMOVDQAmr")>;
893 def: InstRW<[BWWriteResGroup10], (instregex "VMOVDQUYmr")>;
894 def: InstRW<[BWWriteResGroup10], (instregex "VMOVDQUmr")>;
895 def: InstRW<[BWWriteResGroup10], (instregex "VMOVHPDmr")>;
896 def: InstRW<[BWWriteResGroup10], (instregex "VMOVHPSmr")>;
897 def: InstRW<[BWWriteResGroup10], (instregex "VMOVLPDmr")>;
898 def: InstRW<[BWWriteResGroup10], (instregex "VMOVLPSmr")>;
899 def: InstRW<[BWWriteResGroup10], (instregex "VMOVNTDQYmr")>;
900 def: InstRW<[BWWriteResGroup10], (instregex "VMOVNTDQmr")>;
901 def: InstRW<[BWWriteResGroup10], (instregex "VMOVNTPDYmr")>;
902 def: InstRW<[BWWriteResGroup10], (instregex "VMOVNTPDmr")>;
903 def: InstRW<[BWWriteResGroup10], (instregex "VMOVNTPSYmr")>;
904 def: InstRW<[BWWriteResGroup10], (instregex "VMOVNTPSmr")>;
905 def: InstRW<[BWWriteResGroup10], (instregex "VMOVPDI2DImr")>;
906 def: InstRW<[BWWriteResGroup10], (instregex "VMOVPQI2QImr")>;
907 def: InstRW<[BWWriteResGroup10], (instregex "VMOVPQIto64mr")>;
908 def: InstRW<[BWWriteResGroup10], (instregex "VMOVSDmr")>;
909 def: InstRW<[BWWriteResGroup10], (instregex "VMOVSSmr")>;
910 def: InstRW<[BWWriteResGroup10], (instregex "VMOVUPDYmr")>;
911 def: InstRW<[BWWriteResGroup10], (instregex "VMOVUPDmr")>;
912 def: InstRW<[BWWriteResGroup10], (instregex "VMOVUPSYmr")>;
913 def: InstRW<[BWWriteResGroup10], (instregex "VMOVUPSmr")>;
854 def: InstRW<[BWWriteResGroup10], (instregex "FBSTPm",
855 "MMX_MOVD64from64rm",
856 "MMX_MOVD64mr",
857 "MMX_MOVNTQmr",
858 "MMX_MOVQ64mr",
859 "MOV(16|32|64)mr",
860 "MOV8mi",
861 "MOV8mr",
862 "MOVAPDmr",
863 "MOVAPSmr",
864 "MOVDQAmr",
865 "MOVDQUmr",
866 "MOVHPDmr",
867 "MOVHPSmr",
868 "MOVLPDmr",
869 "MOVLPSmr",
870 "MOVNTDQmr",
871 "MOVNTI_64mr",
872 "MOVNTImr",
873 "MOVNTPDmr",
874 "MOVNTPSmr",
875 "MOVPDI2DImr",
876 "MOVPQI2QImr",
877 "MOVPQIto64mr",
878 "MOVSDmr",
879 "MOVSSmr",
880 "MOVUPDmr",
881 "MOVUPSmr",
882 "ST_FP32m",
883 "ST_FP64m",
884 "ST_FP80m",
885 "VEXTRACTF128mr",
886 "VEXTRACTI128mr",
887 "VMOVAPDYmr",
888 "VMOVAPDmr",
889 "VMOVAPSYmr",
890 "VMOVAPSmr",
891 "VMOVDQAYmr",
892 "VMOVDQAmr",
893 "VMOVDQUYmr",
894 "VMOVDQUmr",
895 "VMOVHPDmr",
896 "VMOVHPSmr",
897 "VMOVLPDmr",
898 "VMOVLPSmr",
899 "VMOVNTDQYmr",
900 "VMOVNTDQmr",
901 "VMOVNTPDYmr",
902 "VMOVNTPDmr",
903 "VMOVNTPSYmr",
904 "VMOVNTPSmr",
905 "VMOVPDI2DImr",
906 "VMOVPQI2QImr",
907 "VMOVPQIto64mr",
908 "VMOVSDmr",
909 "VMOVSSmr",
910 "VMOVUPDYmr",
911 "VMOVUPDmr",
912 "VMOVUPSYmr",
913 "VMOVUPSmr")>;
914914
915915 def BWWriteResGroup11 : SchedWriteRes<[BWPort5]> {
916916 let Latency = 2;
917917 let NumMicroOps = 2;
918918 let ResourceCycles = [2];
919919 }
920 def: InstRW<[BWWriteResGroup11], (instregex "BLENDVPDrr0")>;
921 def: InstRW<[BWWriteResGroup11], (instregex "BLENDVPSrr0")>;
922 def: InstRW<[BWWriteResGroup11], (instregex "MMX_PINSRWrr")>;
923 def: InstRW<[BWWriteResGroup11], (instregex "PBLENDVBrr0")>;
924 def: InstRW<[BWWriteResGroup11], (instregex "PINSRBrr")>;
925 def: InstRW<[BWWriteResGroup11], (instregex "PINSRDrr")>;
926 def: InstRW<[BWWriteResGroup11], (instregex "PINSRQrr")>;
927 def: InstRW<[BWWriteResGroup11], (instregex "PINSRWrr")>;
928 def: InstRW<[BWWriteResGroup11], (instregex "VBLENDVPDYrr")>;
929 def: InstRW<[BWWriteResGroup11], (instregex "VBLENDVPDrr")>;
930 def: InstRW<[BWWriteResGroup11], (instregex "VBLENDVPSYrr")>;
931 def: InstRW<[BWWriteResGroup11], (instregex "VBLENDVPSrr")>;
932 def: InstRW<[BWWriteResGroup11], (instregex "VPBLENDVBYrr")>;
933 def: InstRW<[BWWriteResGroup11], (instregex "VPBLENDVBrr")>;
934 def: InstRW<[BWWriteResGroup11], (instregex "VPINSRBrr")>;
935 def: InstRW<[BWWriteResGroup11], (instregex "VPINSRDrr")>;
936 def: InstRW<[BWWriteResGroup11], (instregex "VPINSRQrr")>;
937 def: InstRW<[BWWriteResGroup11], (instregex "VPINSRWrr")>;
920 def: InstRW<[BWWriteResGroup11], (instregex "BLENDVPDrr0",
921 "BLENDVPSrr0",
922 "MMX_PINSRWrr",
923 "PBLENDVBrr0",
924 "PINSRBrr",
925 "PINSRDrr",
926 "PINSRQrr",
927 "PINSRWrr",
928 "VBLENDVPDYrr",
929 "VBLENDVPDrr",
930 "VBLENDVPSYrr",
931 "VBLENDVPSrr",
932 "VPBLENDVBYrr",
933 "VPBLENDVBrr",
934 "VPINSRBrr",
935 "VPINSRDrr",
936 "VPINSRQrr",
937 "VPINSRWrr")>;
938938
939939 def BWWriteResGroup12 : SchedWriteRes<[BWPort01]> {
940940 let Latency = 2;
948948 let NumMicroOps = 2;
949949 let ResourceCycles = [2];
950950 }
951 def: InstRW<[BWWriteResGroup13], (instregex "ROL(8|16|32|64)r1")>;
952 def: InstRW<[BWWriteResGroup13], (instregex "ROL(8|16|32|64)ri")>;
953 def: InstRW<[BWWriteResGroup13], (instregex "ROR(8|16|32|64)r1")>;
954 def: InstRW<[BWWriteResGroup13], (instregex "ROR(8|16|32|64)ri")>;
951 def: InstRW<[BWWriteResGroup13], (instregex "ROL(8|16|32|64)r1",
952 "ROL(8|16|32|64)ri",
953 "ROR(8|16|32|64)r1",
954 "ROR(8|16|32|64)ri")>;
955955
956956 def BWWriteResGroup14 : SchedWriteRes<[BWPort0156]> {
957957 let Latency = 2;
958958 let NumMicroOps = 2;
959959 let ResourceCycles = [2];
960960 }
961 def: InstRW<[BWWriteResGroup14], (instregex "LFENCE")>;
962 def: InstRW<[BWWriteResGroup14], (instregex "MFENCE")>;
963 def: InstRW<[BWWriteResGroup14], (instregex "WAIT")>;
964 def: InstRW<[BWWriteResGroup14], (instregex "XGETBV")>;
961 def: InstRW<[BWWriteResGroup14], (instregex "LFENCE",
962 "MFENCE",
963 "WAIT",
964 "XGETBV")>;
965965
966966 def BWWriteResGroup15 : SchedWriteRes<[BWPort0,BWPort5]> {
967967 let Latency = 2;
968968 let NumMicroOps = 2;
969969 let ResourceCycles = [1,1];
970970 }
971 def: InstRW<[BWWriteResGroup15], (instregex "CVTPS2PDrr")>;
972 def: InstRW<[BWWriteResGroup15], (instregex "CVTSS2SDrr")>;
973 def: InstRW<[BWWriteResGroup15], (instregex "EXTRACTPSrr")>;
974 def: InstRW<[BWWriteResGroup15], (instregex "MMX_PEXTRWrr")>;
975 def: InstRW<[BWWriteResGroup15], (instregex "PEXTRBrr")>;
976 def: InstRW<[BWWriteResGroup15], (instregex "PEXTRDrr")>;
977 def: InstRW<[BWWriteResGroup15], (instregex "PEXTRQrr")>;
978 def: InstRW<[BWWriteResGroup15], (instregex "PEXTRWrr")>;
979 def: InstRW<[BWWriteResGroup15], (instregex "PSLLDrr")>;
980 def: InstRW<[BWWriteResGroup15], (instregex "PSLLQrr")>;
981 def: InstRW<[BWWriteResGroup15], (instregex "PSLLWrr")>;
982 def: InstRW<[BWWriteResGroup15], (instregex "PSRADrr")>;
983 def: InstRW<[BWWriteResGroup15], (instregex "PSRAWrr")>;
984 def: InstRW<[BWWriteResGroup15], (instregex "PSRLDrr")>;
985 def: InstRW<[BWWriteResGroup15], (instregex "PSRLQrr")>;
986 def: InstRW<[BWWriteResGroup15], (instregex "PSRLWrr")>;
987 def: InstRW<[BWWriteResGroup15], (instregex "PTESTrr")>;
988 def: InstRW<[BWWriteResGroup15], (instregex "VCVTPH2PSYrr")>;
989 def: InstRW<[BWWriteResGroup15], (instregex "VCVTPH2PSrr")>;
990 def: InstRW<[BWWriteResGroup15], (instregex "VCVTPS2PDrr")>;
991 def: InstRW<[BWWriteResGroup15], (instregex "VCVTSS2SDrr")>;
992 def: InstRW<[BWWriteResGroup15], (instregex "VEXTRACTPSrr")>;
993 def: InstRW<[BWWriteResGroup15], (instregex "VPEXTRBrr")>;
994 def: InstRW<[BWWriteResGroup15], (instregex "VPEXTRDrr")>;
995 def: InstRW<[BWWriteResGroup15], (instregex "VPEXTRQrr")>;
996 def: InstRW<[BWWriteResGroup15], (instregex "VPEXTRWrr")>;
997 def: InstRW<[BWWriteResGroup15], (instregex "VPSLLDrr")>;
998 def: InstRW<[BWWriteResGroup15], (instregex "VPSLLQrr")>;
999 def: InstRW<[BWWriteResGroup15], (instregex "VPSLLWrr")>;
1000 def: InstRW<[BWWriteResGroup15], (instregex "VPSRADrr")>;
1001 def: InstRW<[BWWriteResGroup15], (instregex "VPSRAWrr")>;
1002 def: InstRW<[BWWriteResGroup15], (instregex "VPSRLDrr")>;
1003 def: InstRW<[BWWriteResGroup15], (instregex "VPSRLQrr")>;
1004 def: InstRW<[BWWriteResGroup15], (instregex "VPSRLWrr")>;
1005 def: InstRW<[BWWriteResGroup15], (instregex "VPTESTrr")>;
971 def: InstRW<[BWWriteResGroup15], (instregex "CVTPS2PDrr",
972 "CVTSS2SDrr",
973 "EXTRACTPSrr",
974 "MMX_PEXTRWrr",
975 "PEXTRBrr",
976 "PEXTRDrr",
977 "PEXTRQrr",
978 "PEXTRWrr",
979 "PSLLDrr",
980 "PSLLQrr",
981 "PSLLWrr",
982 "PSRADrr",
983 "PSRAWrr",
984 "PSRLDrr",
985 "PSRLQrr",
986 "PSRLWrr",
987 "PTESTrr",
988 "VCVTPH2PSYrr",
989 "VCVTPH2PSrr",
990 "VCVTPS2PDrr",
991 "VCVTSS2SDrr",
992 "VEXTRACTPSrr",
993 "VPEXTRBrr",
994 "VPEXTRDrr",
995 "VPEXTRQrr",
996 "VPEXTRWrr",
997 "VPSLLDrr",
998 "VPSLLQrr",
999 "VPSLLWrr",
1000 "VPSRADrr",
1001 "VPSRAWrr",
1002 "VPSRLDrr",
1003 "VPSRLQrr",
1004 "VPSRLWrr",
1005 "VPTESTrr")>;
10061006
10071007 def BWWriteResGroup16 : SchedWriteRes<[BWPort6,BWPort0156]> {
10081008 let Latency = 2;
10301030 let NumMicroOps = 2;
10311031 let ResourceCycles = [1,1];
10321032 }
1033 def: InstRW<[BWWriteResGroup19], (instregex "BEXTR(32|64)rr")>;
1034 def: InstRW<[BWWriteResGroup19], (instregex "BSWAP(16|32|64)r")>;
1033 def: InstRW<[BWWriteResGroup19], (instregex "BEXTR(32|64)rr",
1034 "BSWAP(16|32|64)r")>;
10351035
10361036 def BWWriteResGroup20 : SchedWriteRes<[BWPort06,BWPort0156]> {
10371037 let Latency = 2;
10381038 let NumMicroOps = 2;
10391039 let ResourceCycles = [1,1];
10401040 }
1041 def: InstRW<[BWWriteResGroup20], (instregex "ADC8i8")>;
1042 def: InstRW<[BWWriteResGroup20], (instregex "ADC8ri")>;
1043 def: InstRW<[BWWriteResGroup20], (instregex "CMOV(A|BE)(16|32|64)rr")>;
10441041 def: InstRW<[BWWriteResGroup20], (instrs CWD)>;
10451042 def: InstRW<[BWWriteResGroup20], (instrs JCXZ, JECXZ, JRCXZ)>;
1046 def: InstRW<[BWWriteResGroup20], (instregex "SBB8i8")>;
1047 def: InstRW<[BWWriteResGroup20], (instregex "SBB8ri")>;
1048 def: InstRW<[BWWriteResGroup20], (instregex "SET(A|BE)r")>;
1043 def: InstRW<[BWWriteResGroup20], (instregex "ADC8i8",
1044 "ADC8ri",
1045 "CMOV(A|BE)(16|32|64)rr",
1046 "SBB8i8",
1047 "SBB8ri",
1048 "SET(A|BE)r")>;
10491049
10501050 def BWWriteResGroup21 : SchedWriteRes<[BWPort4,BWPort5,BWPort237]> {
10511051 let Latency = 2;
10521052 let NumMicroOps = 3;
10531053 let ResourceCycles = [1,1,1];
10541054 }
1055 def: InstRW<[BWWriteResGroup21], (instregex "EXTRACTPSmr")>;
1056 def: InstRW<[BWWriteResGroup21], (instregex "PEXTRBmr")>;
1057 def: InstRW<[BWWriteResGroup21], (instregex "PEXTRDmr")>;
1058 def: InstRW<[BWWriteResGroup21], (instregex "PEXTRQmr")>;
1059 def: InstRW<[BWWriteResGroup21], (instregex "PEXTRWmr")>;
1060 def: InstRW<[BWWriteResGroup21], (instregex "STMXCSR")>;
1061 def: InstRW<[BWWriteResGroup21], (instregex "VEXTRACTPSmr")>;
1062 def: InstRW<[BWWriteResGroup21], (instregex "VPEXTRBmr")>;
1063 def: InstRW<[BWWriteResGroup21], (instregex "VPEXTRDmr")>;
1064 def: InstRW<[BWWriteResGroup21], (instregex "VPEXTRQmr")>;
1065 def: InstRW<[BWWriteResGroup21], (instregex "VPEXTRWmr")>;
1066 def: InstRW<[BWWriteResGroup21], (instregex "VSTMXCSR")>;
1055 def: InstRW<[BWWriteResGroup21], (instregex "EXTRACTPSmr",
1056 "PEXTRBmr",
1057 "PEXTRDmr",
1058 "PEXTRQmr",
1059 "PEXTRWmr",
1060 "STMXCSR",
1061 "VEXTRACTPSmr",
1062 "VPEXTRBmr",
1063 "VPEXTRDmr",
1064 "VPEXTRQmr",
1065 "VPEXTRWmr",
1066 "VSTMXCSR")>;
10671067
10681068 def BWWriteResGroup22 : SchedWriteRes<[BWPort4,BWPort6,BWPort237]> {
10691069 let Latency = 2;
10921092 let ResourceCycles = [1,1,1];
10931093 }
10941094 def: InstRW<[BWWriteResGroup25], (instrs PUSH16r, PUSH32r, PUSH64r)>;
1095 def: InstRW<[BWWriteResGroup25], (instregex "PUSH(16|32|64)rmr")>;
1096 def: InstRW<[BWWriteResGroup25], (instregex "PUSH64i8")>;
1097 def: InstRW<[BWWriteResGroup25], (instregex "STOSB")>;
1098 def: InstRW<[BWWriteResGroup25], (instregex "STOSL")>;
1099 def: InstRW<[BWWriteResGroup25], (instregex "STOSQ")>;
1100 def: InstRW<[BWWriteResGroup25], (instregex "STOSW")>;
1095 def: InstRW<[BWWriteResGroup25], (instregex "PUSH(16|32|64)rmr",
1096 "PUSH64i8",
1097 "STOSB",
1098 "STOSL",
1099 "STOSQ",
1100 "STOSW")>;
11011101
11021102 def BWWriteResGroup26 : SchedWriteRes<[BWPort0]> {
11031103 let Latency = 3;
11041104 let NumMicroOps = 1;
11051105 let ResourceCycles = [1];
11061106 }
1107 def: InstRW<[BWWriteResGroup26], (instregex "MOVMSKPDrr")>;
1108 def: InstRW<[BWWriteResGroup26], (instregex "MOVMSKPSrr")>;
1109 def: InstRW<[BWWriteResGroup26], (instregex "PMOVMSKBrr")>;
1110 def: InstRW<[BWWriteResGroup26], (instregex "VMOVMSKPDYrr")>;
1111 def: InstRW<[BWWriteResGroup26], (instregex "VMOVMSKPDrr")>;
1112 def: InstRW<[BWWriteResGroup26], (instregex "VMOVMSKPSYrr")>;
1113 def: InstRW<[BWWriteResGroup26], (instregex "VMOVMSKPSrr")>;
1114 def: InstRW<[BWWriteResGroup26], (instregex "VPMOVMSKBYrr")>;
1115 def: InstRW<[BWWriteResGroup26], (instregex "VPMOVMSKBrr")>;
1107 def: InstRW<[BWWriteResGroup26], (instregex "MOVMSKPDrr",
1108 "MOVMSKPSrr",
1109 "PMOVMSKBrr",
1110 "VMOVMSKPDYrr",
1111 "VMOVMSKPDrr",
1112 "VMOVMSKPSYrr",
1113 "VMOVMSKPSrr",
1114 "VPMOVMSKBYrr",
1115 "VPMOVMSKBrr")>;
11161116
11171117 def BWWriteResGroup27 : SchedWriteRes<[BWPort1]> {
11181118 let Latency = 3;
11191119 let NumMicroOps = 1;
11201120 let ResourceCycles = [1];
11211121 }
1122 def: InstRW<[BWWriteResGroup27], (instregex "ADDPDrr")>;
1123 def: InstRW<[BWWriteResGroup27], (instregex "ADDPSrr")>;
1124 def: InstRW<[BWWriteResGroup27], (instregex "ADDSDrr")>;
1125 def: InstRW<[BWWriteResGroup27], (instregex "ADDSSrr")>;
1126 def: InstRW<[BWWriteResGroup27], (instregex "ADDSUBPDrr")>;
1127 def: InstRW<[BWWriteResGroup27], (instregex "ADDSUBPSrr")>;
1128 def: InstRW<[BWWriteResGroup27], (instregex "ADD_FPrST0")>;
1129 def: InstRW<[BWWriteResGroup27], (instregex "ADD_FST0r")>;
1130 def: InstRW<[BWWriteResGroup27], (instregex "ADD_FrST0")>;
1131 def: InstRW<[BWWriteResGroup27], (instregex "BSF(16|32|64)rr")>;
1132 def: InstRW<[BWWriteResGroup27], (instregex "BSR(16|32|64)rr")>;
1133 def: InstRW<[BWWriteResGroup27], (instregex "CMPPDrri")>;
1134 def: InstRW<[BWWriteResGroup27], (instregex "CMPPSrri")>;
1135 def: InstRW<[BWWriteResGroup27], (instregex "CMPSDrr")>;
1136 def: InstRW<[BWWriteResGroup27], (instregex "CMPSSrr")>;
1137 def: InstRW<[BWWriteResGroup27], (instregex "COMISDrr")>;
1138 def: InstRW<[BWWriteResGroup27], (instregex "COMISSrr")>;
1139 def: InstRW<[BWWriteResGroup27], (instregex "CVTDQ2PSrr")>;
1140 def: InstRW<[BWWriteResGroup27], (instregex "CVTPS2DQrr")>;
1141 def: InstRW<[BWWriteResGroup27], (instregex "CVTTPS2DQrr")>;
11421122 def: InstRW<[BWWriteResGroup27], (instrs IMUL16rr, IMUL32rr, IMUL32rri, IMUL32rri8, IMUL64rr, IMUL64rri32, IMUL64rri8)>;
1143 def: InstRW<[BWWriteResGroup27], (instrs IMUL8r)>;
1144 def: InstRW<[BWWriteResGroup27], (instregex "LZCNT(16|32|64)rr")>;
1145 def: InstRW<[BWWriteResGroup27], (instregex "MAX(C?)PDrr")>;
1146 def: InstRW<[BWWriteResGroup27], (instregex "MAX(C?)PSrr")>;
1147 def: InstRW<[BWWriteResGroup27], (instregex "MAX(C?)SDrr")>;
1148 def: InstRW<[BWWriteResGroup27], (instregex "MAX(C?)SSrr")>;
1149 def: InstRW<[BWWriteResGroup27], (instregex "MIN(C?)PDrr")>;
1150 def: InstRW<[BWWriteResGroup27], (instregex "MIN(C?)PSrr")>;
1151 def: InstRW<[BWWriteResGroup27], (instregex "MIN(C?)SDrr")>;
1152 def: InstRW<[BWWriteResGroup27], (instregex "MIN(C?)SSrr")>;
1153 def: InstRW<[BWWriteResGroup27], (instregex "MMX_CVTPI2PSirr")>;
1154 def: InstRW<[BWWriteResGroup27], (instrs MUL8r)>;
1155 def: InstRW<[BWWriteResGroup27], (instregex "PDEP(32|64)rr")>;
1156 def: InstRW<[BWWriteResGroup27], (instregex "PEXT(32|64)rr")>;
1157 def: InstRW<[BWWriteResGroup27], (instregex "POPCNT(16|32|64)rr")>;
1158 def: InstRW<[BWWriteResGroup27], (instregex "SHLD(16|32|64)rri8")>;
1159 def: InstRW<[BWWriteResGroup27], (instregex "SHRD(16|32|64)rri8")>;
1160 def: InstRW<[BWWriteResGroup27], (instregex "SUBPDrr")>;
1161 def: InstRW<[BWWriteResGroup27], (instregex "SUBPSrr")>;
1162 def: InstRW<[BWWriteResGroup27], (instregex "SUBR_FPrST0")>;
1163 def: InstRW<[BWWriteResGroup27], (instregex "SUBR_FST0r")>;
1164 def: InstRW<[BWWriteResGroup27], (instregex "SUBR_FrST0")>;
1165 def: InstRW<[BWWriteResGroup27], (instregex "SUBSDrr")>;
1166 def: InstRW<[BWWriteResGroup27], (instregex "SUBSSrr")>;
1167 def: InstRW<[BWWriteResGroup27], (instregex "SUB_FPrST0")>;
1168 def: InstRW<[BWWriteResGroup27], (instregex "SUB_FST0r")>;
1169 def: InstRW<[BWWriteResGroup27], (instregex "SUB_FrST0")>;
1170 def: InstRW<[BWWriteResGroup27], (instregex "TZCNT(16|32|64)rr")>;
1171 def: InstRW<[BWWriteResGroup27], (instregex "UCOMISDrr")>;
1172 def: InstRW<[BWWriteResGroup27], (instregex "UCOMISSrr")>;
1173 def: InstRW<[BWWriteResGroup27], (instregex "VADDPDYrr")>;
1174 def: InstRW<[BWWriteResGroup27], (instregex "VADDPDrr")>;
1175 def: InstRW<[BWWriteResGroup27], (instregex "VADDPSYrr")>;
1176 def: InstRW<[BWWriteResGroup27], (instregex "VADDPSrr")>;
1177 def: InstRW<[BWWriteResGroup27], (instregex "VADDSDrr")>;
1178 def: InstRW<[BWWriteResGroup27], (instregex "VADDSSrr")>;
1179 def: InstRW<[BWWriteResGroup27], (instregex "VADDSUBPDYrr")>;
1180 def: InstRW<[BWWriteResGroup27], (instregex "VADDSUBPDrr")>;
1181 def: InstRW<[BWWriteResGroup27], (instregex "VADDSUBPSYrr")>;
1182 def: InstRW<[BWWriteResGroup27], (instregex "VADDSUBPSrr")>;
1183 def: InstRW<[BWWriteResGroup27], (instregex "VCMPPDYrri")>;
1184 def: InstRW<[BWWriteResGroup27], (instregex "VCMPPDrri")>;
1185 def: InstRW<[BWWriteResGroup27], (instregex "VCMPPSYrri")>;
1186 def: InstRW<[BWWriteResGroup27], (instregex "VCMPPSrri")>;
1187 def: InstRW<[BWWriteResGroup27], (instregex "VCMPSDrr")>;
1188 def: InstRW<[BWWriteResGroup27], (instregex "VCMPSSrr")>;
1189 def: InstRW<[BWWriteResGroup27], (instregex "VCOMISDrr")>;
1190 def: InstRW<[BWWriteResGroup27], (instregex "VCOMISSrr")>;
1191 def: InstRW<[BWWriteResGroup27], (instregex "VCVTDQ2PSYrr")>;
1192 def: InstRW<[BWWriteResGroup27], (instregex "VCVTDQ2PSrr")>;
1193 def: InstRW<[BWWriteResGroup27], (instregex "VCVTPS2DQYrr")>;
1194 def: InstRW<[BWWriteResGroup27], (instregex "VCVTPS2DQrr")>;
1195 def: InstRW<[BWWriteResGroup27], (instregex "VCVTTPS2DQYrr")>;
1196 def: InstRW<[BWWriteResGroup27], (instregex "VCVTTPS2DQrr")>;
1197 def: InstRW<[BWWriteResGroup27], (instregex "VMAX(C?)PDYrr")>;
1198 def: InstRW<[BWWriteResGroup27], (instregex "VMAX(C?)PDrr")>;
1199 def: InstRW<[BWWriteResGroup27], (instregex "VMAX(C?)PSYrr")>;
1200 def: InstRW<[BWWriteResGroup27], (instregex "VMAX(C?)PSrr")>;
1201 def: InstRW<[BWWriteResGroup27], (instregex "VMAX(C?)SDrr")>;
1202 def: InstRW<[BWWriteResGroup27], (instregex "VMAX(C?)SSrr")>;
1203 def: InstRW<[BWWriteResGroup27], (instregex "VMIN(C?)PDYrr")>;
1204 def: InstRW<[BWWriteResGroup27], (instregex "VMIN(C?)PDrr")>;
1205 def: InstRW<[BWWriteResGroup27], (instregex "VMIN(C?)PSYrr")>;
1206 def: InstRW<[BWWriteResGroup27], (instregex "VMIN(C?)PSrr")>;
1207 def: InstRW<[BWWriteResGroup27], (instregex "VMIN(C?)SDrr")>;
1208 def: InstRW<[BWWriteResGroup27], (instregex "VMIN(C?)SSrr")>;
1209 def: InstRW<[BWWriteResGroup27], (instregex "VSUBPDYrr")>;
1210 def: InstRW<[BWWriteResGroup27], (instregex "VSUBPDrr")>;
1211 def: InstRW<[BWWriteResGroup27], (instregex "VSUBPSYrr")>;
1212 def: InstRW<[BWWriteResGroup27], (instregex "VSUBPSrr")>;
1213 def: InstRW<[BWWriteResGroup27], (instregex "VSUBSDrr")>;
1214 def: InstRW<[BWWriteResGroup27], (instregex "VSUBSSrr")>;
1215 def: InstRW<[BWWriteResGroup27], (instregex "VUCOMISDrr")>;
1216 def: InstRW<[BWWriteResGroup27], (instregex "VUCOMISSrr")>;
1123 def: InstRW<[BWWriteResGroup27], (instrs IMUL8r, MUL8r)>;
1124 def: InstRW<[BWWriteResGroup27], (instregex "ADDPDrr",
1125 "ADDPSrr",
1126 "ADDSDrr",
1127 "ADDSSrr",
1128 "ADDSUBPDrr",
1129 "ADDSUBPSrr",
1130 "ADD_FPrST0",
1131 "ADD_FST0r",
1132 "ADD_FrST0",
1133 "BSF(16|32|64)rr",
1134 "BSR(16|32|64)rr",
1135 "CMPPDrri",
1136 "CMPPSrri",
1137 "CMPSDrr",
1138 "CMPSSrr",
1139 "COMISDrr",
1140 "COMISSrr",
1141 "CVTDQ2PSrr",
1142 "CVTPS2DQrr",
1143 "CVTTPS2DQrr",
1144 "LZCNT(16|32|64)rr",
1145 "MAX(C?)PDrr",
1146 "MAX(C?)PSrr",
1147 "MAX(C?)SDrr",
1148 "MAX(C?)SSrr",
1149 "MIN(C?)PDrr",
1150 "MIN(C?)PSrr",
1151 "MIN(C?)SDrr",
1152 "MIN(C?)SSrr",
1153 "MMX_CVTPI2PSirr",
1154 "PDEP(32|64)rr",
1155 "PEXT(32|64)rr",
1156 "POPCNT(16|32|64)rr",
1157 "SHLD(16|32|64)rri8",
1158 "SHRD(16|32|64)rri8",
1159 "SUBPDrr",
1160 "SUBPSrr",
1161 "SUBR_FPrST0",
1162 "SUBR_FST0r",
1163 "SUBR_FrST0",
1164 "SUBSDrr",
1165 "SUBSSrr",
1166 "SUB_FPrST0",
1167 "SUB_FST0r",
1168 "SUB_FrST0",
1169 "TZCNT(16|32|64)rr",
1170 "UCOMISDrr",
1171 "UCOMISSrr",
1172 "VADDPDYrr",
1173 "VADDPDrr",
1174 "VADDPSYrr",
1175 "VADDPSrr",
1176 "VADDSDrr",
1177 "VADDSSrr",
1178 "VADDSUBPDYrr",
1179 "VADDSUBPDrr",
1180 "VADDSUBPSYrr",
1181 "VADDSUBPSrr",
1182 "VCMPPDYrri",
1183 "VCMPPDrri",
1184 "VCMPPSYrri",
1185 "VCMPPSrri",
1186 "VCMPSDrr",
1187 "VCMPSSrr",
1188 "VCOMISDrr",
1189 "VCOMISSrr",
1190 "VCVTDQ2PSYrr",
1191 "VCVTDQ2PSrr",
1192 "VCVTPS2DQYrr",
1193 "VCVTPS2DQrr",
1194 "VCVTTPS2DQYrr",
1195 "VCVTTPS2DQrr",
1196 "VMAX(C?)PDYrr",
1197 "VMAX(C?)PDrr",
1198 "VMAX(C?)PSYrr",
1199 "VMAX(C?)PSrr",
1200 "VMAX(C?)SDrr",
1201 "VMAX(C?)SSrr",
1202 "VMIN(C?)PDYrr",
1203 "VMIN(C?)PDrr",
1204 "VMIN(C?)PSYrr",
1205 "VMIN(C?)PSrr",
1206 "VMIN(C?)SDrr",
1207 "VMIN(C?)SSrr",
1208 "VSUBPDYrr",
1209 "VSUBPDrr",
1210 "VSUBPSYrr",
1211 "VSUBPSrr",
1212 "VSUBSDrr",
1213 "VSUBSSrr",
1214 "VUCOMISDrr",
1215 "VUCOMISSrr")>;
12171216
12181217 def BWWriteResGroup27_16 : SchedWriteRes<[BWPort1, BWPort0156]> {
12191218 let Latency = 3;
12271226 let NumMicroOps = 1;
12281227 let ResourceCycles = [1];
12291228 }
1230 def: InstRW<[BWWriteResGroup28], (instregex "VBROADCASTSDYrr")>;
1231 def: InstRW<[BWWriteResGroup28], (instregex "VBROADCASTSSYrr")>;
1232 def: InstRW<[BWWriteResGroup28], (instregex "VEXTRACTF128rr")>;
1233 def: InstRW<[BWWriteResGroup28], (instregex "VEXTRACTI128rr")>;
1234 def: InstRW<[BWWriteResGroup28], (instregex "VINSERTF128rr")>;
1235 def: InstRW<[BWWriteResGroup28], (instregex "VINSERTI128rr")>;
1236 def: InstRW<[BWWriteResGroup28], (instregex "VPBROADCASTBYrr")>;
1237 def: InstRW<[BWWriteResGroup28], (instregex "VPBROADCASTBrr")>;
1238 def: InstRW<[BWWriteResGroup28], (instregex "VPBROADCASTDYrr")>;
1239 def: InstRW<[BWWriteResGroup28], (instregex "VPBROADCASTQYrr")>;
1240 def: InstRW<[BWWriteResGroup28], (instregex "VPBROADCASTWYrr")>;
1241 def: InstRW<[BWWriteResGroup28], (instregex "VPBROADCASTWrr")>;
1242 def: InstRW<[BWWriteResGroup28], (instregex "VPERM2F128rr")>;
1243 def: InstRW<[BWWriteResGroup28], (instregex "VPERM2I128rr")>;
1244 def: InstRW<[BWWriteResGroup28], (instregex "VPERMDYrr")>;
1245 def: InstRW<[BWWriteResGroup28], (instregex "VPERMPDYri")>;
1246 def: InstRW<[BWWriteResGroup28], (instregex "VPERMPSYrr")>;
1247 def: InstRW<[BWWriteResGroup28], (instregex "VPERMQYri")>;
1248 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVSXBDYrr")>;
1249 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVSXBQYrr")>;
1250 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVSXBWYrr")>;
1251 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVSXDQYrr")>;
1252 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVSXWDYrr")>;
1253 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVSXWQYrr")>;
1254 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVZXBDYrr")>;
1255 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVZXBQYrr")>;
1256 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVZXBWYrr")>;
1257 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVZXDQYrr")>;
1258 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVZXWDYrr")>;
1259 def: InstRW<[BWWriteResGroup28], (instregex "VPMOVZXWQYrr")>;
1229 def: InstRW<[BWWriteResGroup28], (instregex "VBROADCASTSDYrr",
1230 "VBROADCASTSSYrr",
1231 "VEXTRACTF128rr",
1232 "VEXTRACTI128rr",
1233 "VINSERTF128rr",
1234 "VINSERTI128rr",
1235 "VPBROADCASTBYrr",
1236 "VPBROADCASTBrr",
1237 "VPBROADCASTDYrr",
1238 "VPBROADCASTQYrr",
1239 "VPBROADCASTWYrr",
1240 "VPBROADCASTWrr",
1241 "VPERM2F128rr",
1242 "VPERM2I128rr",
1243 "VPERMDYrr",
1244 "VPERMPDYri",
1245 "VPERMPSYrr",
1246 "VPERMQYri",
1247 "VPMOVSXBDYrr",
1248 "VPMOVSXBQYrr",
1249 "VPMOVSXBWYrr",
1250 "VPMOVSXDQYrr",
1251 "VPMOVSXWDYrr",
1252 "VPMOVSXWQYrr",
1253 "VPMOVZXBDYrr",
1254 "VPMOVZXBQYrr",
1255 "VPMOVZXBWYrr",
1256 "VPMOVZXDQYrr",
1257 "VPMOVZXWDYrr",
1258 "VPMOVZXWQYrr")>;
12601259
12611260 def BWWriteResGroup29 : SchedWriteRes<[BWPort01]> {
12621261 let Latency = 3;
12631262 let NumMicroOps = 1;
12641263 let ResourceCycles = [1];
12651264 }
1266 def: InstRW<[BWWriteResGroup29], (instregex "MULPDrr")>;
1267 def: InstRW<[BWWriteResGroup29], (instregex "MULPSrr")>;
1268 def: InstRW<[BWWriteResGroup29], (instregex "MULSDrr")>;
1269 def: InstRW<[BWWriteResGroup29], (instregex "MULSSrr")>;
1270 def: InstRW<[BWWriteResGroup29], (instregex "VMULPDYrr")>;
1271 def: InstRW<[BWWriteResGroup29], (instregex "VMULPDrr")>;
1272 def: InstRW<[BWWriteResGroup29], (instregex "VMULPSYrr")>;
1273 def: InstRW<[BWWriteResGroup29], (instregex "VMULPSrr")>;
1274 def: InstRW<[BWWriteResGroup29], (instregex "VMULSDrr")>;
1275 def: InstRW<[BWWriteResGroup29], (instregex "VMULSSrr")>;
1265 def: InstRW<[BWWriteResGroup29], (instregex "MULPDrr",
1266 "MULPSrr",
1267 "MULSDrr",
1268 "MULSSrr",
1269 "VMULPDYrr",
1270 "VMULPDrr",
1271 "VMULPSYrr",
1272 "VMULPSrr",
1273 "VMULSDrr",
1274 "VMULSSrr")>;
12761275
12771276 def BWWriteResGroup30 : SchedWriteRes<[BWPort0156]> {
12781277 let Latency = 3;
12791278 let NumMicroOps = 3;
12801279 let ResourceCycles = [3];
12811280 }
1282 def: InstRW<[BWWriteResGroup30], (instregex "XADD(8|16|32|64)rr")>;
1283 def: InstRW<[BWWriteResGroup30], (instregex "XCHG8rr")>;
1281 def: InstRW<[BWWriteResGroup30], (instregex "XADD(8|16|32|64)rr",
1282 "XCHG8rr")>;
12841283
12851284 def BWWriteResGroup31 : SchedWriteRes<[BWPort0,BWPort5]> {
12861285 let Latency = 3;
12871286 let NumMicroOps = 3;
12881287 let ResourceCycles = [2,1];
12891288 }
1290 def: InstRW<[BWWriteResGroup31], (instregex "VPSLLVDYrr")>;
1291 def: InstRW<[BWWriteResGroup31], (instregex "VPSLLVDrr")>;
1292 def: InstRW<[BWWriteResGroup31], (instregex "VPSRAVDYrr")>;
1293 def: InstRW<[BWWriteResGroup31], (instregex "VPSRAVDrr")>;
1294 def: InstRW<[BWWriteResGroup31], (instregex "VPSRLVDYrr")>;
1295 def: InstRW<[BWWriteResGroup31], (instregex "VPSRLVDrr")>;
1289 def: InstRW<[BWWriteResGroup31], (instregex "VPSLLVDYrr",
1290 "VPSLLVDrr",
1291 "VPSRAVDYrr",
1292 "VPSRAVDrr",
1293 "VPSRLVDYrr",
1294 "VPSRLVDrr")>;
12961295
12971296 def BWWriteResGroup32 : SchedWriteRes<[BWPort5,BWPort15]> {
12981297 let Latency = 3;
12991298 let NumMicroOps = 3;
13001299 let ResourceCycles = [2,1];
13011300 }
1302 def: InstRW<[BWWriteResGroup32], (instregex "MMX_PHADDDrr")>;
1303 def: InstRW<[BWWriteResGroup32], (instregex "MMX_PHADDSWrr")>;
1304 def: InstRW<[BWWriteResGroup32], (instregex "MMX_PHADDWrr")>;
1305 def: InstRW<[BWWriteResGroup32], (instregex "MMX_PHSUBDrr")>;
1306 def: InstRW<[BWWriteResGroup32], (instregex "MMX_PHSUBSWrr")>;
1307 def: InstRW<[BWWriteResGroup32], (instregex "MMX_PHSUBWrr")>;
1308 def: InstRW<[BWWriteResGroup32], (instregex "PHADDDrr")>;
1309 def: InstRW<[BWWriteResGroup32], (instregex "PHADDSWrr")>;
1310 def: InstRW<[BWWriteResGroup32], (instregex "PHADDWrr")>;
1311 def: InstRW<[BWWriteResGroup32], (instregex "PHSUBDrr")>;
1312 def: InstRW<[BWWriteResGroup32], (instregex "PHSUBSWrr")>;
1313 def: InstRW<[BWWriteResGroup32], (instregex "PHSUBWrr")>;
1314 def: InstRW<[BWWriteResGroup32], (instregex "VPHADDDYrr")>;
1315 def: InstRW<[BWWriteResGroup32], (instregex "VPHADDDrr")>;
1316 def: InstRW<[BWWriteResGroup32], (instregex "VPHADDSWYrr")>;
1317 def: InstRW<[BWWriteResGroup32], (instregex "VPHADDSWrr")>;
1318 def: InstRW<[BWWriteResGroup32], (instregex "VPHADDWYrr")>;
1319 def: InstRW<[BWWriteResGroup32], (instregex "VPHADDWrr")>;
1320 def: InstRW<[BWWriteResGroup32], (instregex "VPHSUBDYrr")>;
1321 def: InstRW<[BWWriteResGroup32], (instregex "VPHSUBDrr")>;
1322 def: InstRW<[BWWriteResGroup32], (instregex "VPHSUBSWYrr")>;
1323 def: InstRW<[BWWriteResGroup32], (instregex "VPHSUBSWrr")>;
1324 def: InstRW<[BWWriteResGroup32], (instregex "VPHSUBWYrr")>;
1325 def: InstRW<[BWWriteResGroup32], (instregex "VPHSUBWrr")>;
1301 def: InstRW<[BWWriteResGroup32], (instregex "MMX_PHADDDrr",
1302 "MMX_PHADDSWrr",
1303 "MMX_PHADDWrr",
1304 "MMX_PHSUBDrr",
1305 "MMX_PHSUBSWrr",
1306 "MMX_PHSUBWrr",
1307 "PHADDDrr",
1308 "PHADDSWrr",
1309 "PHADDWrr",
1310 "PHSUBDrr",
1311 "PHSUBSWrr",
1312 "PHSUBWrr",
1313 "VPHADDDYrr",
1314 "VPHADDDrr",
1315 "VPHADDSWYrr",
1316 "VPHADDSWrr",
1317 "VPHADDWYrr",
1318 "VPHADDWrr",
1319 "VPHSUBDYrr",
1320 "VPHSUBDrr",
1321 "VPHSUBSWYrr",
1322 "VPHSUBSWrr",
1323 "VPHSUBWYrr",
1324 "VPHSUBWrr")>;
13261325
13271326 def BWWriteResGroup33 : SchedWriteRes<[BWPort5,BWPort0156]> {
13281327 let Latency = 3;
13291328 let NumMicroOps = 3;
13301329 let ResourceCycles = [2,1];
13311330 }
1332 def: InstRW<[BWWriteResGroup33], (instregex "MMX_PACKSSDWirr")>;
1333 def: InstRW<[BWWriteResGroup33], (instregex "MMX_PACKSSWBirr")>;
1334 def: InstRW<[BWWriteResGroup33], (instregex "MMX_PACKUSWBirr")>;
1331 def: InstRW<[BWWriteResGroup33], (instregex "MMX_PACKSSDWirr",
1332 "MMX_PACKSSWBirr",
1333 "MMX_PACKUSWBirr")>;
13351334
13361335 def BWWriteResGroup34 : SchedWriteRes<[BWPort6,BWPort0156]> {
13371336 let Latency = 3;
13451344 let NumMicroOps = 3;
13461345 let ResourceCycles = [1,2];
13471346 }
1348 def: InstRW<[BWWriteResGroup35], (instregex "RCL(8|16|32|64)r1")>;
1349 def: InstRW<[BWWriteResGroup35], (instregex "RCL(8|16|32|64)ri")>;
1350 def: InstRW<[BWWriteResGroup35], (instregex "RCR(8|16|32|64)r1")>;
1351 def: InstRW<[BWWriteResGroup35], (instregex "RCR(8|16|32|64)ri")>;
1347 def: InstRW<[BWWriteResGroup35], (instregex "RCL(8|16|32|64)r1",
1348 "RCL(8|16|32|64)ri",
1349 "RCR(8|16|32|64)r1",
1350 "RCR(8|16|32|64)ri")>;
13521351
13531352 def BWWriteResGroup36 : SchedWriteRes<[BWPort06,BWPort0156]> {
13541353 let Latency = 3;
13551354 let NumMicroOps = 3;
13561355 let ResourceCycles = [2,1];
13571356 }
1358 def: InstRW<[BWWriteResGroup36], (instregex "ROL(8|16|32|64)rCL")>;
1359 def: InstRW<[BWWriteResGroup36], (instregex "ROR(8|16|32|64)rCL")>;
1360 def: InstRW<[BWWriteResGroup36], (instregex "SAR(8|16|32|64)rCL")>;
1361 def: InstRW<[BWWriteResGroup36], (instregex "SHL(8|16|32|64)rCL")>;
1362 def: InstRW<[BWWriteResGroup36], (instregex "SHR(8|16|32|64)rCL")>;
1357 def: InstRW<[BWWriteResGroup36], (instregex "ROL(8|16|32|64)rCL",
1358 "ROR(8|16|32|64)rCL",
1359 "SAR(8|16|32|64)rCL",
1360 "SHL(8|16|32|64)rCL",
1361 "SHR(8|16|32|64)rCL")>;
13631362
13641363 def BWWriteResGroup37 : SchedWriteRes<[BWPort4,BWPort6,BWPort237,BWPort0156]> {
13651364 let Latency = 3;
13731372 let NumMicroOps = 4;
13741373 let ResourceCycles = [1,1,1,1];
13751374 }
1376 def: InstRW<[BWWriteResGroup38], (instregex "CALL64pcrel32")>;
1377 def: InstRW<[BWWriteResGroup38], (instregex "SET(A|BE)m")>;
1375 def: InstRW<[BWWriteResGroup38], (instregex "CALL64pcrel32",
1376 "SET(A|BE)m")>;
13781377
13791378 def BWWriteResGroup39 : SchedWriteRes<[BWPort0,BWPort1]> {
13801379 let Latency = 4;
13811380 let NumMicroOps = 2;
13821381 let ResourceCycles = [1,1];
13831382 }
1384 def: InstRW<[BWWriteResGroup39], (instregex "CVTSD2SI64rr")>;
1385 def: InstRW<[BWWriteResGroup39], (instregex "CVTSD2SIrr")>;
1386 def: InstRW<[BWWriteResGroup39], (instregex "CVTSS2SI64rr")>;
1387 def: InstRW<[BWWriteResGroup39], (instregex "CVTSS2SIrr")>;
1388 def: InstRW<[BWWriteResGroup39], (instregex "CVTTSD2SI64rr")>;
1389 def: InstRW<[BWWriteResGroup39], (instregex "CVTTSD2SIrr")>;
1390 def: InstRW<[BWWriteResGroup39], (instregex "CVTTSS2SI64rr")>;
1391 def: InstRW<[BWWriteResGroup39], (instregex "CVTTSS2SIrr")>;
1392 def: InstRW<[BWWriteResGroup39], (instregex "VCVTSD2SI64rr")>;
1393 def: InstRW<[BWWriteResGroup39], (instregex "VCVTSD2SIrr")>;
1394 def: InstRW<[BWWriteResGroup39], (instregex "VCVTSS2SI64rr")>;
1395 def: InstRW<[BWWriteResGroup39], (instregex "VCVTSS2SIrr")>;
1396 def: InstRW<[BWWriteResGroup39], (instregex "VCVTTSD2SI64rr")>;
1397 def: InstRW<[BWWriteResGroup39], (instregex "VCVTTSD2SIrr")>;
1398 def: InstRW<[BWWriteResGroup39], (instregex "VCVTTSS2SI64rr")>;
1399 def: InstRW<[BWWriteResGroup39], (instregex "VCVTTSS2SIrr")>;
1383 def: InstRW<[BWWriteResGroup39], (instregex "CVTSD2SI64rr",
1384 "CVTSD2SIrr",
1385 "CVTSS2SI64rr",
1386 "CVTSS2SIrr",
1387 "CVTTSD2SI64rr",
1388 "CVTTSD2SIrr",
1389 "CVTTSS2SI64rr",
1390 "CVTTSS2SIrr",
1391 "VCVTSD2SI64rr",
1392 "VCVTSD2SIrr",
1393 "VCVTSS2SI64rr",
1394 "VCVTSS2SIrr",
1395 "VCVTTSD2SI64rr",
1396 "VCVTTSD2SIrr",
1397 "VCVTTSS2SI64rr",
1398 "VCVTTSS2SIrr")>;
14001399
14011400 def BWWriteResGroup40 : SchedWriteRes<[BWPort0,BWPort5]> {
14021401 let Latency = 4;
14031402 let NumMicroOps = 2;
14041403 let ResourceCycles = [1,1];
14051404 }
1406 def: InstRW<[BWWriteResGroup40], (instregex "VCVTPS2PDYrr")>;
1407 def: InstRW<[BWWriteResGroup40], (instregex "VPSLLDYrr")>;
1408 def: InstRW<[BWWriteResGroup40], (instregex "VPSLLQYrr")>;
1409 def: InstRW<[BWWriteResGroup40], (instregex "VPSLLWYrr")>;
1410 def: InstRW<[BWWriteResGroup40], (instregex "VPSRADYrr")>;
1411 def: InstRW<[BWWriteResGroup40], (instregex "VPSRAWYrr")>;
1412 def: InstRW<[BWWriteResGroup40], (instregex "VPSRLDYrr")>;
1413 def: InstRW<[BWWriteResGroup40], (instregex "VPSRLQYrr")>;
1414 def: InstRW<[BWWriteResGroup40], (instregex "VPSRLWYrr")>;
1415 def: InstRW<[BWWriteResGroup40], (instregex "VPTESTYrr")>;
1405 def: InstRW<[BWWriteResGroup40], (instregex "VCVTPS2PDYrr",
1406 "VPSLLDYrr",
1407 "VPSLLQYrr",
1408 "VPSLLWYrr",
1409 "VPSRADYrr",
1410 "VPSRAWYrr",
1411 "VPSRLDYrr",
1412 "VPSRLQYrr",
1413 "VPSRLWYrr",
1414 "VPTESTYrr")>;
14161415
14171416 def BWWriteResGroup41 : SchedWriteRes<[BWPort0,BWPort0156]> {
14181417 let Latency = 4;
14261425 let NumMicroOps = 2;
14271426 let ResourceCycles = [1,1];
14281427 }
1429 def: InstRW<[BWWriteResGroup42], (instregex "CVTDQ2PDrr")>;
1430 def: InstRW<[BWWriteResGroup42], (instregex "CVTPD2DQrr")>;
1431 def: InstRW<[BWWriteResGroup42], (instregex "CVTPD2PSrr")>;
1432 def: InstRW<[BWWriteResGroup42], (instregex "CVTSD2SSrr")>;
1433 def: InstRW<[BWWriteResGroup42], (instregex "CVTSI642SDrr")>;
1434 def: InstRW<[BWWriteResGroup42], (instregex "CVTSI2SDrr")>;
1435 def: InstRW<[BWWriteResGroup42], (instregex "CVTSI2SSrr")>;
1436 def: InstRW<[BWWriteResGroup42], (instregex "CVTTPD2DQrr")>;
1437 def: InstRW<[BWWriteResGroup42], (instrs IMUL32r, IMUL64r)>;
1438 def: InstRW<[BWWriteResGroup42], (instregex "MMX_CVTPD2PIirr")>;
1439 def: InstRW<[BWWriteResGroup42], (instregex "MMX_CVTPI2PDirr")>;
1440 def: InstRW<[BWWriteResGroup42], (instregex "MMX_CVTPS2PIirr")>;
1441 def: InstRW<[BWWriteResGroup42], (instregex "MMX_CVTTPD2PIirr")>;
1442 def: InstRW<[BWWriteResGroup42], (instregex "MMX_CVTTPS2PIirr")>;
1443 def: InstRW<[BWWriteResGroup42], (instrs MUL32r, MUL64r)>;
1428 def: InstRW<[BWWriteResGroup42], (instrs IMUL32r, IMUL64r, MUL32r, MUL64r)>;
14441429 def: InstRW<[BWWriteResGroup42], (instrs MULX64rr)>;
1445 def: InstRW<[BWWriteResGroup42], (instregex "VCVTDQ2PDrr")>;
1446 def: InstRW<[BWWriteResGroup42], (instregex "VCVTPD2DQrr")>;
1447 def: InstRW<[BWWriteResGroup42], (instregex "VCVTPD2PSrr")>;
1448 def: InstRW<[BWWriteResGroup42], (instregex "VCVTPS2PHrr")>;
1449 def: InstRW<[BWWriteResGroup42], (instregex "VCVTSD2SSrr")>;
1450 def: InstRW<[BWWriteResGroup42], (instregex "VCVTSI642SDrr")>;
1451 def: InstRW<[BWWriteResGroup42], (instregex "VCVTSI2SDrr")>;
1452 def: InstRW<[BWWriteResGroup42], (instregex "VCVTSI2SSrr")>;
1453 def: InstRW<[BWWriteResGroup42], (instregex "VCVTTPD2DQrr")>;
1430 def: InstRW<[BWWriteResGroup42], (instregex "CVTDQ2PDrr",
1431 "CVTPD2DQrr",
1432 "CVTPD2PSrr",
1433 "CVTSD2SSrr",
1434 "CVTSI642SDrr",
1435 "CVTSI2SDrr",
1436 "CVTSI2SSrr",
1437 "CVTTPD2DQrr",
1438 "MMX_CVTPD2PIirr",
1439 "MMX_CVTPI2PDirr",
1440 "MMX_CVTPS2PIirr",
1441 "MMX_CVTTPD2PIirr",
1442 "MMX_CVTTPS2PIirr",
1443 "VCVTDQ2PDrr",
1444 "VCVTPD2DQrr",
1445 "VCVTPD2PSrr",
1446 "VCVTPS2PHrr",
1447 "VCVTSD2SSrr",
1448 "VCVTSI642SDrr",
1449 "VCVTSI2SDrr",
1450 "VCVTSI2SSrr",
1451 "VCVTTPD2DQrr")>;
14541452
14551453 def BWWriteResGroup42_16 : SchedWriteRes<[BWPort1,BWPort06,BWPort0156]> {
14561454 let Latency = 4;
14571455 let NumMicroOps = 4;
14581456 }
1459 def: InstRW<[BWWriteResGroup42_16], (instrs IMUL16r)>;
1460 def: InstRW<[BWWriteResGroup42_16], (instrs MUL16r)>;
1457 def: InstRW<[BWWriteResGroup42_16], (instrs IMUL16r, MUL16r)>;
14611458
14621459 def BWWriteResGroup43 : SchedWriteRes<[BWPort0,BWPort4,BWPort237]> {
14631460 let Latency = 4;
14711468 let NumMicroOps = 3;
14721469 let ResourceCycles = [1,1,1];
14731470 }
1474 def: InstRW<[BWWriteResGroup44], (instregex "ISTT_FP16m")>;
1475 def: InstRW<[BWWriteResGroup44], (instregex "ISTT_FP32m")>;
1476 def: InstRW<[BWWriteResGroup44], (instregex "ISTT_FP64m")>;
1477 def: InstRW<[BWWriteResGroup44], (instregex "IST_F16m")>;
1478 def: InstRW<[BWWriteResGroup44], (instregex "IST_F32m")>;
1479 def: InstRW<[BWWriteResGroup44], (instregex "IST_FP16m")>;
1480 def: InstRW<[BWWriteResGroup44], (instregex "IST_FP32m")>;
1481 def: InstRW<[BWWriteResGroup44], (instregex "IST_FP64m")>;
1482 def: InstRW<[BWWriteResGroup44], (instregex "VCVTPS2PHYmr")>;
1483 def: InstRW<[BWWriteResGroup44], (instregex "VCVTPS2PHmr")>;
1471 def: InstRW<[BWWriteResGroup44], (instregex "ISTT_FP16m",
1472 "ISTT_FP32m",
1473 "ISTT_FP64m",
1474 "IST_F16m",
1475 "IST_F32m",
1476 "IST_FP16m",
1477 "IST_FP32m",
1478 "IST_FP64m",
1479 "VCVTPS2PHYmr",
1480 "VCVTPS2PHmr")>;
14841481
14851482 def BWWriteResGroup45 : SchedWriteRes<[BWPort0156]> {
14861483 let Latency = 4;
15011498 let NumMicroOps = 1;
15021499 let ResourceCycles = [1];
15031500 }
1504 def: InstRW<[BWWriteResGroup47], (instregex "MMX_PMADDUBSWrr")>;
1505 def: InstRW<[BWWriteResGroup47], (instregex "MMX_PMADDWDirr")>;
1506 def: InstRW<[BWWriteResGroup47], (instregex "MMX_PMULHRSWrr")>;
1507 def: InstRW<[BWWriteResGroup47], (instregex "MMX_PMULHUWirr")>;
1508 def: InstRW<[BWWriteResGroup47], (instregex "MMX_PMULHWirr")>;
1509 def: InstRW<[BWWriteResGroup47], (instregex "MMX_PMULLWirr")>;
1510 def: InstRW<[BWWriteResGroup47], (instregex "MMX_PMULUDQirr")>;
1511 def: InstRW<[BWWriteResGroup47], (instregex "MMX_PSADBWirr")>;
1512 def: InstRW<[BWWriteResGroup47], (instregex "MUL_FPrST0")>;
1513 def: InstRW<[BWWriteResGroup47], (instregex "MUL_FST0r")>;
1514 def: InstRW<[BWWriteResGroup47], (instregex "MUL_FrST0")>;
1515 def: InstRW<[BWWriteResGroup47], (instregex "PCLMULQDQrr")>;
1516 def: InstRW<[BWWriteResGroup47], (instregex "PCMPGTQrr")>;
1517 def: InstRW<[BWWriteResGroup47], (instregex "PHMINPOSUWrr")>;
1518 def: InstRW<[BWWriteResGroup47], (instregex "PMADDUBSWrr")>;
1519 def: InstRW<[BWWriteResGroup47], (instregex "PMADDWDrr")>;
1520 def: InstRW<[BWWriteResGroup47], (instregex "PMULDQrr")>;
1521 def: InstRW<[BWWriteResGroup47], (instregex "PMULHRSWrr")>;
1522 def: InstRW<[BWWriteResGroup47], (instregex "PMULHUWrr")>;
1523 def: InstRW<[BWWriteResGroup47], (instregex "PMULHWrr")>;
1524 def: InstRW<[BWWriteResGroup47], (instregex "PMULLWrr")>;
1525 def: InstRW<[BWWriteResGroup47], (instregex "PMULUDQrr")>;
1526 def: InstRW<[BWWriteResGroup47], (instregex "PSADBWrr")>;
1527 def: InstRW<[BWWriteResGroup47], (instregex "RCPPSr")>;
1528 def: InstRW<[BWWriteResGroup47], (instregex "RCPSSr")>;
1529 def: InstRW<[BWWriteResGroup47], (instregex "RSQRTPSr")>;
1530 def: InstRW<[BWWriteResGroup47], (instregex "RSQRTSSr")>;
1531 def: InstRW<[BWWriteResGroup47], (instregex "VPCLMULQDQrr")>;
1532 def: InstRW<[BWWriteResGroup47], (instregex "VPCMPGTQYrr")>;
1533 def: InstRW<[BWWriteResGroup47], (instregex "VPCMPGTQrr")>;
1534 def: InstRW<[BWWriteResGroup47], (instregex "VPHMINPOSUWrr")>;
1535 def: InstRW<[BWWriteResGroup47], (instregex "VPMADDUBSWYrr")>;
1536 def: InstRW<[BWWriteResGroup47], (instregex "VPMADDUBSWrr")>;
1537 def: InstRW<[BWWriteResGroup47], (instregex "VPMADDWDYrr")>;
1538 def: InstRW<[BWWriteResGroup47], (instregex "VPMADDWDrr")>;
1539 def: InstRW<[BWWriteResGroup47], (instregex "VPMULDQYrr")>;
1540 def: InstRW<[BWWriteResGroup47], (instregex "VPMULDQrr")>;
1541 def: InstRW<[BWWriteResGroup47], (instregex "VPMULHRSWYrr")>;
1542 def: InstRW<[BWWriteResGroup47], (instregex "VPMULHRSWrr")>;
1543 def: InstRW<[BWWriteResGroup47], (instregex "VPMULHUWYrr")>;
1544 def: InstRW<[BWWriteResGroup47], (instregex "VPMULHUWrr")>;
1545 def: InstRW<[BWWriteResGroup47], (instregex "VPMULHWYrr")>;
1546 def: InstRW<[BWWriteResGroup47], (instregex "VPMULHWrr")>;
1547 def: InstRW<[BWWriteResGroup47], (instregex "VPMULLWYrr")>;
1548 def: InstRW<[BWWriteResGroup47], (instregex "VPMULLWrr")>;
1549 def: InstRW<[BWWriteResGroup47], (instregex "VPMULUDQYrr")>;
1550 def: InstRW<[BWWriteResGroup47], (instregex "VPMULUDQrr")>;
1551 def: InstRW<[BWWriteResGroup47], (instregex "VPSADBWYrr")>;
1552 def: InstRW<[BWWriteResGroup47], (instregex "VPSADBWrr")>;
1553 def: InstRW<[BWWriteResGroup47], (instregex "VRCPPSr")>;
1554 def: InstRW<[BWWriteResGroup47], (instregex "VRCPSSr")>;
1555 def: InstRW<[BWWriteResGroup47], (instregex "VRSQRTPSr")>;
1556 def: InstRW<[BWWriteResGroup47], (instregex "VRSQRTSSr")>;
1501 def: InstRW<[BWWriteResGroup47], (instregex "MMX_PMADDUBSWrr",
1502 "MMX_PMADDWDirr",
1503 "MMX_PMULHRSWrr",
1504 "MMX_PMULHUWirr",
1505 "MMX_PMULHWirr",
1506 "MMX_PMULLWirr",
1507 "MMX_PMULUDQirr",
1508 "MMX_PSADBWirr",
1509 "MUL_FPrST0",
1510 "MUL_FST0r",
1511 "MUL_FrST0",
1512 "PCLMULQDQrr",
1513 "PCMPGTQrr",
1514 "PHMINPOSUWrr",
1515 "PMADDUBSWrr",
1516 "PMADDWDrr",
1517 "PMULDQrr",
1518 "PMULHRSWrr",
1519 "PMULHUWrr",
1520 "PMULHWrr",
1521 "PMULLWrr",
1522 "PMULUDQrr",
1523 "PSADBWrr",
1524 "RCPPSr",
1525 "RCPSSr",
1526 "RSQRTPSr",
1527 "RSQRTSSr",
1528 "VPCLMULQDQrr",
1529 "VPCMPGTQYrr",
1530 "VPCMPGTQrr",
1531 "VPHMINPOSUWrr",
1532 "VPMADDUBSWYrr",
1533 "VPMADDUBSWrr",
1534 "VPMADDWDYrr",
1535 "VPMADDWDrr",
1536 "VPMULDQYrr",
1537 "VPMULDQrr",
1538 "VPMULHRSWYrr",
1539 "VPMULHRSWrr",
1540 "VPMULHUWYrr",
1541 "VPMULHUWrr",
1542 "VPMULHWYrr",
1543 "VPMULHWrr",
1544 "VPMULLWYrr",
1545 "VPMULLWrr",
1546 "VPMULUDQYrr",
1547 "VPMULUDQrr",
1548 "VPSADBWYrr",
1549 "VPSADBWrr",
1550 "VRCPPSr",
1551 "VRCPSSr",
1552 "VRSQRTPSr",
1553 "VRSQRTSSr")>;
15571554
15581555 def BWWriteResGroup48 : SchedWriteRes<[BWPort01]> {
15591556 let Latency = 5;
15691566 let NumMicroOps = 1;
15701567 let ResourceCycles = [1];
15711568 }
1572 def: InstRW<[BWWriteResGroup49], (instregex "LDDQUrm")>;
1573 def: InstRW<[BWWriteResGroup49], (instregex "MMX_MOVD64rm")>;
1574 def: InstRW<[BWWriteResGroup49], (instregex "MMX_MOVD64to64rm")>;
1575 def: InstRW<[BWWriteResGroup49], (instregex "MMX_MOVQ64rm")>;
1576 def: InstRW<[BWWriteResGroup49], (instregex "MOV(16|32|64)rm")>;
1577 def: InstRW<[BWWriteResGroup49], (instregex "MOV64toPQIrm")>;
1578 def: InstRW<[BWWriteResGroup49], (instregex "MOV8rm")>;
1579 def: InstRW<[BWWriteResGroup49], (instregex "MOVAPDrm")>;
1580 def: InstRW<[BWWriteResGroup49], (instregex "MOVAPSrm")>;
1581 def: InstRW<[BWWriteResGroup49], (instregex "MOVDDUPrm")>;
1582 def: InstRW<[BWWriteResGroup49], (instregex "MOVDI2PDIrm")>;
1583 def: InstRW<[BWWriteResGroup49], (instregex "MOVDQArm")>;
1584 def: InstRW<[BWWriteResGroup49], (instregex "MOVDQUrm")>;
1585 def: InstRW<[BWWriteResGroup49], (instregex "MOVNTDQArm")>;
1586 def: InstRW<[BWWriteResGroup49], (instregex "MOVQI2PQIrm")>;
1587 def: InstRW<[BWWriteResGroup49], (instregex "MOVSDrm")>;
1588 def: InstRW<[BWWriteResGroup49], (instregex "MOVSHDUPrm")>;
1589 def: InstRW<[BWWriteResGroup49], (instregex "MOVSLDUPrm")>;
1590 def: InstRW<[BWWriteResGroup49], (instregex "MOVSSrm")>;
1591 def: InstRW<[BWWriteResGroup49], (instregex "MOVSX(16|32|64)rm16")>;
1592 def: InstRW<[BWWriteResGroup49], (instregex "MOVSX(16|32|64)rm32")>;
1593 def: InstRW<[BWWriteResGroup49], (instregex "MOVSX(16|32|64)rm8")>;
1594 def: InstRW<[BWWriteResGroup49], (instregex "MOVUPDrm")>;
1595 def: InstRW<[BWWriteResGroup49], (instregex "MOVUPSrm")>;
1596 def: InstRW<[BWWriteResGroup49], (instregex "MOVZX(16|32|64)rm16")>;
1597 def: InstRW<[BWWriteResGroup49], (instregex "MOVZX(16|32|64)rm8")>;
1598 def: InstRW<[BWWriteResGroup49], (instregex "PREFETCHNTA")>;
1599 def: InstRW<[BWWriteResGroup49], (instregex "PREFETCHT0")>;
1600 def: InstRW<[BWWriteResGroup49], (instregex "PREFETCHT1")>;
1601 def: InstRW<[BWWriteResGroup49], (instregex "PREFETCHT2")>;
1602 def: InstRW<[BWWriteResGroup49], (instregex "VBROADCASTSSrm")>;
1603 def: InstRW<[BWWriteResGroup49], (instregex "VLDDQUrm")>;
1604 def: InstRW<[BWWriteResGroup49], (instregex "VMOV64toPQIrm")>;
1605 def: InstRW<[BWWriteResGroup49], (instregex "VMOVAPDrm")>;
1606 def: InstRW<[BWWriteResGroup49], (instregex "VMOVAPSrm")>;
1607 def: InstRW<[BWWriteResGroup49], (instregex "VMOVDDUPrm")>;
1608 def: InstRW<[BWWriteResGroup49], (instregex "VMOVDI2PDIrm")>;
1609 def: InstRW<[BWWriteResGroup49], (instregex "VMOVDQArm")>;
1610 def: InstRW<[BWWriteResGroup49], (instregex "VMOVDQUrm")>;
1611 def: InstRW<[BWWriteResGroup49], (instregex "VMOVNTDQArm")>;
1612 def: InstRW<[BWWriteResGroup49], (instregex "VMOVQI2PQIrm")>;
1613 def: InstRW<[BWWriteResGroup49], (instregex "VMOVSDrm")>;
1614 def: InstRW<[BWWriteResGroup49], (instregex "VMOVSHDUPrm")>;
1615 def: InstRW<[BWWriteResGroup49], (instregex "VMOVSLDUPrm")>;
1616 def: InstRW<[BWWriteResGroup49], (instregex "VMOVSSrm")>;
1617 def: InstRW<[BWWriteResGroup49], (instregex "VMOVUPDrm")>;
1618 def: InstRW<[BWWriteResGroup49], (instregex "VMOVUPSrm")>;
1619 def: InstRW<[BWWriteResGroup49], (instregex "VPBROADCASTDrm")>;
1620 def: InstRW<[BWWriteResGroup49], (instregex "VPBROADCASTQrm")>;
1569 def: InstRW<[BWWriteResGroup49], (instregex "LDDQUrm",
1570 "MMX_MOVD64rm",
1571 "MMX_MOVD64to64rm",
1572 "MMX_MOVQ64rm",
1573 "MOV(16|32|64)rm",
1574 "MOV64toPQIrm",
1575 "MOV8rm",
1576 "MOVAPDrm",
1577 "MOVAPSrm",
1578 "MOVDDUPrm",
1579 "MOVDI2PDIrm",
1580 "MOVDQArm",
1581 "MOVDQUrm",
1582 "MOVNTDQArm",
1583 "MOVQI2PQIrm",
1584 "MOVSDrm",
1585 "MOVSHDUPrm",
1586 "MOVSLDUPrm",
1587 "MOVSSrm",
1588 "MOVSX(16|32|64)rm16",
1589 "MOVSX(16|32|64)rm32",
1590 "MOVSX(16|32|64)rm8",
1591 "MOVUPDrm",
1592 "MOVUPSrm",
1593 "MOVZX(16|32|64)rm16",
1594 "MOVZX(16|32|64)rm8",
1595 "PREFETCHNTA",
1596 "PREFETCHT0",
1597 "PREFETCHT1",
1598 "PREFETCHT2",
1599 "VBROADCASTSSrm",
1600 "VLDDQUrm",
1601 "VMOV64toPQIrm",
1602 "VMOVAPDrm",
1603 "VMOVAPSrm",
1604 "VMOVDDUPrm",
1605 "VMOVDI2PDIrm",
1606 "VMOVDQArm",
1607 "VMOVDQUrm",
1608 "VMOVNTDQArm",
1609 "VMOVQI2PQIrm",
1610 "VMOVSDrm",
1611 "VMOVSHDUPrm",
1612 "VMOVSLDUPrm",
1613 "VMOVSSrm",
1614 "VMOVUPDrm",
1615 "VMOVUPSrm",
1616 "VPBROADCASTDrm",
1617 "VPBROADCASTQrm")>;
16211618
16221619 def BWWriteResGroup50 : SchedWriteRes<[BWPort1,BWPort5]> {
16231620 let Latency = 5;
16241621 let NumMicroOps = 3;
16251622 let ResourceCycles = [1,2];
16261623 }
1627 def: InstRW<[BWWriteResGroup50], (instregex "CVTSI642SSrr")>;
1628 def: InstRW<[BWWriteResGroup50], (instregex "HADDPDrr")>;
1629 def: InstRW<[BWWriteResGroup50], (instregex "HADDPSrr")>;
1630 def: InstRW<[BWWriteResGroup50], (instregex "HSUBPDrr")>;
1631 def: InstRW<[BWWriteResGroup50], (instregex "HSUBPSrr")>;
1632 def: InstRW<[BWWriteResGroup50], (instregex "VCVTSI642SSrr")>;
1633 def: InstRW<[BWWriteResGroup50], (instregex "VHADDPDYrr")>;
1634 def: InstRW<[BWWriteResGroup50], (instregex "VHADDPDrr")>;
1635 def: InstRW<[BWWriteResGroup50], (instregex "VHADDPSYrr")>;
1636 def: InstRW<[BWWriteResGroup50], (instregex "VHADDPSrr")>;
1637 def: InstRW<[BWWriteResGroup50], (instregex "VHSUBPDYrr")>;
1638 def: InstRW<[BWWriteResGroup50], (instregex "VHSUBPDrr")>;
1639 def: InstRW<[BWWriteResGroup50], (instregex "VHSUBPSYrr")>;
1640 def: InstRW<[BWWriteResGroup50], (instregex "VHSUBPSrr")>;
1624 def: InstRW<[BWWriteResGroup50], (instregex "CVTSI642SSrr",
1625 "HADDPDrr",
1626 "HADDPSrr",
1627 "HSUBPDrr",
1628 "HSUBPSrr",
1629 "VCVTSI642SSrr",
1630 "VHADDPDYrr",
1631 "VHADDPDrr",
1632 "VHADDPSYrr",
1633 "VHADDPSrr",
1634 "VHSUBPDYrr",
1635 "VHSUBPDrr",
1636 "VHSUBPSYrr",
1637 "VHSUBPSrr")>;
16411638
16421639 def BWWriteResGroup51 : SchedWriteRes<[BWPort1,BWPort6,BWPort06]> {
16431640 let Latency = 5;
16581655 let NumMicroOps = 4;
16591656 let ResourceCycles = [1,1,1,1];
16601657 }
1661 def: InstRW<[BWWriteResGroup53], (instregex "VMASKMOVPDYmr")>;
1662 def: InstRW<[BWWriteResGroup53], (instregex "VMASKMOVPDmr")>;
1663 def: InstRW<[BWWriteResGroup53], (instregex "VMASKMOVPSYmr")>;
1664 def: InstRW<[BWWriteResGroup53], (instregex "VMASKMOVPSmr")>;
1665 def: InstRW<[BWWriteResGroup53], (instregex "VPMASKMOVDYmr")>;
1666 def: InstRW<[BWWriteResGroup53], (instregex "VPMASKMOVDmr")>;
1667 def: InstRW<[BWWriteResGroup53], (instregex "VPMASKMOVQYmr")>;
1668 def: InstRW<[BWWriteResGroup53], (instregex "VPMASKMOVQmr")>;
1658 def: InstRW<[BWWriteResGroup53], (instregex "VMASKMOVPDYmr",
1659 "VMASKMOVPDmr",
1660 "VMASKMOVPSYmr",
1661 "VMASKMOVPSmr",
1662 "VPMASKMOVDYmr",
1663 "VPMASKMOVDmr",
1664 "VPMASKMOVQYmr",
1665 "VPMASKMOVQmr")>;
16691666
16701667 def BWWriteResGroup54 : SchedWriteRes<[BWPort6,BWPort0156]> {
16711668 let Latency = 5;
16861683 let NumMicroOps = 5;
16871684 let ResourceCycles = [2,3];
16881685 }
1689 def: InstRW<[BWWriteResGroup56], (instregex "CMPXCHG(16|32|64)rr")>;
1690 def: InstRW<[BWWriteResGroup56], (instregex "CMPXCHG8rr")>;
1686 def: InstRW<[BWWriteResGroup56], (instregex "CMPXCHG(8|16|32|64)rr")>;
16911687
16921688 def BWWriteResGroup57 : SchedWriteRes<[BWPort4,BWPort237,BWPort0156]> {
16931689 let Latency = 5;
16941690 let NumMicroOps = 6;
16951691 let ResourceCycles = [1,1,4];
16961692 }
1697 def: InstRW<[BWWriteResGroup57], (instregex "PUSHF16")>;
1698 def: InstRW<[BWWriteResGroup57], (instregex "PUSHF64")>;
1693 def: InstRW<[BWWriteResGroup57], (instregex "PUSHF16", "PUSHF64")>;
16991694
17001695 def BWWriteResGroup58 : SchedWriteRes<[BWPort23]> {
17011696 let Latency = 6;
17021697 let NumMicroOps = 1;
17031698 let ResourceCycles = [1];
17041699 }
1705 def: InstRW<[BWWriteResGroup58], (instregex "LD_F32m")>;
1706 def: InstRW<[BWWriteResGroup58], (instregex "LD_F64m")>;
1707 def: InstRW<[BWWriteResGroup58], (instregex "LD_F80m")>;
1708 def: InstRW<[BWWriteResGroup58], (instregex "VBROADCASTF128")>;
1709 def: InstRW<[BWWriteResGroup58], (instregex "VBROADCASTI128")>;
1710 def: InstRW<[BWWriteResGroup58], (instregex "VBROADCASTSDYrm")>;
1711 def: InstRW<[BWWriteResGroup58], (instregex "VBROADCASTSSYrm")>;
1712 def: InstRW<[BWWriteResGroup58], (instregex "VLDDQUYrm")>;
1713 def: InstRW<[BWWriteResGroup58], (instregex "VMOVAPDYrm")>;
1714 def: InstRW<[BWWriteResGroup58], (instregex "VMOVAPSYrm")>;
1715 def: InstRW<[BWWriteResGroup58], (instregex "VMOVDDUPYrm")>;
1716 def: InstRW<[BWWriteResGroup58], (instregex "VMOVDQAYrm")>;
1717 def: InstRW<[BWWriteResGroup58], (instregex "VMOVDQUYrm")>;
1718 def: InstRW<[BWWriteResGroup58], (instregex "VMOVNTDQAYrm")>;
1719 def: InstRW<[BWWriteResGroup58], (instregex "VMOVSHDUPYrm")>;
1720 def: InstRW<[BWWriteResGroup58], (instregex "VMOVSLDUPYrm")>;
1721 def: InstRW<[BWWriteResGroup58], (instregex "VMOVUPDYrm")>;
1722 def: InstRW<[BWWriteResGroup58], (instregex "VMOVUPSYrm")>;
1723 def: InstRW<[BWWriteResGroup58], (instregex "VPBROADCASTDYrm")>;
1724 def: InstRW<[BWWriteResGroup58], (instregex "VPBROADCASTQYrm")>;
1725 def: InstRW<[BWWriteResGroup58], (instregex "ROUNDPDr")>;
1726 def: InstRW<[BWWriteResGroup58], (instregex "ROUNDPSr")>;
1727 def: InstRW<[BWWriteResGroup58], (instregex "ROUNDSDr")>;
1728 def: InstRW<[BWWriteResGroup58], (instregex "ROUNDSSr")>;
1729 def: InstRW<[BWWriteResGroup58], (instregex "VROUNDPDr")>;
1730 def: InstRW<[BWWriteResGroup58], (instregex "VROUNDPSr")>;
1731 def: InstRW<[BWWriteResGroup58], (instregex "VROUNDSDr")>;
1732 def: InstRW<[BWWriteResGroup58], (instregex "VROUNDSSr")>;
1733 def: InstRW<[BWWriteResGroup58], (instregex "VROUNDYPDr")>;
1734 def: InstRW<[BWWriteResGroup58], (instregex "VROUNDYPSr")>;
1700 def: InstRW<[BWWriteResGroup58], (instregex "LD_F32m",
1701 "LD_F64m",
1702 "LD_F80m",
1703 "VBROADCASTF128",
1704 "VBROADCASTI128",
1705 "VBROADCASTSDYrm",
1706 "VBROADCASTSSYrm",
1707 "VLDDQUYrm",
1708 "VMOVAPDYrm",
1709 "VMOVAPSYrm",
1710 "VMOVDDUPYrm",
1711 "VMOVDQAYrm",
1712 "VMOVDQUYrm",
1713 "VMOVNTDQAYrm",
1714 "VMOVSHDUPYrm",
1715 "VMOVSLDUPYrm",
1716 "VMOVUPDYrm",
1717 "VMOVUPSYrm",
1718 "VPBROADCASTDYrm",
1719 "VPBROADCASTQYrm",
1720 "ROUNDPDr",
1721 "ROUNDPSr",
1722 "ROUNDSDr",
1723 "ROUNDSSr",
1724 "VROUNDPDr",
1725 "VROUNDPSr",
1726 "VROUNDSDr",
1727 "VROUNDSSr",
1728 "VROUNDYPDr",
1729 "VROUNDYPSr")>;
17351730
17361731 def BWWriteResGroup59 : SchedWriteRes<[BWPort0,BWPort23]> {
17371732 let Latency = 6;
17381733 let NumMicroOps = 2;
17391734 let ResourceCycles = [1,1];
17401735 }
1741 def: InstRW<[BWWriteResGroup59], (instregex "CVTPS2PDrm")>;
1742 def: InstRW<[BWWriteResGroup59], (instregex "CVTSS2SDrm")>;
1743 def: InstRW<[BWWriteResGroup59], (instregex "MMX_PSLLDrm")>;
1744 def: InstRW<[BWWriteResGroup59], (instregex "MMX_PSLLQrm")>;
1745 def: InstRW<[BWWriteResGroup59], (instregex "MMX_PSLLWrm")>;
1746 def: InstRW<[BWWriteResGroup59], (instregex "MMX_PSRADrm")>;
1747 def: InstRW<[BWWriteResGroup59], (instregex "MMX_PSRAWrm")>;
1748 def: InstRW<[BWWriteResGroup59], (instregex "MMX_PSRLDrm")>;
1749 def: InstRW<[BWWriteResGroup59], (instregex "MMX_PSRLQrm")>;
1750 def: InstRW<[BWWriteResGroup59], (instregex "MMX_PSRLWrm")>;
1751 def: InstRW<[BWWriteResGroup59], (instregex "VCVTPH2PSYrm")>;
1752 def: InstRW<[BWWriteResGroup59], (instregex "VCVTPH2PSrm")>;
1753 def: InstRW<[BWWriteResGroup59], (instregex "VCVTPS2PDrm")>;
1754 def: InstRW<[BWWriteResGroup59], (instregex "VCVTSS2SDrm")>;
1755 def: InstRW<[BWWriteResGroup59], (instregex "VPSLLVQrm")>;
1756 def: InstRW<[BWWriteResGroup59], (instregex "VPSRLVQrm")>;
1757 def: InstRW<[BWWriteResGroup59], (instregex "VTESTPDrm")>;
1758 def: InstRW<[BWWriteResGroup59], (instregex "VTESTPSrm")>;
1736 def: InstRW<[BWWriteResGroup59], (instregex "CVTPS2PDrm",
1737 "CVTSS2SDrm",
1738 "MMX_PSLLDrm",
1739 "MMX_PSLLQrm",
1740 "MMX_PSLLWrm",
1741 "MMX_PSRADrm",
1742 "MMX_PSRAWrm",
1743 "MMX_PSRLDrm",
1744 "MMX_PSRLQrm",
1745 "MMX_PSRLWrm",
1746 "VCVTPH2PSYrm",
1747 "VCVTPH2PSrm",
1748 "VCVTPS2PDrm",
1749 "VCVTSS2SDrm",
1750 "VPSLLVQrm",
1751 "VPSRLVQrm",
1752 "VTESTPDrm",
1753 "VTESTPSrm")>;
17591754
17601755 def BWWriteResGroup60 : SchedWriteRes<[BWPort1,BWPort5]> {
17611756 let Latency = 6;
17621757 let NumMicroOps = 2;
17631758 let ResourceCycles = [1,1];
17641759 }
1765 def: InstRW<[BWWriteResGroup60], (instregex "VCVTDQ2PDYrr")>;
1766 def: InstRW<[BWWriteResGroup60], (instregex "VCVTPD2DQYrr")>;
1767 def: InstRW<[BWWriteResGroup60], (instregex "VCVTPD2PSYrr")>;
1768 def: InstRW<[BWWriteResGroup60], (instregex "VCVTPS2PHYrr")>;
1769 def: InstRW<[BWWriteResGroup60], (instregex "VCVTTPD2DQYrr")>;
1760 def: InstRW<[BWWriteResGroup60], (instregex "VCVTDQ2PDYrr",
1761 "VCVTPD2DQYrr",
1762 "VCVTPD2PSYrr",
1763 "VCVTPS2PHYrr",
1764 "VCVTTPD2DQYrr")>;
17701765
17711766 def BWWriteResGroup61 : SchedWriteRes<[BWPort5,BWPort23]> {
17721767 let Latency = 6;
17731768 let NumMicroOps = 2;
17741769 let ResourceCycles = [1,1];
17751770 }
1776 def: InstRW<[BWWriteResGroup61], (instregex "ANDNPDrm")>;
1777 def: InstRW<[BWWriteResGroup61], (instregex "ANDNPSrm")>;
1778 def: InstRW<[BWWriteResGroup61], (instregex "ANDPDrm")>;
1779 def: InstRW<[BWWriteResGroup61], (instregex "ANDPSrm")>;
1780 def: InstRW<[BWWriteResGroup61], (instregex "INSERTPSrm")>;
1781 def: InstRW<[BWWriteResGroup61], (instregex "MMX_PALIGNRrmi")>;
1782 def: InstRW<[BWWriteResGroup61], (instregex "MMX_PINSRWrm")>;
1783 def: InstRW<[BWWriteResGroup61], (instregex "MMX_PSHUFBrm")>;
1784 def: InstRW<[BWWriteResGroup61], (instregex "MMX_PSHUFWmi")>;
1785 def: InstRW<[BWWriteResGroup61], (instregex "MMX_PUNPCKHBWirm")>;
1786 def: InstRW<[BWWriteResGroup61], (instregex "MMX_PUNPCKHDQirm")>;
1787 def: InstRW<[BWWriteResGroup61], (instregex "MMX_PUNPCKHWDirm")>;
1788 def: InstRW<[BWWriteResGroup61], (instregex "MMX_PUNPCKLBWirm")>;
1789 def: InstRW<[BWWriteResGroup61], (instregex "MMX_PUNPCKLDQirm")>;
1790 def: InstRW<[BWWriteResGroup61], (instregex "MMX_PUNPCKLWDirm")>;
1791 def: InstRW<[BWWriteResGroup61], (instregex "MOVHPDrm")>;
1792 def: InstRW<[BWWriteResGroup61], (instregex "MOVHPSrm")>;
1793 def: InstRW<[BWWriteResGroup61], (instregex "MOVLPDrm")>;
1794 def: InstRW<[BWWriteResGroup61], (instregex "MOVLPSrm")>;
1795 def: InstRW<[BWWriteResGroup61], (instregex "ORPDrm")>;
1796 def: InstRW<[BWWriteResGroup61], (instregex "ORPSrm")>;
1797 def: InstRW<[BWWriteResGroup61], (instregex "PACKSSDWrm")>;
1798 def: InstRW<[BWWriteResGroup61], (instregex "PACKSSWBrm")>;
1799 def: InstRW<[BWWriteResGroup61], (instregex "PACKUSDWrm")>;
1800 def: InstRW<[BWWriteResGroup61], (instregex "PACKUSWBrm")>;
1801 def: InstRW<[BWWriteResGroup61], (instregex "PALIGNRrmi")>;
1802 def: InstRW<[BWWriteResGroup61], (instregex "PBLENDWrmi")>;
1803 def: InstRW<[BWWriteResGroup61], (instregex "PINSRBrm")>;
1804 def: InstRW<[BWWriteResGroup61], (instregex "PINSRDrm")>;
1805 def: InstRW<[BWWriteResGroup61], (instregex "PINSRQrm")>;
1806 def: InstRW<[BWWriteResGroup61], (instregex "PINSRWrm")>;
1807 def: InstRW<[BWWriteResGroup61], (instregex "PMOVSXBDrm")>;
1808 def: InstRW<[BWWriteResGroup61], (instregex "PMOVSXBQrm")>;
1809 def: InstRW<[BWWriteResGroup61], (instregex "PMOVSXBWrm")>;
1810 def: InstRW<[BWWriteResGroup61], (instregex "PMOVSXDQrm")>;
1811 def: InstRW<[BWWriteResGroup61], (instregex "PMOVSXWDrm")>;
1812 def: InstRW<[BWWriteResGroup61], (instregex "PMOVSXWQrm")>;
1813 def: InstRW<[BWWriteResGroup61], (instregex "PMOVZXBDrm")>;
1814 def: InstRW<[BWWriteResGroup61], (instregex "PMOVZXBQrm")>;
1815 def: InstRW<[BWWriteResGroup61], (instregex "PMOVZXBWrm")>;
1816 def: InstRW<[BWWriteResGroup61], (instregex "PMOVZXDQrm")>;
1817 def: InstRW<[BWWriteResGroup61], (instregex "PMOVZXWDrm")>;
1818 def: InstRW<[BWWriteResGroup61], (instregex "PMOVZXWQrm")>;
1819 def: InstRW<[BWWriteResGroup61], (instregex "PSHUFBrm")>;
1820 def: InstRW<[BWWriteResGroup61], (instregex "PSHUFDmi")>;
1821 def: InstRW<[BWWriteResGroup61], (instregex "PSHUFHWmi")>;
1822 def: InstRW<[BWWriteResGroup61], (instregex "PSHUFLWmi")>;
1823 def: InstRW<[BWWriteResGroup61], (instregex "PUNPCKHBWrm")>;
1824 def: InstRW<[BWWriteResGroup61], (instregex "PUNPCKHDQrm")>;
1825 def: InstRW<[BWWriteResGroup61], (instregex "PUNPCKHQDQrm")>;
1826 def: InstRW<[BWWriteResGroup61], (instregex "PUNPCKHWDrm")>;
1827 def: InstRW<[BWWriteResGroup61], (instregex "PUNPCKLBWrm")>;
1828 def: InstRW<[BWWriteResGroup61], (instregex "PUNPCKLDQrm")>;
1829 def: InstRW<[BWWriteResGroup61], (instregex "PUNPCKLQDQrm")>;
1830 def: InstRW<[BWWriteResGroup61], (instregex "PUNPCKLWDrm")>;
1831 def: InstRW<[BWWriteResGroup61], (instregex "SHUFPDrmi")>;
1832 def: InstRW<[BWWriteResGroup61], (instregex "SHUFPSrmi")>;
1833 def: InstRW<[BWWriteResGroup61], (instregex "UNPCKHPDrm")>;
1834 def: InstRW<[BWWriteResGroup61], (instregex "UNPCKHPSrm")>;
1835 def: InstRW<[BWWriteResGroup61], (instregex "UNPCKLPDrm")>;
1836 def: InstRW<[BWWriteResGroup61], (instregex "UNPCKLPSrm")>;
1837 def: InstRW<[BWWriteResGroup61], (instregex "VANDNPDrm")>;
1838 def: InstRW<[BWWriteResGroup61], (instregex "VANDNPSrm")>;
1839 def: InstRW<[BWWriteResGroup61], (instregex "VANDPDrm")>;
1840 def: InstRW<[BWWriteResGroup61], (instregex "VANDPSrm")>;
1841 def: InstRW<[BWWriteResGroup61], (instregex "VINSERTPSrm")>;
1842 def: InstRW<[BWWriteResGroup61], (instregex "VMOVHPDrm")>;
1843 def: InstRW<[BWWriteResGroup61], (instregex "VMOVHPSrm")>;
1844 def: InstRW<[BWWriteResGroup61], (instregex "VMOVLPDrm")>;
1845 def: InstRW<[BWWriteResGroup61], (instregex "VMOVLPSrm")>;
1846 def: InstRW<[BWWriteResGroup61], (instregex "VORPDrm")>;
1847 def: InstRW<[BWWriteResGroup61], (instregex "VORPSrm")>;
1848 def: InstRW<[BWWriteResGroup61], (instregex "VPACKSSDWrm")>;
1849 def: InstRW<[BWWriteResGroup61], (instregex "VPACKSSWBrm")>;
1850 def: InstRW<[BWWriteResGroup61], (instregex "VPACKUSDWrm")>;
1851 def: InstRW<[BWWriteResGroup61], (instregex "VPACKUSWBrm")>;
1852 def: InstRW<[BWWriteResGroup61], (instregex "VPALIGNRrmi")>;
1853 def: InstRW<[BWWriteResGroup61], (instregex "VPBLENDWrmi")>;
1854 def: InstRW<[BWWriteResGroup61], (instregex "VPERMILPDmi")>;
1855 def: InstRW<[BWWriteResGroup61], (instregex "VPERMILPDrm")>;
1856 def: InstRW<[BWWriteResGroup61], (instregex "VPERMILPSmi")>;
1857 def: InstRW<[BWWriteResGroup61], (instregex "VPERMILPSrm")>;
1858 def: InstRW<[BWWriteResGroup61], (instregex "VPINSRBrm")>;
1859 def: InstRW<[BWWriteResGroup61], (instregex "VPINSRDrm")>;
1860 def: InstRW<[BWWriteResGroup61], (instregex "VPINSRQrm")>;
1861 def: InstRW<[BWWriteResGroup61], (instregex "VPINSRWrm")>;
1862 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVSXBDrm")>;
1863 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVSXBQrm")>;
1864 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVSXBWrm")>;
1865 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVSXDQrm")>;
1866 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVSXWDrm")>;
1867 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVSXWQrm")>;
1868 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVZXBDrm")>;
1869 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVZXBQrm")>;
1870 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVZXBWrm")>;
1871 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVZXDQrm")>;
1872 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVZXWDrm")>;
1873 def: InstRW<[BWWriteResGroup61], (instregex "VPMOVZXWQrm")>;
1874 def: InstRW<[BWWriteResGroup61], (instregex "VPSHUFBrm")>;
1875 def: InstRW<[BWWriteResGroup61], (instregex "VPSHUFDmi")>;
1876 def: InstRW<[BWWriteResGroup61], (instregex "VPSHUFHWmi")>;
1877 def: InstRW<[BWWriteResGroup61], (instregex "VPSHUFLWmi")>;
1878 def: InstRW<[BWWriteResGroup61], (instregex "VPUNPCKHBWrm")>;
1879 def: InstRW<[BWWriteResGroup61], (instregex "VPUNPCKHDQrm")>;
1880 def: InstRW<[BWWriteResGroup61], (instregex "VPUNPCKHQDQrm")>;
1881 def: InstRW<[BWWriteResGroup61], (instregex "VPUNPCKHWDrm")>;
1882 def: InstRW<[BWWriteResGroup61], (instregex "VPUNPCKLBWrm")>;
1883 def: InstRW<[BWWriteResGroup61], (instregex "VPUNPCKLDQrm")>;
1884 def: InstRW<[BWWriteResGroup61], (instregex "VPUNPCKLQDQrm")>;
1885 def: InstRW<[BWWriteResGroup61], (instregex "VPUNPCKLWDrm")>;
1886 def: InstRW<[BWWriteResGroup61], (instregex "VSHUFPDrmi")>;
1887 def: InstRW<[BWWriteResGroup61], (instregex "VSHUFPSrmi")>;
1888 def: InstRW<[BWWriteResGroup61], (instregex "VUNPCKHPDrm")>;
1889 def: InstRW<[BWWriteResGroup61], (instregex "VUNPCKHPSrm")>;
1890 def: InstRW<[BWWriteResGroup61], (instregex "VUNPCKLPDrm")>;
1891 def: InstRW<[BWWriteResGroup61], (instregex "VUNPCKLPSrm")>;
1892 def: InstRW<[BWWriteResGroup61], (instregex "VXORPDrm")>;
1893 def: InstRW<[BWWriteResGroup61], (instregex "VXORPSrm")>;
1894 def: InstRW<[BWWriteResGroup61], (instregex "XORPDrm")>;
1895 def: InstRW<[BWWriteResGroup61], (instregex "XORPSrm")>;
1771 def: InstRW<[BWWriteResGroup61], (instregex "ANDNPDrm",
1772 "ANDNPSrm",
1773 "ANDPDrm",
1774 "ANDPSrm",
1775 "INSERTPSrm",
1776 "MMX_PALIGNRrmi",
1777 "MMX_PINSRWrm",
1778 "MMX_PSHUFBrm",
1779 "MMX_PSHUFWmi",
1780 "MMX_PUNPCKHBWirm",
1781 "MMX_PUNPCKHDQirm",
1782 "MMX_PUNPCKHWDirm",
1783 "MMX_PUNPCKLBWirm",
1784 "MMX_PUNPCKLDQirm",
1785 "MMX_PUNPCKLWDirm",
1786 "MOVHPDrm",
1787 "MOVHPSrm",
1788 "MOVLPDrm",
1789 "MOVLPSrm",
1790 "ORPDrm",
1791 "ORPSrm",
1792 "PACKSSDWrm",
1793 "PACKSSWBrm",
1794 "PACKUSDWrm",
1795 "PACKUSWBrm",
1796 "PALIGNRrmi",
1797 "PBLENDWrmi",
1798 "PINSRBrm",
1799 "PINSRDrm",
1800 "PINSRQrm",
1801 "PINSRWrm",
1802 "PMOVSXBDrm",
1803 "PMOVSXBQrm",
1804 "PMOVSXBWrm",
1805 "PMOVSXDQrm",
1806 "PMOVSXWDrm",
1807 "PMOVSXWQrm",
1808 "PMOVZXBDrm",
1809 "PMOVZXBQrm",
1810 "PMOVZXBWrm",
1811 "PMOVZXDQrm",
1812 "PMOVZXWDrm",
1813 "PMOVZXWQrm",
1814 "PSHUFBrm",
1815 "PSHUFDmi",
1816 "PSHUFHWmi",
1817 "PSHUFLWmi",
1818 "PUNPCKHBWrm",
1819 "PUNPCKHDQrm",
1820 "PUNPCKHQDQrm",
1821 "PUNPCKHWDrm",
1822 "PUNPCKLBWrm",
1823 "PUNPCKLDQrm",
1824 "PUNPCKLQDQrm",
1825 "PUNPCKLWDrm",
1826 "SHUFPDrmi",
1827 "SHUFPSrmi",
1828 "UNPCKHPDrm",
1829 "UNPCKHPSrm",
1830 "UNPCKLPDrm",
1831 "UNPCKLPSrm",
1832 "VANDNPDrm",
1833 "VANDNPSrm",
1834 "VANDPDrm",
1835 "VANDPSrm",
1836 "VINSERTPSrm",
1837 "VMOVHPDrm",
1838 "VMOVHPSrm",
1839 "VMOVLPDrm",
1840 "VMOVLPSrm",
1841 "VORPDrm",
1842 "VORPSrm",
1843 "VPACKSSDWrm",
1844 "VPACKSSWBrm",
1845 "VPACKUSDWrm",
1846 "VPACKUSWBrm",
1847 "VPALIGNRrmi",
1848 "VPBLENDWrmi",
1849 "VPERMILPDmi",
1850 "VPERMILPDrm",
1851 "VPERMILPSmi",
1852 "VPERMILPSrm",
1853 "VPINSRBrm",
1854 "VPINSRDrm",
1855 "VPINSRQrm",
1856 "VPINSRWrm",
1857 "VPMOVSXBDrm",
1858 "VPMOVSXBQrm",
1859 "VPMOVSXBWrm",
1860 "VPMOVSXDQrm",
1861 "VPMOVSXWDrm",
1862 "VPMOVSXWQrm",
1863 "VPMOVZXBDrm",
1864 "VPMOVZXBQrm",
1865 "VPMOVZXBWrm",
1866 "VPMOVZXDQrm",
1867 "VPMOVZXWDrm",
1868 "VPMOVZXWQrm",
1869 "VPSHUFBrm",
1870 "VPSHUFDmi",
1871 "VPSHUFHWmi",
1872 "VPSHUFLWmi",
1873 "VPUNPCKHBWrm",
1874 "VPUNPCKHDQrm",
1875 "VPUNPCKHQDQrm",
1876 "VPUNPCKHWDrm",
1877 "VPUNPCKLBWrm",
1878 "VPUNPCKLDQrm",
1879 "VPUNPCKLQDQrm",
1880 "VPUNPCKLWDrm",
1881 "VSHUFPDrmi",
1882 "VSHUFPSrmi",
1883 "VUNPCKHPDrm",
1884 "VUNPCKHPSrm",
1885 "VUNPCKLPDrm",
1886 "VUNPCKLPSrm",
1887 "VXORPDrm",
1888 "VXORPSrm",
1889 "XORPDrm",
1890 "XORPSrm")>;
18961891
18971892 def BWWriteResGroup62 : SchedWriteRes<[BWPort6,BWPort23]> {
18981893 let Latency = 6;
18991894 let NumMicroOps = 2;
19001895 let ResourceCycles = [1,1];
19011896 }
1902 def: InstRW<[BWWriteResGroup62], (instregex "FARJMP64")>;
1903 def: InstRW<[BWWriteResGroup62], (instregex "JMP(16|32|64)m")>;
1897 def: InstRW<[BWWriteResGroup62], (instregex "FARJMP64",
1898 "JMP(16|32|64)m")>;
19041899
19051900 def BWWriteResGroup63 : SchedWriteRes<[BWPort23,BWPort06]> {
19061901 let Latency = 6;
19071902 let NumMicroOps = 2;
19081903 let ResourceCycles = [1,1];
19091904 }
1910 def: InstRW<[BWWriteResGroup63], (instregex "ADC(8|16|32|64)rm")>;
1911 def: InstRW<[BWWriteResGroup63], (instregex "ADCX(32|64)rm")>;
1912 def: InstRW<[BWWriteResGroup63], (instregex "ADOX(32|64)rm")>;
1913 def: InstRW<[BWWriteResGroup63], (instregex "BT(16|32|64)mi8")>;
1914 def: InstRW<[BWWriteResGroup63], (instregex "CMOV(AE|B|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)(16|32|64)rm")>;
1915 def: InstRW<[BWWriteResGroup63], (instregex "RORX(32|64)mi")>;
1916 def: InstRW<[BWWriteResGroup63], (instregex "SARX(32|64)rm")>;
1917 def: InstRW<[BWWriteResGroup63], (instregex "SBB(8|16|32|64)rm")>;
1918 def: InstRW<[BWWriteResGroup63], (instregex "SHLX(32|64)rm")>;
1919 def: InstRW<[BWWriteResGroup63], (instregex "SHRX(32|64)rm")>;
1905 def: InstRW<[BWWriteResGroup63], (instregex "ADC(8|16|32|64)rm",
1906 "ADCX(32|64)rm",
1907 "ADOX(32|64)rm",
1908 "BT(16|32|64)mi8",
1909 "CMOV(AE|B|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)(16|32|64)rm",
1910 "RORX(32|64)mi",
1911 "SARX(32|64)rm",
1912 "SBB(8|16|32|64)rm",
1913 "SHLX(32|64)rm",
1914 "SHRX(32|64)rm")>;
19201915
19211916 def BWWriteResGroup64 : SchedWriteRes<[BWPort23,BWPort15]> {
19221917 let Latency = 6;
19231918 let NumMicroOps = 2;
19241919 let ResourceCycles = [1,1];
19251920 }
1926 def: InstRW<[BWWriteResGroup64], (instregex "ANDN(32|64)rm")>;
1927 def: InstRW<[BWWriteResGroup64], (instregex "BLSI(32|64)rm")>;
1928 def: InstRW<[BWWriteResGroup64], (instregex "BLSMSK(32|64)rm")>;
1929 def: InstRW<[BWWriteResGroup64], (instregex "BLSR(32|64)rm")>;
1930 def: InstRW<[BWWriteResGroup64], (instregex "BZHI(32|64)rm")>;
1931 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PABSBrm")>;
1932 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PABSDrm")>;
1933 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PABSWrm")>;
1934 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PADDBirm")>;
1935 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PADDDirm")>;
1936 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PADDQirm")>;
1937 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PADDSBirm")>;
1938 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PADDSWirm")>;
1939 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PADDUSBirm")>;
1940 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PADDUSWirm")>;
1941 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PADDWirm")>;
1942 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PAVGBirm")>;
1943 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PAVGWirm")>;
1944 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PCMPEQBirm")>;
1945 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PCMPEQDirm")>;
1946 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PCMPEQWirm")>;
1947 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PCMPGTBirm")>;
1948 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PCMPGTDirm")>;
1949 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PCMPGTWirm")>;
1950 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PMAXSWirm")>;
1951 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PMAXUBirm")>;
1952 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PMINSWirm")>;
1953 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PMINUBirm")>;
1954 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSIGNBrm")>;
1955 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSIGNDrm")>;
1956 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSIGNWrm")>;
1957 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSUBBirm")>;
1958 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSUBDirm")>;
1959 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSUBQirm")>;
1960 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSUBSBirm")>;
1961 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSUBSWirm")>;
1962 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSUBUSBirm")>;
1963 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSUBUSWirm")>;
1964 def: InstRW<[BWWriteResGroup64], (instregex "MMX_PSUBWirm")>;
1965 def: InstRW<[BWWriteResGroup64], (instregex "MOVBE(16|32|64)rm")>;
1966 def: InstRW<[BWWriteResGroup64], (instregex "PABSBrm")>;
1967 def: InstRW<[BWWriteResGroup64], (instregex "PABSDrm")>;
1968 def: InstRW<[BWWriteResGroup64], (instregex "PABSWrm")>;
1969 def: InstRW<[BWWriteResGroup64], (instregex "PADDBrm")>;
1970 def: InstRW<[BWWriteResGroup64], (instregex "PADDDrm")>;
1971 def: InstRW<[BWWriteResGroup64], (instregex "PADDQrm")>;
1972 def: InstRW<[BWWriteResGroup64], (instregex "PADDSBrm")>;
1973 def: InstRW<[BWWriteResGroup64], (instregex "PADDSWrm")>;
1974 def: InstRW<[BWWriteResGroup64], (instregex "PADDUSBrm")>;
1975 def: InstRW<[BWWriteResGroup64], (instregex "PADDUSWrm")>;
1976 def: InstRW<[BWWriteResGroup64], (instregex "PADDWrm")>;
1977 def: InstRW<[BWWriteResGroup64], (instregex "PAVGBrm")>;
1978 def: InstRW<[BWWriteResGroup64], (instregex "PAVGWrm")>;
1979 def: InstRW<[BWWriteResGroup64], (instregex "PCMPEQBrm")>;
1980 def: InstRW<[BWWriteResGroup64], (instregex "PCMPEQDrm")>;
1981 def: InstRW<[BWWriteResGroup64], (instregex "PCMPEQQrm")>;
1982 def: InstRW<[BWWriteResGroup64], (instregex "PCMPEQWrm")>;
1983 def: InstRW<[BWWriteResGroup64], (instregex "PCMPGTBrm")>;
1984 def: InstRW<[BWWriteResGroup64], (instregex "PCMPGTDrm")>;
1985 def: InstRW<[BWWriteResGroup64], (instregex "PCMPGTWrm")>;
1986 def: InstRW<[BWWriteResGroup64], (instregex "PMAXSBrm")>;
1987 def: InstRW<[BWWriteResGroup64], (instregex "PMAXSDrm")>;
1988 def: InstRW<[BWWriteResGroup64], (instregex "PMAXSWrm")>;
1989 def: InstRW<[BWWriteResGroup64], (instregex "PMAXUBrm")>;
1990 def: InstRW<[BWWriteResGroup64], (instregex "PMAXUDrm")>;
1991 def: InstRW<[BWWriteResGroup64], (instregex "PMAXUWrm")>;
1992 def: InstRW<[BWWriteResGroup64], (instregex "PMINSBrm")>;
1993 def: InstRW<[BWWriteResGroup64], (instregex "PMINSDrm")>;
1994 def: InstRW<[BWWriteResGroup64], (instregex "PMINSWrm")>;
1995 def: InstRW<[BWWriteResGroup64], (instregex "PMINUBrm")>;
1996 def: InstRW<[BWWriteResGroup64], (instregex "PMINUDrm")>;
1997 def: InstRW<[BWWriteResGroup64], (instregex "PMINUWrm")>;
1998 def: InstRW<[BWWriteResGroup64], (instregex "PSIGNBrm")>;
1999 def: InstRW<[BWWriteResGroup64], (instregex "PSIGNDrm")>;
2000 def: InstRW<[BWWriteResGroup64], (instregex "PSIGNWrm")>;
2001 def: InstRW<[BWWriteResGroup64], (instregex "PSUBBrm")>;
2002 def: InstRW<[BWWriteResGroup64], (instregex "PSUBDrm")>;
2003 def: InstRW<[BWWriteResGroup64], (instregex "PSUBQrm")>;
2004 def: InstRW<[BWWriteResGroup64], (instregex "PSUBSBrm")>;
2005 def: InstRW<[BWWriteResGroup64], (instregex "PSUBSWrm")>;
2006 def: InstRW<[BWWriteResGroup64], (instregex "PSUBUSBrm")>;
2007 def: InstRW<[BWWriteResGroup64], (instregex "PSUBUSWrm")>;
2008 def: InstRW<[BWWriteResGroup64], (instregex "PSUBWrm")>;
2009 def: InstRW<[BWWriteResGroup64], (instregex "VPABSBrm")>;
2010 def: InstRW<[BWWriteResGroup64], (instregex "VPABSDrm")>;
2011 def: InstRW<[BWWriteResGroup64], (instregex "VPABSWrm")>;
2012 def: InstRW<[BWWriteResGroup64], (instregex "VPADDBrm")>;
2013 def: InstRW<[BWWriteResGroup64], (instregex "VPADDDrm")>;
2014 def: InstRW<[BWWriteResGroup64], (instregex "VPADDQrm")>;
2015 def: InstRW<[BWWriteResGroup64], (instregex "VPADDSBrm")>;
2016 def: InstRW<[BWWriteResGroup64], (instregex "VPADDSWrm")>;
2017 def: InstRW<[BWWriteResGroup64], (instregex "VPADDUSBrm")>;
2018 def: InstRW<[BWWriteResGroup64], (instregex "VPADDUSWrm")>;
2019 def: InstRW<[BWWriteResGroup64], (instregex "VPADDWrm")>;
2020 def: InstRW<[BWWriteResGroup64], (instregex "VPAVGBrm")>;
2021 def: InstRW<[BWWriteResGroup64], (instregex "VPAVGWrm")>;
2022 def: InstRW<[BWWriteResGroup64], (instregex "VPCMPEQBrm")>;
2023 def: InstRW<[BWWriteResGroup64], (instregex "VPCMPEQDrm")>;
2024 def: InstRW<[BWWriteResGroup64], (instregex "VPCMPEQQrm")>;
2025 def: InstRW<[BWWriteResGroup64], (instregex "VPCMPEQWrm")>;
2026 def: InstRW<[BWWriteResGroup64], (instregex "VPCMPGTBrm")>;
2027 def: InstRW<[BWWriteResGroup64], (instregex "VPCMPGTDrm")>;
2028 def: InstRW<[BWWriteResGroup64], (instregex "VPCMPGTWrm")>;
2029 def: InstRW<[BWWriteResGroup64], (instregex "VPMAXSBrm")>;
2030 def: InstRW<[BWWriteResGroup64], (instregex "VPMAXSDrm")>;
2031 def: InstRW<[BWWriteResGroup64], (instregex "VPMAXSWrm")>;
2032 def: InstRW<[BWWriteResGroup64], (instregex "VPMAXUBrm")>;
2033 def: InstRW<[BWWriteResGroup64], (instregex "VPMAXUDrm")>;
2034 def: InstRW<[BWWriteResGroup64], (instregex "VPMAXUWrm")>;
2035 def: InstRW<[BWWriteResGroup64], (instregex "VPMINSBrm")>;
2036 def: InstRW<[BWWriteResGroup64], (instregex "VPMINSDrm")>;
2037 def: InstRW<[BWWriteResGroup64], (instregex "VPMINSWrm")>;
2038 def: InstRW<[BWWriteResGroup64], (instregex "VPMINUBrm")>;
2039 def: InstRW<[BWWriteResGroup64], (instregex "VPMINUDrm")>;
2040 def: InstRW<[BWWriteResGroup64], (instregex "VPMINUWrm")>;
2041 def: InstRW<[BWWriteResGroup64], (instregex "VPSIGNBrm")>;
2042 def: InstRW<[BWWriteResGroup64], (instregex "VPSIGNDrm")>;
2043 def: InstRW<[BWWriteResGroup64], (instregex "VPSIGNWrm")>;
2044 def: InstRW<[BWWriteResGroup64], (instregex "VPSUBBrm")>;
2045 def: InstRW<[BWWriteResGroup64], (instregex "VPSUBDrm")>;
2046 def: InstRW<[BWWriteResGroup64], (instregex "VPSUBQrm")>;
2047 def: InstRW<[BWWriteResGroup64], (instregex "VPSUBSBrm")>;
2048 def: InstRW<[BWWriteResGroup64], (instregex "VPSUBSWrm")>;
2049 def: InstRW<[BWWriteResGroup64], (instregex "VPSUBUSBrm")>;
2050 def: InstRW<[BWWriteResGroup64], (instregex "VPSUBUSWrm")>;
2051 def: InstRW<[BWWriteResGroup64], (instregex "VPSUBWrm")>;
1921 def: InstRW<[BWWriteResGroup64], (instregex "ANDN(32|64)rm",
1922 "BLSI(32|64)rm",
1923 "BLSMSK(32|64)rm",
1924 "BLSR(32|64)rm",
1925 "BZHI(32|64)rm",
1926 "MMX_PABSBrm",
1927 "MMX_PABSDrm",
1928 "MMX_PABSWrm",
1929 "MMX_PADDBirm",
1930 "MMX_PADDDirm",
1931 "MMX_PADDQirm",
1932 "MMX_PADDSBirm",
1933 "MMX_PADDSWirm",
1934 "MMX_PADDUSBirm",
1935 "MMX_PADDUSWirm",
1936 "MMX_PADDWirm",
1937 "MMX_PAVGBirm",
1938 "MMX_PAVGWirm",
1939 "MMX_PCMPEQBirm",
1940 "MMX_PCMPEQDirm",
1941 "MMX_PCMPEQWirm",
1942 "MMX_PCMPGTBirm",
1943 "MMX_PCMPGTDirm",
1944 "MMX_PCMPGTWirm",
1945 "MMX_PMAXSWirm",
1946 "MMX_PMAXUBirm",
1947 "MMX_PMINSWirm",
1948 "MMX_PMINUBirm",
1949 "MMX_PSIGNBrm",
1950 "MMX_PSIGNDrm",
1951 "MMX_PSIGNWrm",
1952 "MMX_PSUBBirm",
1953 "MMX_PSUBDirm",
1954 "MMX_PSUBQirm",
1955 "MMX_PSUBSBirm",
1956 "MMX_PSUBSWirm",
1957 "MMX_PSUBUSBirm",
1958 "MMX_PSUBUSWirm",
1959 "MMX_PSUBWirm",
1960 "MOVBE(16|32|64)rm",
1961 "PABSBrm",
1962 "PABSDrm",
1963 "PABSWrm",
1964 "PADDBrm",
1965 "PADDDrm",
1966 "PADDQrm",
1967 "PADDSBrm",
1968 "PADDSWrm",
1969 "PADDUSBrm",
1970 "PADDUSWrm",
1971 "PADDWrm",
1972 "PAVGBrm",
1973 "PAVGWrm",
1974 "PCMPEQBrm",
1975 "PCMPEQDrm",
1976 "PCMPEQQrm",
1977 "PCMPEQWrm",
1978 "PCMPGTBrm",
1979 "PCMPGTDrm",
1980 "PCMPGTWrm",
1981 "PMAXSBrm",
1982 "PMAXSDrm",
1983 "PMAXSWrm",
1984 "PMAXUBrm",
1985 "PMAXUDrm",
1986 "PMAXUWrm",
1987 "PMINSBrm",
1988 "PMINSDrm",
1989 "PMINSWrm",
1990 "PMINUBrm",
1991 "PMINUDrm",
1992 "PMINUWrm",
1993 "PSIGNBrm",
1994 "PSIGNDrm",
1995 "PSIGNWrm",
1996 "PSUBBrm",
1997 "PSUBDrm",
1998 "PSUBQrm",
1999 "PSUBSBrm",
2000 "PSUBSWrm",
2001 "PSUBUSBrm",
2002 "PSUBUSWrm",
2003 "PSUBWrm",
2004 "VPABSBrm",
2005 "VPABSDrm",
2006 "VPABSWrm",
2007 "VPADDBrm",
2008 "VPADDDrm",
2009 "VPADDQrm",
2010 "VPADDSBrm",
2011 "VPADDSWrm",
2012 "VPADDUSBrm",
2013 "VPADDUSWrm",
2014 "VPADDWrm",
2015 "VPAVGBrm",
2016 "VPAVGWrm",
2017 "VPCMPEQBrm",
2018 "VPCMPEQDrm",
2019 "VPCMPEQQrm",
2020 "VPCMPEQWrm",
2021 "VPCMPGTBrm",
2022 "VPCMPGTDrm",
2023 "VPCMPGTWrm",
2024 "VPMAXSBrm",
2025 "VPMAXSDrm",
2026 "VPMAXSWrm",
2027 "VPMAXUBrm",
2028 "VPMAXUDrm",
2029 "VPMAXUWrm",
2030 "VPMINSBrm",
2031 "VPMINSDrm",
2032 "VPMINSWrm",
2033 "VPMINUBrm",
2034 "VPMINUDrm",
2035 "VPMINUWrm",
2036 "VPSIGNBrm",
2037 "VPSIGNDrm",
2038 "VPSIGNWrm",
2039 "VPSUBBrm",
2040 "VPSUBDrm",
2041 "VPSUBQrm",
2042 "VPSUBSBrm",
2043 "VPSUBSWrm",
2044 "VPSUBUSBrm",
2045 "VPSUBUSWrm",
2046 "VPSUBWrm")>;
20522047
20532048 def BWWriteResGroup65 : SchedWriteRes<[BWPort23,BWPort015]> {
20542049 let Latency = 6;
20552050 let NumMicroOps = 2;
20562051 let ResourceCycles = [1,1];
20572052 }
2058 def: InstRW<[BWWriteResGroup65], (instregex "BLENDPDrmi")>;
2059 def: InstRW<[BWWriteResGroup65], (instregex "BLENDPSrmi")>;
2060 def: InstRW<[BWWriteResGroup65], (instregex "MMX_PANDNirm")>;
2061 def: InstRW<[BWWriteResGroup65], (instregex "MMX_PANDirm")>;
2062 def: InstRW<[BWWriteResGroup65], (instregex "MMX_PORirm")>;
2063 def: InstRW<[BWWriteResGroup65], (instregex "MMX_PXORirm")>;
2064 def: InstRW<[BWWriteResGroup65], (instregex "PANDNrm")>;
2065 def: InstRW<[BWWriteResGroup65], (instregex "PANDrm")>;
2066 def: InstRW<[BWWriteResGroup65], (instregex "PORrm")>;
2067 def: InstRW<[BWWriteResGroup65], (instregex "PXORrm")>;
2068 def: InstRW<[BWWriteResGroup65], (instregex "VBLENDPDrmi")>;
2069 def: InstRW<[BWWriteResGroup65], (instregex "VBLENDPSrmi")>;
2070 def: InstRW<[BWWriteResGroup65], (instregex "VINSERTF128rm")>;
2071 def: InstRW<[BWWriteResGroup65], (instregex "VINSERTI128rm")>;
2072 def: InstRW<[BWWriteResGroup65], (instregex "VPANDNrm")>;
2073 def: InstRW<[BWWriteResGroup65], (instregex "VPANDrm")>;
2074 def: InstRW<[BWWriteResGroup65], (instregex "VPBLENDDrmi")>;
2075 def: InstRW<[BWWriteResGroup65], (instregex "VPORrm")>;
2076 def: InstRW<[BWWriteResGroup65], (instregex "VPXORrm")>;
2053 def: InstRW<[BWWriteResGroup65], (instregex "BLENDPDrmi",
2054 "BLENDPSrmi",
2055 "MMX_PANDNirm",
2056 "MMX_PANDirm",
2057 "MMX_PORirm",
2058 "MMX_PXORirm",
2059 "PANDNrm",
2060 "PANDrm",
2061 "PORrm",
2062 "PXORrm",
2063 "VBLENDPDrmi",
2064 "VBLENDPSrmi",
2065 "VINSERTF128rm",
2066 "VINSERTI128rm",
2067 "VPANDNrm",
2068 "VPANDrm",
2069 "VPBLENDDrmi",
2070 "VPORrm",
2071 "VPXORrm")>;
20772072
20782073 def BWWriteResGroup66 : SchedWriteRes<[BWPort23,BWPort0156]> {
20792074 let Latency = 6;
20802075 let NumMicroOps = 2;
20812076 let ResourceCycles = [1,1];
20822077 }
2083 def: InstRW<[BWWriteResGroup66], (instregex "ADD(8|16|32|64)rm")>;
2084 def: InstRW<[BWWriteResGroup66], (instregex "AND(8|16|32|64)rm")>;
2085 def: InstRW<[BWWriteResGroup66], (instregex "CMP(8|16|32|64)mi")>;
2086 def: InstRW<[BWWriteResGroup66], (instregex "CMP(8|16|32|64)mr")>;
2087 def: InstRW<[BWWriteResGroup66], (instregex "CMP(8|16|32|64)rm")>;
2088 def: InstRW<[BWWriteResGroup66], (instregex "OR(8|16|32|64)rm")>;
20892078 def: InstRW<[BWWriteResGroup66], (instrs POP16r, POP32r, POP64r)>;
2090 def: InstRW<[BWWriteResGroup66], (instregex "POP(16|32|64)rmr")>;
2091 def: InstRW<[BWWriteResGroup66], (instregex "SUB(8|16|32|64)rm")>;
2092 def: InstRW<[BWWriteResGroup66], (instregex "TEST(8|16|32|64)mr")>;
2093 def: InstRW<[BWWriteResGroup66], (instregex "TEST(8|16|32|64)mi")>;
2094 def: InstRW<[BWWriteResGroup66], (instregex "XOR(8|16|32|64)rm")>;
2079 def: InstRW<[BWWriteResGroup66], (instregex "ADD(8|16|32|64)rm",
2080 "AND(8|16|32|64)rm",
2081 "CMP(8|16|32|64)mi",
2082 "CMP(8|16|32|64)mr",
2083 "CMP(8|16|32|64)rm",
2084 "OR(8|16|32|64)rm",
2085 "POP(16|32|64)rmr",
2086 "SUB(8|16|32|64)rm",
2087 "TEST(8|16|32|64)mr",
2088 "TEST(8|16|32|64)mi",
2089 "XOR(8|16|32|64)rm")>;
20952090
20962091 def BWWriteResGroup67 : SchedWriteRes<[BWPort1,BWPort06,BWPort0156]> {
20972092 let Latency = 6;
20982093 let NumMicroOps = 4;
20992094 let ResourceCycles = [1,1,2];
21002095 }
2101 def: InstRW<[BWWriteResGroup67], (instregex "SHLD(16|32|64)rrCL")>;
2102 def: InstRW<[BWWriteResGroup67], (instregex "SHRD(16|32|64)rrCL")>;
2096 def: InstRW<[BWWriteResGroup67], (instregex "SHLD(16|32|64)rrCL",
2097 "SHRD(16|32|64)rrCL")>;
21032098
21042099 def BWWriteResGroup68 : SchedWriteRes<[BWPort1,BWPort6,BWPort06,BWPort0156]> {
21052100 let Latency = 6;
21132108 let NumMicroOps = 4;
21142109 let ResourceCycles = [1,1,1,1];
21152110 }
2116 def: InstRW<[BWWriteResGroup69], (instregex "BTC(16|32|64)mi8")>;
2117 def: InstRW<[BWWriteResGroup69], (instregex "BTR(16|32|64)mi8")>;
2118 def: InstRW<[BWWriteResGroup69], (instregex "BTS(16|32|64)mi8")>;
2119 def: InstRW<[BWWriteResGroup69], (instregex "SAR(8|16|32|64)m1")>;
2120 def: InstRW<[BWWriteResGroup69], (instregex "SAR(8|16|32|64)mi")>;
2121 def: InstRW<[BWWriteResGroup69], (instregex "SHL(8|16|32|64)m1")>;
2122 def: InstRW<[BWWriteResGroup69], (instregex "SHL(8|16|32|64)mi")>;
2123 def: InstRW<[BWWriteResGroup69], (instregex "SHR(8|16|32|64)m1")>;
2124 def: InstRW<[BWWriteResGroup69], (instregex "SHR(8|16|32|64)mi")>;
2111 def: InstRW<[BWWriteResGroup69], (instregex "BTC(16|32|64)mi8",
2112 "BTR(16|32|64)mi8",
2113 "BTS(16|32|64)mi8",
2114 "SAR(8|16|32|64)m1",
2115 "SAR(8|16|32|64)mi",
2116 "SHL(8|16|32|64)m1",
2117 "SHL(8|16|32|64)mi",
2118 "SHR(8|16|32|64)m1",
2119 "SHR(8|16|32|64)mi")>;
21252120
21262121 def BWWriteResGroup70 : SchedWriteRes<[BWPort4,BWPort23,BWPort237,BWPort0156]> {
21272122 let Latency = 6;
21282123 let NumMicroOps = 4;
21292124 let ResourceCycles = [1,1,1,1];
21302125 }
2131 def: InstRW<[BWWriteResGroup70], (instregex "ADD(8|16|32|64)mi")>;
2132 def: InstRW<[BWWriteResGroup70], (instregex "ADD(8|16|32|64)mr")>;
2133 def: InstRW<[BWWriteResGroup70], (instregex "AND(8|16|32|64)mi")>;
2134 def: InstRW<[BWWriteResGroup70], (instregex "AND(8|16|32|64)mr")>;
2135 def: InstRW<[BWWriteResGroup70], (instregex "DEC(8|16|32|64)m")>;
2136 def: InstRW<[BWWriteResGroup70], (instregex "INC(8|16|32|64)m")>;
2137 def: InstRW<[BWWriteResGroup70], (instregex "NEG(8|16|32|64)m")>;
2138 def: InstRW<[BWWriteResGroup70], (instregex "NOT(8|16|32|64)m")>;
2139 def: InstRW<[BWWriteResGroup70], (instregex "OR(8|16|32|64)mi")>;
2140 def: InstRW<[BWWriteResGroup70], (instregex "OR(8|16|32|64)mr")>;
2141 def: InstRW<[BWWriteResGroup70], (instregex "POP(16|32|64)rmm")>;
2142 def: InstRW<[BWWriteResGroup70], (instregex "PUSH(16|32|64)rmm")>;
2143 def: InstRW<[BWWriteResGroup70], (instregex "SUB(8|16|32|64)mi")>;
2144 def: InstRW<[BWWriteResGroup70], (instregex "SUB(8|16|32|64)mr")>;
2145 def: InstRW<[BWWriteResGroup70], (instregex "XOR(8|16|32|64)mi")>;
2146 def: InstRW<[BWWriteResGroup70], (instregex "XOR(8|16|32|64)mr")>;
2126 def: InstRW<[BWWriteResGroup70], (instregex "ADD(8|16|32|64)mi",
2127 "ADD(8|16|32|64)mr",
2128 "AND(8|16|32|64)mi",
2129 "AND(8|16|32|64)mr",
2130 "DEC(8|16|32|64)m",
2131 "INC(8|16|32|64)m",
2132 "NEG(8|16|32|64)m",
2133 "NOT(8|16|32|64)m",
2134 "OR(8|16|32|64)mi",
2135 "OR(8|16|32|64)mr",
2136 "POP(16|32|64)rmm",
2137 "PUSH(16|32|64)rmm",
2138 "SUB(8|16|32|64)mi",
2139 "SUB(8|16|32|64)mr",
2140 "XOR(8|16|32|64)mi",
2141 "XOR(8|16|32|64)mr")>;
21472142
21482143 def BWWriteResGroup71 : SchedWriteRes<[BWPort6,BWPort0156]> {
21492144 let Latency = 6;
21572152 let NumMicroOps = 1;
21582153 let ResourceCycles = [1];
21592154 }
2160 def: InstRW<[BWWriteResGroup72], (instregex "AESDECLASTrr")>;
2161 def: InstRW<[BWWriteResGroup72], (instregex "AESDECrr")>;
2162 def: InstRW<[BWWriteResGroup72], (instregex "AESENCLASTrr")>;
2163 def: InstRW<[BWWriteResGroup72], (instregex "AESENCrr")>;
2164 def: InstRW<[BWWriteResGroup72], (instregex "VAESDECLASTrr")>;
2165 def: InstRW<[BWWriteResGroup72], (instregex "VAESDECrr")>;
2166 def: InstRW<[BWWriteResGroup72], (instregex "VAESENCLASTrr")>;
2167 def: InstRW<[BWWriteResGroup72], (instregex "VAESENCrr")>;
2155 def: InstRW<[BWWriteResGroup72], (instregex "AESDECLASTrr",
2156 "AESDECrr",
2157 "AESENCLASTrr",
2158 "AESENCrr",
2159 "VAESDECLASTrr",
2160 "VAESDECrr",
2161 "VAESENCLASTrr",
2162 "VAESENCrr")>;
21682163
21692164 def BWWriteResGroup73 : SchedWriteRes<[BWPort0,BWPort23]> {
21702165 let Latency = 7;
21712166 let NumMicroOps = 2;
21722167 let ResourceCycles = [1,1];
21732168 }
2174 def: InstRW<[BWWriteResGroup73], (instregex "VPSLLDYrm")>;
2175 def: InstRW<[BWWriteResGroup73], (instregex "VPSLLQYrm")>;
2176 def: InstRW<[BWWriteResGroup73], (instregex "VPSLLVQYrm")>;
2177 def: InstRW<[BWWriteResGroup73], (instregex "VPSLLWYrm")>;
2178 def: InstRW<[BWWriteResGroup73], (instregex "VPSRADYrm")>;
2179 def: InstRW<[BWWriteResGroup73], (instregex "VPSRAWYrm")>;
2180 def: InstRW<[BWWriteResGroup73], (instregex "VPSRLDYrm")>;
2181 def: InstRW<[BWWriteResGroup73], (instregex "VPSRLQYrm")>;
2182 def: InstRW<[BWWriteResGroup73], (instregex "VPSRLVQYrm")>;
2183 def: InstRW<[BWWriteResGroup73], (instregex "VPSRLWYrm")>;
2184 def: InstRW<[BWWriteResGroup73], (instregex "VTESTPDYrm")>;
2185 def: InstRW<[BWWriteResGroup73], (instregex "VTESTPSYrm")>;
2169 def: InstRW<[BWWriteResGroup73], (instregex "VPSLLDYrm",
2170 "VPSLLQYrm",
2171 "VPSLLVQYrm",
2172 "VPSLLWYrm",
2173 "VPSRADYrm",
2174 "VPSRAWYrm",
2175 "VPSRLDYrm",
2176 "VPSRLQYrm",
2177 "VPSRLVQYrm",
2178 "VPSRLWYrm",
2179 "VTESTPDYrm",
2180 "VTESTPSYrm")>;
21862181
21872182 def BWWriteResGroup74 : SchedWriteRes<[BWPort1,BWPort23]> {
21882183 let Latency = 7;
21892184 let NumMicroOps = 2;
21902185 let ResourceCycles = [1,1];
21912186 }
2192 def: InstRW<[BWWriteResGroup74], (instregex "FCOM32m")>;
2193 def: InstRW<[BWWriteResGroup74], (instregex "FCOM64m")>;
2194 def: InstRW<[BWWriteResGroup74], (instregex "FCOMP32m")>;
2195 def: InstRW<[BWWriteResGroup74], (instregex "FCOMP64m")>;
2187 def: InstRW<[BWWriteResGroup74], (instregex "FCOM32m",
2188 "FCOM64m",
2189 "FCOMP32m",
2190 "FCOMP64m")>;
21962191
21972192 def BWWriteResGroup75 : SchedWriteRes<[BWPort5,BWPort23]> {
21982193 let Latency = 7;
21992194 let NumMicroOps = 2;
22002195 let ResourceCycles = [1,1];
22012196 }
2202 def: InstRW<[BWWriteResGroup75], (instregex "VANDNPDYrm")>;
2203 def: InstRW<[BWWriteResGroup75], (instregex "VANDNPSYrm")>;
2204 def: InstRW<[BWWriteResGroup75], (instregex "VANDPDYrm")>;
2205 def: InstRW<[BWWriteResGroup75], (instregex "VANDPSYrm")>;
2206 def: InstRW<[BWWriteResGroup75], (instregex "VORPDYrm")>;
2207 def: InstRW<[BWWriteResGroup75], (instregex "VORPSYrm")>;
2208 def: InstRW<[BWWriteResGroup75], (instregex "VPACKSSDWYrm")>;
2209 def: InstRW<[BWWriteResGroup75], (instregex "VPACKSSWBYrm")>;
2210 def: InstRW<[BWWriteResGroup75], (instregex "VPACKUSDWYrm")>;
2211 def: InstRW<[BWWriteResGroup75], (instregex "VPACKUSWBYrm")>;
2212 def: InstRW<[BWWriteResGroup75], (instregex "VPALIGNRYrmi")>;
2213 def: InstRW<[BWWriteResGroup75], (instregex "VPBLENDWYrmi")>;
2214 def: InstRW<[BWWriteResGroup75], (instregex "VPERMILPDYmi")>;
2215 def: InstRW<[BWWriteResGroup75], (instregex "VPERMILPDYrm")>;
2216 def: InstRW<[BWWriteResGroup75], (instregex "VPERMILPSYmi")>;
2217 def: InstRW<[BWWriteResGroup75], (instregex "VPERMILPSYrm")>;
2218 def: InstRW<[BWWriteResGroup75], (instregex "VPSHUFBYrm")>;
2219 def: InstRW<[BWWriteResGroup75], (instregex "VPSHUFDYmi")>;
2220 def: InstRW<[BWWriteResGroup75], (instregex "VPSHUFHWYmi")>;
2221 def: InstRW<[BWWriteResGroup75], (instregex "VPSHUFLWYmi")>;
2222 def: InstRW<[BWWriteResGroup75], (instregex "VPUNPCKHBWYrm")>;
2223 def: InstRW<[BWWriteResGroup75], (instregex "VPUNPCKHDQYrm")>;
2224 def: InstRW<[BWWriteResGroup75], (instregex "VPUNPCKHQDQYrm")>;
2225 def: InstRW<[BWWriteResGroup75], (instregex "VPUNPCKHWDYrm")>;
2226 def: InstRW<[BWWriteResGroup75], (instregex "VPUNPCKLBWYrm")>;
2227 def: InstRW<[BWWriteResGroup75], (instregex "VPUNPCKLDQYrm")>;
2228 def: InstRW<[BWWriteResGroup75], (instregex "VPUNPCKLQDQYrm")>;
2229 def: InstRW<[BWWriteResGroup75], (instregex "VPUNPCKLWDYrm")>;
2230 def: InstRW<[BWWriteResGroup75], (instregex "VSHUFPDYrmi")>;
2231 def: InstRW<[BWWriteResGroup75], (instregex "VSHUFPSYrmi")>;
2232 def: InstRW<[BWWriteResGroup75], (instregex "VUNPCKHPDYrm")>;
2233 def: InstRW<[BWWriteResGroup75], (instregex "VUNPCKHPSYrm")>;
2234 def: InstRW<[BWWriteResGroup75], (instregex "VUNPCKLPDYrm")>;
2235 def: InstRW<[BWWriteResGroup75], (instregex "VUNPCKLPSYrm")>;
2236 def: InstRW<[BWWriteResGroup75], (instregex "VXORPDYrm")>;
2237 def: InstRW<[BWWriteResGroup75], (instregex "VXORPSYrm")>;
2197 def: InstRW<[BWWriteResGroup75], (instregex "VANDNPDYrm",
2198 "VANDNPSYrm",
2199 "VANDPDYrm",
2200 "VANDPSYrm",
2201 "VORPDYrm",
2202 "VORPSYrm",
2203 "VPACKSSDWYrm",
2204 "VPACKSSWBYrm",
2205 "VPACKUSDWYrm",
2206 "VPACKUSWBYrm",
2207 "VPALIGNRYrmi",
2208 "VPBLENDWYrmi",
2209 "VPERMILPDYmi",
2210 "VPERMILPDYrm",
2211 "VPERMILPSYmi",
2212 "VPERMILPSYrm",
2213 "VPSHUFBYrm",
2214 "VPSHUFDYmi",
2215 "VPSHUFHWYmi",
2216 "VPSHUFLWYmi",
2217 "VPUNPCKHBWYrm",
2218 "VPUNPCKHDQYrm",
2219 "VPUNPCKHQDQYrm",
2220 "VPUNPCKHWDYrm",
2221 "VPUNPCKLBWYrm",
2222 "VPUNPCKLDQYrm",
2223 "VPUNPCKLQDQYrm",
2224 "VPUNPCKLWDYrm",
2225 "VSHUFPDYrmi",
2226 "VSHUFPSYrmi",
2227 "VUNPCKHPDYrm",
2228 "VUNPCKHPSYrm",
2229 "VUNPCKLPDYrm",
2230 "VUNPCKLPSYrm",
2231 "VXORPDYrm",
2232 "VXORPSYrm")>;
22382233
22392234 def BWWriteResGroup76 : SchedWriteRes<[BWPort23,BWPort15]> {