[llvm] r328434 - [X86][Broadwell] Merge xmm/ymm instructions instregex entries to reduce regex matches to reduce compile time

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Sat Mar 24 12:37:29 PDT 2018


Author: rksimon
Date: Sat Mar 24 12:37:28 2018
New Revision: 328434

URL: http://llvm.org/viewvc/llvm-project?rev=328434&view=rev
Log:
[X86][Broadwell] Merge xmm/ymm instructions instregex entries to reduce regex matches to reduce compile time

Modified:
    llvm/trunk/lib/Target/X86/X86SchedBroadwell.td

Modified: llvm/trunk/lib/Target/X86/X86SchedBroadwell.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedBroadwell.td?rev=328434&r1=328433&r2=328434&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedBroadwell.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedBroadwell.td Sat Mar 24 12:37:28 2018
@@ -22,7 +22,7 @@ def BroadwellModel : SchedMachineModel {
   // Based on the LSD (loop-stream detector) queue size and benchmarking data.
   let LoopMicroOpBufferSize = 50;
 
-  // This flag is set to allow the scheduler to assign a default model to 
+  // This flag is set to allow the scheduler to assign a default model to
   // unrecognized opcodes.
   let CompleteModel = 0;
 }
@@ -306,42 +306,20 @@ def: InstRW<[BWWriteResGroup1], (instreg
                                            "MMX_PSRLQrr",
                                            "MMX_PSRLWri",
                                            "MMX_PSRLWrr",
-                                           "MOVPDI2DIrr",
-                                           "MOVPQIto64rr",
-                                           "PSLLDri",
-                                           "PSLLQri",
-                                           "PSLLWri",
-                                           "PSRADri",
-                                           "PSRAWri",
-                                           "PSRLDri",
-                                           "PSRLQri",
-                                           "PSRLWri",
-                                           "VMOVPDI2DIrr",
-                                           "VMOVPQIto64rr",
-                                           "VPSLLDYri",
-                                           "VPSLLDri",
-                                           "VPSLLQYri",
-                                           "VPSLLQri",
-                                           "VPSLLVQYrr",
-                                           "VPSLLVQrr",
-                                           "VPSLLWYri",
-                                           "VPSLLWri",
-                                           "VPSRADYri",
-                                           "VPSRADri",
-                                           "VPSRAWYri",
-                                           "VPSRAWri",
-                                           "VPSRLDYri",
-                                           "VPSRLDri",
-                                           "VPSRLQYri",
-                                           "VPSRLQri",
-                                           "VPSRLVQYrr",
-                                           "VPSRLVQrr",
-                                           "VPSRLWYri",
-                                           "VPSRLWri",
-                                           "VTESTPDYrr",
-                                           "VTESTPDrr",
-                                           "VTESTPSYrr",
-                                           "VTESTPSrr")>;
+                                           "(V?)MOVPDI2DIrr",
+                                           "(V?)MOVPQIto64rr",
+                                           "(V?)PSLLD(Y?)ri",
+                                           "(V?)PSLLQ(Y?)ri",
+                                           "VPSLLVQ(Y?)rr",
+                                           "(V?)PSLLW(Y?)ri",
+                                           "(V?)PSRAD(Y?)ri",
+                                           "(V?)PSRAW(Y?)ri",
+                                           "(V?)PSRLD(Y?)ri",
+                                           "(V?)PSRLQ(Y?)ri",
+                                           "VPSRLVQ(Y?)rr",
+                                           "(V?)PSRLW(Y?)ri",
+                                           "VTESTPD(Y?)rr",
+                                           "VTESTPS(Y?)rr")>;
 
 def BWWriteResGroup2 : SchedWriteRes<[BWPort1]> {
   let Latency = 1;
@@ -358,12 +336,7 @@ def BWWriteResGroup3 : SchedWriteRes<[BW
   let NumMicroOps = 1;
   let ResourceCycles = [1];
 }
-def: InstRW<[BWWriteResGroup3], (instregex "ANDNPDrr",
-                                           "ANDNPSrr",
-                                           "ANDPDrr",
-                                           "ANDPSrr",
-                                           "INSERTPSrr",
-                                           "MMX_MOVD64rr",
+def: InstRW<[BWWriteResGroup3], (instregex "MMX_MOVD64rr",
                                            "MMX_MOVD64to64rr",
                                            "MMX_MOVQ2DQrr",
                                            "MMX_PALIGNRrri",
@@ -375,173 +348,73 @@ def: InstRW<[BWWriteResGroup3], (instreg
                                            "MMX_PUNPCKLBWirr",
                                            "MMX_PUNPCKLDQirr",
                                            "MMX_PUNPCKLWDirr",
-                                           "MOV64toPQIrr",
-                                           "MOVAPDrr",
-                                           "MOVAPSrr",
-                                           "MOVDDUPrr",
-                                           "MOVDI2PDIrr",
-                                           "MOVHLPSrr",
-                                           "MOVLHPSrr",
-                                           "MOVSDrr",
-                                           "MOVSHDUPrr",
-                                           "MOVSLDUPrr",
-                                           "MOVSSrr",
-                                           "MOVUPDrr",
-                                           "MOVUPSrr",
-                                           "ORPDrr",
-                                           "ORPSrr",
-                                           "PACKSSDWrr",
-                                           "PACKSSWBrr",
-                                           "PACKUSDWrr",
-                                           "PACKUSWBrr",
-                                           "PALIGNRrri",
-                                           "PBLENDWrri",
-                                           "PMOVSXBDrr",
-                                           "PMOVSXBQrr",
-                                           "PMOVSXBWrr",
-                                           "PMOVSXDQrr",
-                                           "PMOVSXWDrr",
-                                           "PMOVSXWQrr",
-                                           "PMOVZXBDrr",
-                                           "PMOVZXBQrr",
-                                           "PMOVZXBWrr",
-                                           "PMOVZXDQrr",
-                                           "PMOVZXWDrr",
-                                           "PMOVZXWQrr",
-                                           "PSHUFBrr",
-                                           "PSHUFDri",
-                                           "PSHUFHWri",
-                                           "PSHUFLWri",
-                                           "PSLLDQri",
-                                           "PSRLDQri",
-                                           "PUNPCKHBWrr",
-                                           "PUNPCKHDQrr",
-                                           "PUNPCKHQDQrr",
-                                           "PUNPCKHWDrr",
-                                           "PUNPCKLBWrr",
-                                           "PUNPCKLDQrr",
-                                           "PUNPCKLQDQrr",
-                                           "PUNPCKLWDrr",
-                                           "SHUFPDrri",
-                                           "SHUFPSrri",
-                                           "UNPCKHPDrr",
-                                           "UNPCKHPSrr",
-                                           "UNPCKLPDrr",
-                                           "UNPCKLPSrr",
-                                           "VANDNPDYrr",
-                                           "VANDNPDrr",
-                                           "VANDNPSYrr",
-                                           "VANDNPSrr",
-                                           "VANDPDYrr",
-                                           "VANDPDrr",
-                                           "VANDPSYrr",
-                                           "VANDPSrr",
+                                           "(V?)ANDNPD(Y?)rr",
+                                           "(V?)ANDNPS(Y?)rr",
+                                           "(V?)ANDPD(Y?)rr",
+                                           "(V?)ANDPS(Y?)rr",
                                            "VBROADCASTSSrr",
-                                           "VINSERTPSrr",
-                                           "VMOV64toPQIrr",
-                                           "VMOVAPDYrr",
-                                           "VMOVAPDrr",
-                                           "VMOVAPSYrr",
-                                           "VMOVAPSrr",
-                                           "VMOVDDUPYrr",
-                                           "VMOVDDUPrr",
-                                           "VMOVDI2PDIrr",
-                                           "VMOVHLPSrr",
-                                           "VMOVLHPSrr",
-                                           "VMOVSDrr",
-                                           "VMOVSHDUPYrr",
-                                           "VMOVSHDUPrr",
-                                           "VMOVSLDUPYrr",
-                                           "VMOVSLDUPrr",
-                                           "VMOVSSrr",
-                                           "VMOVUPDYrr",
-                                           "VMOVUPDrr",
-                                           "VMOVUPSYrr",
-                                           "VMOVUPSrr",
-                                           "VORPDYrr",
-                                           "VORPDrr",
-                                           "VORPSYrr",
-                                           "VORPSrr",
-                                           "VPACKSSDWYrr",
-                                           "VPACKSSDWrr",
-                                           "VPACKSSWBYrr",
-                                           "VPACKSSWBrr",
-                                           "VPACKUSDWYrr",
-                                           "VPACKUSDWrr",
-                                           "VPACKUSWBYrr",
-                                           "VPACKUSWBrr",
-                                           "VPALIGNRYrri",
-                                           "VPALIGNRrri",
-                                           "VPBLENDWYrri",
-                                           "VPBLENDWrri",
+                                           "(V?)INSERTPSrr",
+                                           "(V?)MOV64toPQIrr",
+                                           "(V?)MOVAPD(Y?)rr",
+                                           "(V?)MOVAPS(Y?)rr",
+                                           "(V?)MOVDDUP(Y?)rr",
+                                           "(V?)MOVDI2PDIrr",
+                                           "(V?)MOVHLPSrr",
+                                           "(V?)MOVLHPSrr",
+                                           "(V?)MOVSDrr",
+                                           "(V?)MOVSHDUP(Y?)rr",
+                                           "(V?)MOVSLDUP(Y?)rr",
+                                           "(V?)MOVSSrr",
+                                           "(V?)MOVUPD(Y?)rr",
+                                           "(V?)MOVUPS(Y?)rr",
+                                           "(V?)ORPD(Y?)rr",
+                                           "(V?)ORPS(Y?)rr",
+                                           "(V?)PACKSSDW(Y?)rr",
+                                           "(V?)PACKSSWB(Y?)rr",
+                                           "(V?)PACKUSDW(Y?)rr",
+                                           "(V?)PACKUSWB(Y?)rr",
+                                           "(V?)PALIGNR(Y?)rri",
+                                           "(V?)PBLENDW(Y?)rri",
                                            "VPBROADCASTDrr",
                                            "VPBROADCASTQrr",
-                                           "VPERMILPDYri",
-                                           "VPERMILPDYrr",
-                                           "VPERMILPDri",
-                                           "VPERMILPDrr",
-                                           "VPERMILPSYri",
-                                           "VPERMILPSYrr",
-                                           "VPERMILPSri",
-                                           "VPERMILPSrr",
-                                           "VPMOVSXBDrr",
-                                           "VPMOVSXBQrr",
-                                           "VPMOVSXBWrr",
-                                           "VPMOVSXDQrr",
-                                           "VPMOVSXWDrr",
-                                           "VPMOVSXWQrr",
-                                           "VPMOVZXBDrr",
-                                           "VPMOVZXBQrr",
-                                           "VPMOVZXBWrr",
-                                           "VPMOVZXDQrr",
-                                           "VPMOVZXWDrr",
-                                           "VPMOVZXWQrr",
-                                           "VPSHUFBYrr",
-                                           "VPSHUFBrr",
-                                           "VPSHUFDYri",
-                                           "VPSHUFDri",
-                                           "VPSHUFHWYri",
-                                           "VPSHUFHWri",
-                                           "VPSHUFLWYri",
-                                           "VPSHUFLWri",
-                                           "VPSLLDQYri",
-                                           "VPSLLDQri",
-                                           "VPSRLDQYri",
-                                           "VPSRLDQri",
-                                           "VPUNPCKHBWYrr",
-                                           "VPUNPCKHBWrr",
-                                           "VPUNPCKHDQYrr",
-                                           "VPUNPCKHDQrr",
-                                           "VPUNPCKHQDQYrr",
-                                           "VPUNPCKHQDQrr",
-                                           "VPUNPCKHWDYrr",
-                                           "VPUNPCKHWDrr",
-                                           "VPUNPCKLBWYrr",
-                                           "VPUNPCKLBWrr",
-                                           "VPUNPCKLDQYrr",
-                                           "VPUNPCKLDQrr",
-                                           "VPUNPCKLQDQYrr",
-                                           "VPUNPCKLQDQrr",
-                                           "VPUNPCKLWDYrr",
-                                           "VPUNPCKLWDrr",
-                                           "VSHUFPDYrri",
-                                           "VSHUFPDrri",
-                                           "VSHUFPSYrri",
-                                           "VSHUFPSrri",
-                                           "VUNPCKHPDYrr",
-                                           "VUNPCKHPDrr",
-                                           "VUNPCKHPSYrr",
-                                           "VUNPCKHPSrr",
-                                           "VUNPCKLPDYrr",
-                                           "VUNPCKLPDrr",
-                                           "VUNPCKLPSYrr",
-                                           "VUNPCKLPSrr",
-                                           "VXORPDYrr",
-                                           "VXORPDrr",
-                                           "VXORPSYrr",
-                                           "VXORPSrr",
-                                           "XORPDrr",
-                                           "XORPSrr")>;
+                                           "VPERMILPD(Y?)ri",
+                                           "VPERMILPD(Y?)rr",
+                                           "VPERMILPS(Y?)ri",
+                                           "VPERMILPS(Y?)rr",
+                                           "(V?)PMOVSXBDrr",
+                                           "(V?)PMOVSXBQrr",
+                                           "(V?)PMOVSXBWrr",
+                                           "(V?)PMOVSXDQrr",
+                                           "(V?)PMOVSXWDrr",
+                                           "(V?)PMOVSXWQrr",
+                                           "(V?)PMOVZXBDrr",
+                                           "(V?)PMOVZXBQrr",
+                                           "(V?)PMOVZXBWrr",
+                                           "(V?)PMOVZXDQrr",
+                                           "(V?)PMOVZXWDrr",
+                                           "(V?)PMOVZXWQrr",
+                                           "(V?)PSHUFB(Y?)rr",
+                                           "(V?)PSHUFD(Y?)ri",
+                                           "(V?)PSHUFHW(Y?)ri",
+                                           "(V?)PSHUFLW(Y?)ri",
+                                           "(V?)PSLLDQ(Y?)ri",
+                                           "(V?)PSRLDQ(Y?)ri",
+                                           "(V?)PUNPCKHBW(Y?)rr",
+                                           "(V?)PUNPCKHDQ(Y?)rr",
+                                           "(V?)PUNPCKHQDQ(Y?)rr",
+                                           "(V?)PUNPCKHWD(Y?)rr",
+                                           "(V?)PUNPCKLBW(Y?)rr",
+                                           "(V?)PUNPCKLDQ(Y?)rr",
+                                           "(V?)PUNPCKLQDQ(Y?)rr",
+                                           "(V?)PUNPCKLWD(Y?)rr",
+                                           "(V?)SHUFPD(Y?)rri",
+                                           "(V?)SHUFPS(Y?)rri",
+                                           "(V?)UNPCKHPD(Y?)rr",
+                                           "(V?)UNPCKHPS(Y?)rr",
+                                           "(V?)UNPCKLPD(Y?)rr",
+                                           "(V?)UNPCKLPS(Y?)rr",
+                                           "(V?)XORPD(Y?)rr",
+                                           "(V?)XORPS(Y?)rr")>;
 
 def BWWriteResGroup4 : SchedWriteRes<[BWPort6]> {
   let Latency = 1;
@@ -643,175 +516,71 @@ def: InstRW<[BWWriteResGroup7], (instreg
                                            "MMX_PSUBUSBirr",
                                            "MMX_PSUBUSWirr",
                                            "MMX_PSUBWirr",
-                                           "PABSBrr",
-                                           "PABSDrr",
-                                           "PABSWrr",
-                                           "PADDBrr",
-                                           "PADDDrr",
-                                           "PADDQrr",
-                                           "PADDSBrr",
-                                           "PADDSWrr",
-                                           "PADDUSBrr",
-                                           "PADDUSWrr",
-                                           "PADDWrr",
-                                           "PAVGBrr",
-                                           "PAVGWrr",
-                                           "PCMPEQBrr",
-                                           "PCMPEQDrr",
-                                           "PCMPEQQrr",
-                                           "PCMPEQWrr",
-                                           "PCMPGTBrr",
-                                           "PCMPGTDrr",
-                                           "PCMPGTWrr",
-                                           "PMAXSBrr",
-                                           "PMAXSDrr",
-                                           "PMAXSWrr",
-                                           "PMAXUBrr",
-                                           "PMAXUDrr",
-                                           "PMAXUWrr",
-                                           "PMINSBrr",
-                                           "PMINSDrr",
-                                           "PMINSWrr",
-                                           "PMINUBrr",
-                                           "PMINUDrr",
-                                           "PMINUWrr",
-                                           "PSIGNBrr",
-                                           "PSIGNDrr",
-                                           "PSIGNWrr",
-                                           "PSUBBrr",
-                                           "PSUBDrr",
-                                           "PSUBQrr",
-                                           "PSUBSBrr",
-                                           "PSUBSWrr",
-                                           "PSUBUSBrr",
-                                           "PSUBUSWrr",
-                                           "PSUBWrr",
-                                           "VPABSBYrr",
-                                           "VPABSBrr",
-                                           "VPABSDYrr",
-                                           "VPABSDrr",
-                                           "VPABSWYrr",
-                                           "VPABSWrr",
-                                           "VPADDBYrr",
-                                           "VPADDBrr",
-                                           "VPADDDYrr",
-                                           "VPADDDrr",
-                                           "VPADDQYrr",
-                                           "VPADDQrr",
-                                           "VPADDSBYrr",
-                                           "VPADDSBrr",
-                                           "VPADDSWYrr",
-                                           "VPADDSWrr",
-                                           "VPADDUSBYrr",
-                                           "VPADDUSBrr",
-                                           "VPADDUSWYrr",
-                                           "VPADDUSWrr",
-                                           "VPADDWYrr",
-                                           "VPADDWrr",
-                                           "VPAVGBYrr",
-                                           "VPAVGBrr",
-                                           "VPAVGWYrr",
-                                           "VPAVGWrr",
-                                           "VPCMPEQBYrr",
-                                           "VPCMPEQBrr",
-                                           "VPCMPEQDYrr",
-                                           "VPCMPEQDrr",
-                                           "VPCMPEQQYrr",
-                                           "VPCMPEQQrr",
-                                           "VPCMPEQWYrr",
-                                           "VPCMPEQWrr",
-                                           "VPCMPGTBYrr",
-                                           "VPCMPGTBrr",
-                                           "VPCMPGTDYrr",
-                                           "VPCMPGTDrr",
-                                           "VPCMPGTWYrr",
-                                           "VPCMPGTWrr",
-                                           "VPMAXSBYrr",
-                                           "VPMAXSBrr",
-                                           "VPMAXSDYrr",
-                                           "VPMAXSDrr",
-                                           "VPMAXSWYrr",
-                                           "VPMAXSWrr",
-                                           "VPMAXUBYrr",
-                                           "VPMAXUBrr",
-                                           "VPMAXUDYrr",
-                                           "VPMAXUDrr",
-                                           "VPMAXUWYrr",
-                                           "VPMAXUWrr",
-                                           "VPMINSBYrr",
-                                           "VPMINSBrr",
-                                           "VPMINSDYrr",
-                                           "VPMINSDrr",
-                                           "VPMINSWYrr",
-                                           "VPMINSWrr",
-                                           "VPMINUBYrr",
-                                           "VPMINUBrr",
-                                           "VPMINUDYrr",
-                                           "VPMINUDrr",
-                                           "VPMINUWYrr",
-                                           "VPMINUWrr",
-                                           "VPSIGNBYrr",
-                                           "VPSIGNBrr",
-                                           "VPSIGNDYrr",
-                                           "VPSIGNDrr",
-                                           "VPSIGNWYrr",
-                                           "VPSIGNWrr",
-                                           "VPSUBBYrr",
-                                           "VPSUBBrr",
-                                           "VPSUBDYrr",
-                                           "VPSUBDrr",
-                                           "VPSUBQYrr",
-                                           "VPSUBQrr",
-                                           "VPSUBSBYrr",
-                                           "VPSUBSBrr",
-                                           "VPSUBSWYrr",
-                                           "VPSUBSWrr",
-                                           "VPSUBUSBYrr",
-                                           "VPSUBUSBrr",
-                                           "VPSUBUSWYrr",
-                                           "VPSUBUSWrr",
-                                           "VPSUBWYrr",
-                                           "VPSUBWrr")>;
+                                           "(V?)PABSB(Y?)rr",
+                                           "(V?)PABSD(Y?)rr",
+                                           "(V?)PABSW(Y?)rr",
+                                           "(V?)PADDB(Y?)rr",
+                                           "(V?)PADDD(Y?)rr",
+                                           "(V?)PADDQ(Y?)rr",
+                                           "(V?)PADDSB(Y?)rr",
+                                           "(V?)PADDSW(Y?)rr",
+                                           "(V?)PADDUSB(Y?)rr",
+                                           "(V?)PADDUSW(Y?)rr",
+                                           "(V?)PADDW(Y?)rr",
+                                           "(V?)PAVGB(Y?)rr",
+                                           "(V?)PAVGW(Y?)rr",
+                                           "(V?)PCMPEQB(Y?)rr",
+                                           "(V?)PCMPEQD(Y?)rr",
+                                           "(V?)PCMPEQQ(Y?)rr",
+                                           "(V?)PCMPEQW(Y?)rr",
+                                           "(V?)PCMPGTB(Y?)rr",
+                                           "(V?)PCMPGTD(Y?)rr",
+                                           "(V?)PCMPGTW(Y?)rr",
+                                           "(V?)PMAXSB(Y?)rr",
+                                           "(V?)PMAXSD(Y?)rr",
+                                           "(V?)PMAXSW(Y?)rr",
+                                           "(V?)PMAXUB(Y?)rr",
+                                           "(V?)PMAXUD(Y?)rr",
+                                           "(V?)PMAXUW(Y?)rr",
+                                           "(V?)PMINSB(Y?)rr",
+                                           "(V?)PMINSD(Y?)rr",
+                                           "(V?)PMINSW(Y?)rr",
+                                           "(V?)PMINUB(Y?)rr",
+                                           "(V?)PMINUD(Y?)rr",
+                                           "(V?)PMINUW(Y?)rr",
+                                           "(V?)PSIGNB(Y?)rr",
+                                           "(V?)PSIGND(Y?)rr",
+                                           "(V?)PSIGNW(Y?)rr",
+                                           "(V?)PSUBB(Y?)rr",
+                                           "(V?)PSUBD(Y?)rr",
+                                           "(V?)PSUBQ(Y?)rr",
+                                           "(V?)PSUBSB(Y?)rr",
+                                           "(V?)PSUBSW(Y?)rr",
+                                           "(V?)PSUBUSB(Y?)rr",
+                                           "(V?)PSUBUSW(Y?)rr",
+                                           "(V?)PSUBW(Y?)rr")>;
 
 def BWWriteResGroup8 : SchedWriteRes<[BWPort015]> {
   let Latency = 1;
   let NumMicroOps = 1;
   let ResourceCycles = [1];
 }
-def: InstRW<[BWWriteResGroup8], (instregex "BLENDPDrri",
-                                           "BLENDPSrri",
-                                           "MMX_MOVQ64rr",
+def: InstRW<[BWWriteResGroup8], (instregex "MMX_MOVQ64rr",
                                            "MMX_PANDNirr",
                                            "MMX_PANDirr",
                                            "MMX_PORirr",
                                            "MMX_PXORirr",
-                                           "MOVDQArr",
-                                           "MOVDQUrr",
-                                           "MOVPQI2QIrr",
-                                           "PANDNrr",
-                                           "PANDrr",
-                                           "PORrr",
-                                           "PXORrr",
-                                           "VBLENDPDYrri",
-                                           "VBLENDPDrri",
-                                           "VBLENDPSYrri",
-                                           "VBLENDPSrri",
-                                           "VMOVDQAYrr",
-                                           "VMOVDQArr",
-                                           "VMOVDQUYrr",
-                                           "VMOVDQUrr",
-                                           "VMOVPQI2QIrr",
+                                           "(V?)BLENDPD(Y?)rri",
+                                           "(V?)BLENDPS(Y?)rri",
+                                           "(V?)MOVDQA(Y?)rr",
+                                           "(V?)MOVDQU(Y?)rr",
+                                           "(V?)MOVPQI2QIrr",
                                            "VMOVZPQILo2PQIrr",
-                                           "VPANDNYrr",
-                                           "VPANDNrr",
-                                           "VPANDYrr",
-                                           "VPANDrr",
-                                           "VPBLENDDYrri",
-                                           "VPBLENDDrri",
-                                           "VPORYrr",
-                                           "VPORrr",
-                                           "VPXORYrr",
-                                           "VPXORrr")>;
+                                           "(V?)PANDN(Y?)rr",
+                                           "(V?)PAND(Y?)rr",
+                                           "VPBLENDD(Y?)rri",
+                                           "(V?)POR(Y?)rr",
+                                           "(V?)PXOR(Y?)rr")>;
 
 def BWWriteResGroup9 : SchedWriteRes<[BWPort0156]> {
   let Latency = 1;
@@ -879,58 +648,31 @@ def: InstRW<[BWWriteResGroup10], (instre
                                             "MOV(16|32|64)mr",
                                             "MOV8mi",
                                             "MOV8mr",
-                                            "MOVAPDmr",
-                                            "MOVAPSmr",
-                                            "MOVDQAmr",
-                                            "MOVDQUmr",
-                                            "MOVHPDmr",
-                                            "MOVHPSmr",
-                                            "MOVLPDmr",
-                                            "MOVLPSmr",
-                                            "MOVNTDQmr",
                                             "MOVNTI_64mr",
                                             "MOVNTImr",
-                                            "MOVNTPDmr",
-                                            "MOVNTPSmr",
-                                            "MOVPDI2DImr",
-                                            "MOVPQI2QImr",
-                                            "MOVPQIto64mr",
-                                            "MOVSDmr",
-                                            "MOVSSmr",
-                                            "MOVUPDmr",
-                                            "MOVUPSmr",
                                             "ST_FP32m",
                                             "ST_FP64m",
                                             "ST_FP80m",
                                             "VEXTRACTF128mr",
                                             "VEXTRACTI128mr",
-                                            "VMOVAPDYmr",
-                                            "VMOVAPDmr",
-                                            "VMOVAPSYmr",
-                                            "VMOVAPSmr",
-                                            "VMOVDQAYmr",
-                                            "VMOVDQAmr",
-                                            "VMOVDQUYmr",
-                                            "VMOVDQUmr",
-                                            "VMOVHPDmr",
-                                            "VMOVHPSmr",
-                                            "VMOVLPDmr",
-                                            "VMOVLPSmr",
-                                            "VMOVNTDQYmr",
-                                            "VMOVNTDQmr",
-                                            "VMOVNTPDYmr",
-                                            "VMOVNTPDmr",
-                                            "VMOVNTPSYmr",
-                                            "VMOVNTPSmr",
-                                            "VMOVPDI2DImr",
-                                            "VMOVPQI2QImr",
-                                            "VMOVPQIto64mr",
-                                            "VMOVSDmr",
-                                            "VMOVSSmr",
-                                            "VMOVUPDYmr",
-                                            "VMOVUPDmr",
-                                            "VMOVUPSYmr",
-                                            "VMOVUPSmr")>;
+                                            "(V?)MOVAPD(Y?)mr",
+                                            "(V?)MOVAPS(Y?)mr",
+                                            "(V?)MOVDQA(Y?)mr",
+                                            "(V?)MOVDQU(Y?)mr",
+                                            "(V?)MOVHPDmr",
+                                            "(V?)MOVHPSmr",
+                                            "(V?)MOVLPDmr",
+                                            "(V?)MOVLPSmr",
+                                            "(V?)MOVNTDQ(V?)mr",
+                                            "(V?)MOVNTPD(V?)mr",
+                                            "(V?)MOVNTPS(V?)mr",
+                                            "(V?)MOVPDI2DImr",
+                                            "(V?)MOVPQI2QImr",
+                                            "(V?)MOVPQIto64mr",
+                                            "(V?)MOVSDmr",
+                                            "(V?)MOVSSmr",
+                                            "(V?)MOVUPD(Y?)mr",
+                                            "(V?)MOVUPS(Y?)mr")>;
 
 def BWWriteResGroup11 : SchedWriteRes<[BWPort5]> {
   let Latency = 2;
@@ -941,20 +683,13 @@ def: InstRW<[BWWriteResGroup11], (instre
                                             "BLENDVPSrr0",
                                             "MMX_PINSRWrr",
                                             "PBLENDVBrr0",
-                                            "PINSRBrr",
-                                            "PINSRDrr",
-                                            "PINSRQrr",
-                                            "PINSRWrr",
-                                            "VBLENDVPDYrr",
-                                            "VBLENDVPDrr",
-                                            "VBLENDVPSYrr",
-                                            "VBLENDVPSrr",
-                                            "VPBLENDVBYrr",
-                                            "VPBLENDVBrr",
-                                            "VPINSRBrr",
-                                            "VPINSRDrr",
-                                            "VPINSRQrr",
-                                            "VPINSRWrr")>;
+                                            "VBLENDVPD(Y?)rr",
+                                            "VBLENDVPS(Y?)rr",
+                                            "VPBLENDVB(Y?)rr",
+                                            "(V?)PINSRBrr",
+                                            "(V?)PINSRDrr",
+                                            "(V?)PINSRQrr",
+                                            "(V?)PINSRWrr")>;
 
 def BWWriteResGroup12 : SchedWriteRes<[BWPort01]> {
   let Latency = 2;
@@ -988,41 +723,24 @@ def BWWriteResGroup15 : SchedWriteRes<[B
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[BWWriteResGroup15], (instregex "CVTPS2PDrr",
-                                            "CVTSS2SDrr",
-                                            "EXTRACTPSrr",
-                                            "MMX_PEXTRWrr",
-                                            "PEXTRBrr",
-                                            "PEXTRDrr",
-                                            "PEXTRQrr",
-                                            "PEXTRWrr",
-                                            "PSLLDrr",
-                                            "PSLLQrr",
-                                            "PSLLWrr",
-                                            "PSRADrr",
-                                            "PSRAWrr",
-                                            "PSRLDrr",
-                                            "PSRLQrr",
-                                            "PSRLWrr",
-                                            "PTESTrr",
-                                            "VCVTPH2PSYrr",
-                                            "VCVTPH2PSrr",
-                                            "VCVTPS2PDrr",
-                                            "VCVTSS2SDrr",
-                                            "VEXTRACTPSrr",
-                                            "VPEXTRBrr",
-                                            "VPEXTRDrr",
-                                            "VPEXTRQrr",
-                                            "VPEXTRWrr",
-                                            "VPSLLDrr",
-                                            "VPSLLQrr",
-                                            "VPSLLWrr",
-                                            "VPSRADrr",
-                                            "VPSRAWrr",
-                                            "VPSRLDrr",
-                                            "VPSRLQrr",
-                                            "VPSRLWrr",
-                                            "VPTESTrr")>;
+def: InstRW<[BWWriteResGroup15], (instregex "MMX_PEXTRWrr",
+                                            "VCVTPH2PS(Y?)rr",
+                                            "(V?)CVTPS2PDrr",
+                                            "(V?)CVTSS2SDrr",
+                                            "(V?)EXTRACTPSrr",
+                                            "(V?)PEXTRBrr",
+                                            "(V?)PEXTRDrr",
+                                            "(V?)PEXTRQrr",
+                                            "(V?)PEXTRWrr",
+                                            "(V?)PSLLDrr",
+                                            "(V?)PSLLQrr",
+                                            "(V?)PSLLWrr",
+                                            "(V?)PSRADrr",
+                                            "(V?)PSRAWrr",
+                                            "(V?)PSRLDrr",
+                                            "(V?)PSRLQrr",
+                                            "(V?)PSRLWrr",
+                                            "(V?)PTESTrr")>;
 
 def BWWriteResGroup16 : SchedWriteRes<[BWPort6,BWPort0156]> {
   let Latency = 2;
@@ -1072,18 +790,12 @@ def BWWriteResGroup21 : SchedWriteRes<[B
   let NumMicroOps = 3;
   let ResourceCycles = [1,1,1];
 }
-def: InstRW<[BWWriteResGroup21], (instregex "EXTRACTPSmr",
-                                            "PEXTRBmr",
-                                            "PEXTRDmr",
-                                            "PEXTRQmr",
-                                            "PEXTRWmr",
-                                            "STMXCSR",
-                                            "VEXTRACTPSmr",
-                                            "VPEXTRBmr",
-                                            "VPEXTRDmr",
-                                            "VPEXTRQmr",
-                                            "VPEXTRWmr",
-                                            "VSTMXCSR")>;
+def: InstRW<[BWWriteResGroup21], (instregex "(V?)EXTRACTPSmr",
+                                            "(V?)PEXTRBmr",
+                                            "(V?)PEXTRDmr",
+                                            "(V?)PEXTRQmr",
+                                            "(V?)PEXTRWmr",
+                                            "(V?)STMXCSR")>;
 
 def BWWriteResGroup22 : SchedWriteRes<[BWPort4,BWPort6,BWPort237]> {
   let Latency = 2;
@@ -1124,15 +836,9 @@ def BWWriteResGroup26 : SchedWriteRes<[B
   let NumMicroOps = 1;
   let ResourceCycles = [1];
 }
-def: InstRW<[BWWriteResGroup26], (instregex "MOVMSKPDrr",
-                                            "MOVMSKPSrr",
-                                            "PMOVMSKBrr",
-                                            "VMOVMSKPDYrr",
-                                            "VMOVMSKPDrr",
-                                            "VMOVMSKPSYrr",
-                                            "VMOVMSKPSrr",
-                                            "VPMOVMSKBYrr",
-                                            "VPMOVMSKBrr")>;
+def: InstRW<[BWWriteResGroup26], (instregex "(V?)MOVMSKPD(Y?)rr",
+                                            "(V?)MOVMSKPS(Y?)rr",
+                                            "(V?)PMOVMSKB(Y?)rr")>;
 
 def BWWriteResGroup27 : SchedWriteRes<[BWPort1]> {
   let Latency = 3;
@@ -1141,98 +847,54 @@ def BWWriteResGroup27 : SchedWriteRes<[B
 }
 def: InstRW<[BWWriteResGroup27], (instrs IMUL16rr, IMUL32rr, IMUL32rri, IMUL32rri8, IMUL64rr, IMUL64rri32, IMUL64rri8)>;
 def: InstRW<[BWWriteResGroup27], (instrs IMUL8r, MUL8r)>;
-def: InstRW<[BWWriteResGroup27], (instregex "ADDPDrr",
-                                            "ADDPSrr",
-                                            "ADDSDrr",
-                                            "ADDSSrr",
-                                            "ADDSUBPDrr",
-                                            "ADDSUBPSrr",
-                                            "ADD_FPrST0",
+def: InstRW<[BWWriteResGroup27], (instregex "ADD_FPrST0",
                                             "ADD_FST0r",
                                             "ADD_FrST0",
                                             "BSF(16|32|64)rr",
                                             "BSR(16|32|64)rr",
-                                            "CMPPDrri",
-                                            "CMPPSrri",
-                                            "CMPSDrr",
-                                            "CMPSSrr",
-                                            "COMISDrr",
-                                            "COMISSrr",
-                                            "CVTDQ2PSrr",
-                                            "CVTPS2DQrr",
-                                            "CVTTPS2DQrr",
                                             "LZCNT(16|32|64)rr",
-                                            "MAX(C?)PDrr",
-                                            "MAX(C?)PSrr",
-                                            "MAX(C?)SDrr",
-                                            "MAX(C?)SSrr",
-                                            "MIN(C?)PDrr",
-                                            "MIN(C?)PSrr",
-                                            "MIN(C?)SDrr",
-                                            "MIN(C?)SSrr",
                                             "MMX_CVTPI2PSirr",
                                             "PDEP(32|64)rr",
                                             "PEXT(32|64)rr",
                                             "POPCNT(16|32|64)rr",
                                             "SHLD(16|32|64)rri8",
                                             "SHRD(16|32|64)rri8",
-                                            "SUBPDrr",
-                                            "SUBPSrr",
                                             "SUBR_FPrST0",
                                             "SUBR_FST0r",
                                             "SUBR_FrST0",
-                                            "SUBSDrr",
-                                            "SUBSSrr",
                                             "SUB_FPrST0",
                                             "SUB_FST0r",
                                             "SUB_FrST0",
                                             "TZCNT(16|32|64)rr",
-                                            "UCOMISDrr",
-                                            "UCOMISSrr",
-                                            "VADDPDYrr",
-                                            "VADDPDrr",
-                                            "VADDPSYrr",
-                                            "VADDPSrr",
-                                            "VADDSDrr",
-                                            "VADDSSrr",
-                                            "VADDSUBPDYrr",
-                                            "VADDSUBPDrr",
-                                            "VADDSUBPSYrr",
-                                            "VADDSUBPSrr",
-                                            "VCMPPDYrri",
-                                            "VCMPPDrri",
-                                            "VCMPPSYrri",
-                                            "VCMPPSrri",
-                                            "VCMPSDrr",
-                                            "VCMPSSrr",
-                                            "VCOMISDrr",
-                                            "VCOMISSrr",
-                                            "VCVTDQ2PSYrr",
-                                            "VCVTDQ2PSrr",
-                                            "VCVTPS2DQYrr",
-                                            "VCVTPS2DQrr",
-                                            "VCVTTPS2DQYrr",
-                                            "VCVTTPS2DQrr",
-                                            "VMAX(C?)PDYrr",
-                                            "VMAX(C?)PDrr",
-                                            "VMAX(C?)PSYrr",
-                                            "VMAX(C?)PSrr",
-                                            "VMAX(C?)SDrr",
-                                            "VMAX(C?)SSrr",
-                                            "VMIN(C?)PDYrr",
-                                            "VMIN(C?)PDrr",
-                                            "VMIN(C?)PSYrr",
-                                            "VMIN(C?)PSrr",
-                                            "VMIN(C?)SDrr",
-                                            "VMIN(C?)SSrr",
-                                            "VSUBPDYrr",
-                                            "VSUBPDrr",
-                                            "VSUBPSYrr",
-                                            "VSUBPSrr",
-                                            "VSUBSDrr",
-                                            "VSUBSSrr",
-                                            "VUCOMISDrr",
-                                            "VUCOMISSrr")>;
+                                            "(V?)ADDPD(Y?)rr",
+                                            "(V?)ADDPS(Y?)rr",
+                                            "(V?)ADDSDrr",
+                                            "(V?)ADDSSrr",
+                                            "(V?)ADDSUBPD(Y?)rr",
+                                            "(V?)ADDSUBPS(Y?)rr",
+                                            "(V?)CMPPD(Y?)rri",
+                                            "(V?)CMPPS(Y?)rri",
+                                            "(V?)CMPSDrr",
+                                            "(V?)CMPSSrr",
+                                            "(V?)COMISDrr",
+                                            "(V?)COMISSrr",
+                                            "(V?)CVTDQ2PS(Y?)rr",
+                                            "(V?)CVTPS2DQ(Y?)rr",
+                                            "(V?)CVTTPS2DQ(Y?)rr",
+                                            "(V?)MAX(C?)PD(Y?)rr",
+                                            "(V?)MAX(C?)PS(Y?)rr",
+                                            "(V?)MAX(C?)SDrr",
+                                            "(V?)MAX(C?)SSrr",
+                                            "(V?)MIN(C?)PD(Y?)rr",
+                                            "(V?)MIN(C?)PS(Y?)rr",
+                                            "(V?)MIN(C?)SDrr",
+                                            "(V?)MIN(C?)SSrr",
+                                            "(V?)SUBPD(Y?)rr",
+                                            "(V?)SUBPS(Y?)rr",
+                                            "(V?)SUBSDrr",
+                                            "(V?)SUBSSrr",
+                                            "(V?)UCOMISDrr",
+                                            "(V?)UCOMISSrr")>;
 
 def BWWriteResGroup27_16 : SchedWriteRes<[BWPort1, BWPort0156]> {
   let Latency = 3;
@@ -1252,12 +914,10 @@ def: InstRW<[BWWriteResGroup28], (instre
                                             "VEXTRACTI128rr",
                                             "VINSERTF128rr",
                                             "VINSERTI128rr",
-                                            "VPBROADCASTBYrr",
-                                            "VPBROADCASTBrr",
+                                            "VPBROADCASTB(Y?)rr",
                                             "VPBROADCASTDYrr",
                                             "VPBROADCASTQYrr",
-                                            "VPBROADCASTWYrr",
-                                            "VPBROADCASTWrr",
+                                            "VPBROADCASTW(Y?)rr",
                                             "VPERM2F128rr",
                                             "VPERM2I128rr",
                                             "VPERMDYrr",
@@ -1282,16 +942,10 @@ def BWWriteResGroup29 : SchedWriteRes<[B
   let NumMicroOps = 1;
   let ResourceCycles = [1];
 }
-def: InstRW<[BWWriteResGroup29], (instregex "MULPDrr",
-                                            "MULPSrr",
-                                            "MULSDrr",
-                                            "MULSSrr",
-                                            "VMULPDYrr",
-                                            "VMULPDrr",
-                                            "VMULPSYrr",
-                                            "VMULPSrr",
-                                            "VMULSDrr",
-                                            "VMULSSrr")>;
+def: InstRW<[BWWriteResGroup29], (instregex "(V?)MULPD(Y?)rr",
+                                            "(V?)MULPS(Y?)rr",
+                                            "(V?)MULSDrr",
+                                            "(V?)MULSSrr")>;
 
 def BWWriteResGroup30 : SchedWriteRes<[BWPort0156]> {
   let Latency = 3;
@@ -1306,12 +960,9 @@ def BWWriteResGroup31 : SchedWriteRes<[B
   let NumMicroOps = 3;
   let ResourceCycles = [2,1];
 }
-def: InstRW<[BWWriteResGroup31], (instregex "VPSLLVDYrr",
-                                            "VPSLLVDrr",
-                                            "VPSRAVDYrr",
-                                            "VPSRAVDrr",
-                                            "VPSRLVDYrr",
-                                            "VPSRLVDrr")>;
+def: InstRW<[BWWriteResGroup31], (instregex "VPSLLVD(Y?)rr",
+                                            "VPSRAVD(Y?)rr",
+                                            "VPSRLVD(Y?)rr")>;
 
 def BWWriteResGroup32 : SchedWriteRes<[BWPort5,BWPort15]> {
   let Latency = 3;
@@ -1324,24 +975,12 @@ def: InstRW<[BWWriteResGroup32], (instre
                                             "MMX_PHSUBDrr",
                                             "MMX_PHSUBSWrr",
                                             "MMX_PHSUBWrr",
-                                            "PHADDDrr",
-                                            "PHADDSWrr",
-                                            "PHADDWrr",
-                                            "PHSUBDrr",
-                                            "PHSUBSWrr",
-                                            "PHSUBWrr",
-                                            "VPHADDDYrr",
-                                            "VPHADDDrr",
-                                            "VPHADDSWYrr",
-                                            "VPHADDSWrr",
-                                            "VPHADDWYrr",
-                                            "VPHADDWrr",
-                                            "VPHSUBDYrr",
-                                            "VPHSUBDrr",
-                                            "VPHSUBSWYrr",
-                                            "VPHSUBSWrr",
-                                            "VPHSUBWYrr",
-                                            "VPHSUBWrr")>;
+                                            "(V?)PHADDD(Y?)rr",
+                                            "(V?)PHADDSW(Y?)rr",
+                                            "(V?)PHADDW(Y?)rr",
+                                            "(V?)PHSUBD(Y?)rr",
+                                            "(V?)PHSUBSW(Y?)rr",
+                                            "(V?)PHSUBW(Y?)rr")>;
 
 def BWWriteResGroup33 : SchedWriteRes<[BWPort5,BWPort0156]> {
   let Latency = 3;
@@ -1400,22 +1039,14 @@ def BWWriteResGroup39 : SchedWriteRes<[B
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[BWWriteResGroup39], (instregex "CVTSD2SI64rr",
-                                            "CVTSD2SIrr",
-                                            "CVTSS2SI64rr",
-                                            "CVTSS2SIrr",
-                                            "CVTTSD2SI64rr",
-                                            "CVTTSD2SIrr",
-                                            "CVTTSS2SI64rr",
-                                            "CVTTSS2SIrr",
-                                            "VCVTSD2SI64rr",
-                                            "VCVTSD2SIrr",
-                                            "VCVTSS2SI64rr",
-                                            "VCVTSS2SIrr",
-                                            "VCVTTSD2SI64rr",
-                                            "VCVTTSD2SIrr",
-                                            "VCVTTSS2SI64rr",
-                                            "VCVTTSS2SIrr")>;
+def: InstRW<[BWWriteResGroup39], (instregex "(V?)CVTSD2SI64rr",
+                                            "(V?)CVTSD2SIrr",
+                                            "(V?)CVTSS2SI64rr",
+                                            "(V?)CVTSS2SIrr",
+                                            "(V?)CVTTSD2SI64rr",
+                                            "(V?)CVTTSD2SIrr",
+                                            "(V?)CVTTSS2SI64rr",
+                                            "(V?)CVTTSS2SIrr")>;
 
 def BWWriteResGroup40 : SchedWriteRes<[BWPort0,BWPort5]> {
   let Latency = 4;
@@ -1446,28 +1077,20 @@ def BWWriteResGroup42 : SchedWriteRes<[B
   let ResourceCycles = [1,1];
 }
 def: InstRW<[BWWriteResGroup42], (instrs IMUL64r, MUL64r, MULX64rr)>;
-def: InstRW<[BWWriteResGroup42], (instregex "CVTDQ2PDrr",
-                                            "CVTPD2DQrr",
-                                            "CVTPD2PSrr",
-                                            "CVTSD2SSrr",
-                                            "CVTSI642SDrr",
-                                            "CVTSI2SDrr",
-                                            "CVTSI2SSrr",
-                                            "CVTTPD2DQrr",
-                                            "MMX_CVTPD2PIirr",
+def: InstRW<[BWWriteResGroup42], (instregex "MMX_CVTPD2PIirr",
                                             "MMX_CVTPI2PDirr",
                                             "MMX_CVTPS2PIirr",
                                             "MMX_CVTTPD2PIirr",
                                             "MMX_CVTTPS2PIirr",
-                                            "VCVTDQ2PDrr",
-                                            "VCVTPD2DQrr",
-                                            "VCVTPD2PSrr",
+                                            "(V?)CVTDQ2PDrr",
+                                            "(V?)CVTPD2DQrr",
+                                            "(V?)CVTPD2PSrr",
                                             "VCVTPS2PHrr",
-                                            "VCVTSD2SSrr",
-                                            "VCVTSI642SDrr",
-                                            "VCVTSI2SDrr",
-                                            "VCVTSI2SSrr",
-                                            "VCVTTPD2DQrr")>;
+                                            "(V?)CVTSD2SSrr",
+                                            "(V?)CVTSI642SDrr",
+                                            "(V?)CVTSI2SDrr",
+                                            "(V?)CVTSI2SSrr",
+                                            "(V?)CVTTPD2DQrr")>;
 
 def BWWriteResGroup42_16 : SchedWriteRes<[BWPort1,BWPort06,BWPort0156]> {
   let Latency = 4;
@@ -1495,8 +1118,7 @@ def: InstRW<[BWWriteResGroup44], (instre
                                             "IST_FP16m",
                                             "IST_FP32m",
                                             "IST_FP64m",
-                                            "VCVTPS2PHYmr",
-                                            "VCVTPS2PHmr")>;
+                                            "VCVTPS2PH(Y?)mr")>;
 
 def BWWriteResGroup45 : SchedWriteRes<[BWPort0156]> {
   let Latency = 4;
@@ -1528,46 +1150,21 @@ def: InstRW<[BWWriteResGroup47], (instre
                                             "MUL_FPrST0",
                                             "MUL_FST0r",
                                             "MUL_FrST0",
-                                            "PCMPGTQrr",
-                                            "PHMINPOSUWrr",
-                                            "PMADDUBSWrr",
-                                            "PMADDWDrr",
-                                            "PMULDQrr",
-                                            "PMULHRSWrr",
-                                            "PMULHUWrr",
-                                            "PMULHWrr",
-                                            "PMULLWrr",
-                                            "PMULUDQrr",
-                                            "PSADBWrr",
-                                            "RCPPSr",
-                                            "RCPSSr",
-                                            "RSQRTPSr",
-                                            "RSQRTSSr",
-                                            "VPCMPGTQYrr",
-                                            "VPCMPGTQrr",
-                                            "VPHMINPOSUWrr",
-                                            "VPMADDUBSWYrr",
-                                            "VPMADDUBSWrr",
-                                            "VPMADDWDYrr",
-                                            "VPMADDWDrr",
-                                            "VPMULDQYrr",
-                                            "VPMULDQrr",
-                                            "VPMULHRSWYrr",
-                                            "VPMULHRSWrr",
-                                            "VPMULHUWYrr",
-                                            "VPMULHUWrr",
-                                            "VPMULHWYrr",
-                                            "VPMULHWrr",
-                                            "VPMULLWYrr",
-                                            "VPMULLWrr",
-                                            "VPMULUDQYrr",
-                                            "VPMULUDQrr",
-                                            "VPSADBWYrr",
-                                            "VPSADBWrr",
-                                            "VRCPPSr",
-                                            "VRCPSSr",
-                                            "VRSQRTPSr",
-                                            "VRSQRTSSr")>;
+                                            "(V?)PCMPGTQ(Y?)rr",
+                                            "(V?)PHMINPOSUWrr",
+                                            "(V?)PMADDUBSW(Y?)rr",
+                                            "(V?)PMADDWD(Y?)rr",
+                                            "(V?)PMULDQ(Y?)rr",
+                                            "(V?)PMULHRSW(Y?)rr",
+                                            "(V?)PMULHUW(Y?)rr",
+                                            "(V?)PMULHW(Y?)rr",
+                                            "(V?)PMULLW(Y?)rr",
+                                            "(V?)PMULUDQ(Y?)rr",
+                                            "(V?)PSADBW(Y?)rr",
+                                            "(V?)RCPPSr",
+                                            "(V?)RCPSSr",
+                                            "(V?)RSQRTPSr",
+                                            "(V?)RSQRTSSr")>;
 
 def BWWriteResGroup48 : SchedWriteRes<[BWPort01]> {
   let Latency = 5;
@@ -1583,30 +1180,13 @@ def BWWriteResGroup49 : SchedWriteRes<[B
   let NumMicroOps = 1;
   let ResourceCycles = [1];
 }
-def: InstRW<[BWWriteResGroup49], (instregex "LDDQUrm",
-                                            "MMX_MOVD64rm",
+def: InstRW<[BWWriteResGroup49], (instregex "MMX_MOVD64rm",
                                             "MMX_MOVD64to64rm",
                                             "MMX_MOVQ64rm",
                                             "MOV(16|32|64)rm",
-                                            "MOV64toPQIrm",
-                                            "MOV8rm",
-                                            "MOVAPDrm",
-                                            "MOVAPSrm",
-                                            "MOVDDUPrm",
-                                            "MOVDI2PDIrm",
-                                            "MOVDQArm",
-                                            "MOVDQUrm",
-                                            "MOVNTDQArm",
-                                            "MOVQI2PQIrm",
-                                            "MOVSDrm",
-                                            "MOVSHDUPrm",
-                                            "MOVSLDUPrm",
-                                            "MOVSSrm",
                                             "MOVSX(16|32|64)rm16",
                                             "MOVSX(16|32|64)rm32",
                                             "MOVSX(16|32|64)rm8",
-                                            "MOVUPDrm",
-                                            "MOVUPSrm",
                                             "MOVZX(16|32|64)rm16",
                                             "MOVZX(16|32|64)rm8",
                                             "PREFETCHNTA",
@@ -1614,22 +1194,22 @@ def: InstRW<[BWWriteResGroup49], (instre
                                             "PREFETCHT1",
                                             "PREFETCHT2",
                                             "VBROADCASTSSrm",
-                                            "VLDDQUrm",
-                                            "VMOV64toPQIrm",
-                                            "VMOVAPDrm",
-                                            "VMOVAPSrm",
-                                            "VMOVDDUPrm",
-                                            "VMOVDI2PDIrm",
-                                            "VMOVDQArm",
-                                            "VMOVDQUrm",
-                                            "VMOVNTDQArm",
-                                            "VMOVQI2PQIrm",
-                                            "VMOVSDrm",
-                                            "VMOVSHDUPrm",
-                                            "VMOVSLDUPrm",
-                                            "VMOVSSrm",
-                                            "VMOVUPDrm",
-                                            "VMOVUPSrm",
+                                            "(V?)LDDQUrm",
+                                            "(V?)MOV64toPQIrm",
+                                            "(V?)MOVAPDrm",
+                                            "(V?)MOVAPSrm",
+                                            "(V?)MOVDDUPrm",
+                                            "(V?)MOVDI2PDIrm",
+                                            "(V?)MOVDQArm",
+                                            "(V?)MOVDQUrm",
+                                            "(V?)MOVNTDQArm",
+                                            "(V?)MOVQI2PQIrm",
+                                            "(V?)MOVSDrm",
+                                            "(V?)MOVSHDUPrm",
+                                            "(V?)MOVSLDUPrm",
+                                            "(V?)MOVSSrm",
+                                            "(V?)MOVUPDrm",
+                                            "(V?)MOVUPSrm",
                                             "VPBROADCASTDrm",
                                             "VPBROADCASTQrm")>;
 
@@ -1638,20 +1218,11 @@ def BWWriteResGroup50 : SchedWriteRes<[B
   let NumMicroOps = 3;
   let ResourceCycles = [1,2];
 }
-def: InstRW<[BWWriteResGroup50], (instregex "CVTSI642SSrr",
-                                            "HADDPDrr",
-                                            "HADDPSrr",
-                                            "HSUBPDrr",
-                                            "HSUBPSrr",
-                                            "VCVTSI642SSrr",
-                                            "VHADDPDYrr",
-                                            "VHADDPDrr",
-                                            "VHADDPSYrr",
-                                            "VHADDPSrr",
-                                            "VHSUBPDYrr",
-                                            "VHSUBPDrr",
-                                            "VHSUBPSYrr",
-                                            "VHSUBPSrr")>;
+def: InstRW<[BWWriteResGroup50], (instregex "(V?)CVTSI642SSrr",
+                                            "(V?)HADDPD(Y?)rr",
+                                            "(V?)HADDPS(Y?)rr",
+                                            "(V?)HSUBPD(Y?)rr",
+                                            "(V?)HSUBPS(Y?)rr")>;
 
 def BWWriteResGroup51 : SchedWriteRes<[BWPort1,BWPort6,BWPort06]> {
   let Latency = 5;
@@ -1672,14 +1243,10 @@ def BWWriteResGroup53 : SchedWriteRes<[B
   let NumMicroOps = 4;
   let ResourceCycles = [1,1,1,1];
 }
-def: InstRW<[BWWriteResGroup53], (instregex "VMASKMOVPDYmr",
-                                            "VMASKMOVPDmr",
-                                            "VMASKMOVPSYmr",
-                                            "VMASKMOVPSmr",
-                                            "VPMASKMOVDYmr",
-                                            "VPMASKMOVDmr",
-                                            "VPMASKMOVQYmr",
-                                            "VPMASKMOVQmr")>;
+def: InstRW<[BWWriteResGroup53], (instregex "VMASKMOVPD(Y?)mr",
+                                            "VMASKMOVPS(Y?)mr",
+                                            "VPMASKMOVD(Y?)mr",
+                                            "VPMASKMOVQ(Y?)mr")>;
 
 def BWWriteResGroup54 : SchedWriteRes<[BWPort6,BWPort0156]> {
   let Latency = 5;
@@ -1734,25 +1301,17 @@ def: InstRW<[BWWriteResGroup58], (instre
                                             "VMOVUPSYrm",
                                             "VPBROADCASTDYrm",
                                             "VPBROADCASTQYrm",
-                                            "ROUNDPDr",
-                                            "ROUNDPSr",
-                                            "ROUNDSDr",
-                                            "ROUNDSSr",
-                                            "VROUNDPDr",
-                                            "VROUNDPSr",
-                                            "VROUNDSDr",
-                                            "VROUNDSSr",
-                                            "VROUNDPDYr",
-                                            "VROUNDPSYr")>;
+                                            "(V?)ROUNDPD(Y?)r",
+                                            "(V?)ROUNDPS(Y?)r",
+                                            "(V?)ROUNDSDr",
+                                            "(V?)ROUNDSSr")>;
 
 def BWWriteResGroup59 : SchedWriteRes<[BWPort0,BWPort23]> {
   let Latency = 6;
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[BWWriteResGroup59], (instregex "CVTPS2PDrm",
-                                            "CVTSS2SDrm",
-                                            "MMX_PSLLDrm",
+def: InstRW<[BWWriteResGroup59], (instregex "MMX_PSLLDrm",
                                             "MMX_PSLLQrm",
                                             "MMX_PSLLWrm",
                                             "MMX_PSRADrm",
@@ -1760,10 +1319,9 @@ def: InstRW<[BWWriteResGroup59], (instre
                                             "MMX_PSRLDrm",
                                             "MMX_PSRLQrm",
                                             "MMX_PSRLWrm",
-                                            "VCVTPH2PSYrm",
-                                            "VCVTPH2PSrm",
-                                            "VCVTPS2PDrm",
-                                            "VCVTSS2SDrm",
+                                            "VCVTPH2PS(Y?)rm",
+                                            "(V?)CVTPS2PDrm",
+                                            "(V?)CVTSS2SDrm",
                                             "VPSLLVQrm",
                                             "VPSRLVQrm",
                                             "VTESTPDrm",
@@ -1785,12 +1343,7 @@ def BWWriteResGroup61 : SchedWriteRes<[B
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[BWWriteResGroup61], (instregex "ANDNPDrm",
-                                            "ANDNPSrm",
-                                            "ANDPDrm",
-                                            "ANDPSrm",
-                                            "INSERTPSrm",
-                                            "MMX_PALIGNRrmi",
+def: InstRW<[BWWriteResGroup61], (instregex "MMX_PALIGNRrmi",
                                             "MMX_PINSRWrm",
                                             "MMX_PSHUFBrm",
                                             "MMX_PSHUFWmi",
@@ -1800,111 +1353,63 @@ def: InstRW<[BWWriteResGroup61], (instre
                                             "MMX_PUNPCKLBWirm",
                                             "MMX_PUNPCKLDQirm",
                                             "MMX_PUNPCKLWDirm",
-                                            "MOVHPDrm",
-                                            "MOVHPSrm",
-                                            "MOVLPDrm",
-                                            "MOVLPSrm",
-                                            "ORPDrm",
-                                            "ORPSrm",
-                                            "PACKSSDWrm",
-                                            "PACKSSWBrm",
-                                            "PACKUSDWrm",
-                                            "PACKUSWBrm",
-                                            "PALIGNRrmi",
-                                            "PBLENDWrmi",
-                                            "PINSRBrm",
-                                            "PINSRDrm",
-                                            "PINSRQrm",
-                                            "PINSRWrm",
-                                            "PMOVSXBDrm",
-                                            "PMOVSXBQrm",
-                                            "PMOVSXBWrm",
-                                            "PMOVSXDQrm",
-                                            "PMOVSXWDrm",
-                                            "PMOVSXWQrm",
-                                            "PMOVZXBDrm",
-                                            "PMOVZXBQrm",
-                                            "PMOVZXBWrm",
-                                            "PMOVZXDQrm",
-                                            "PMOVZXWDrm",
-                                            "PMOVZXWQrm",
-                                            "PSHUFBrm",
-                                            "PSHUFDmi",
-                                            "PSHUFHWmi",
-                                            "PSHUFLWmi",
-                                            "PUNPCKHBWrm",
-                                            "PUNPCKHDQrm",
-                                            "PUNPCKHQDQrm",
-                                            "PUNPCKHWDrm",
-                                            "PUNPCKLBWrm",
-                                            "PUNPCKLDQrm",
-                                            "PUNPCKLQDQrm",
-                                            "PUNPCKLWDrm",
-                                            "SHUFPDrmi",
-                                            "SHUFPSrmi",
-                                            "UNPCKHPDrm",
-                                            "UNPCKHPSrm",
-                                            "UNPCKLPDrm",
-                                            "UNPCKLPSrm",
-                                            "VANDNPDrm",
-                                            "VANDNPSrm",
-                                            "VANDPDrm",
-                                            "VANDPSrm",
-                                            "VINSERTPSrm",
-                                            "VMOVHPDrm",
-                                            "VMOVHPSrm",
-                                            "VMOVLPDrm",
-                                            "VMOVLPSrm",
-                                            "VORPDrm",
-                                            "VORPSrm",
-                                            "VPACKSSDWrm",
-                                            "VPACKSSWBrm",
-                                            "VPACKUSDWrm",
-                                            "VPACKUSWBrm",
-                                            "VPALIGNRrmi",
-                                            "VPBLENDWrmi",
+                                            "(V?)ANDNPDrm",
+                                            "(V?)ANDNPSrm",
+                                            "(V?)ANDPDrm",
+                                            "(V?)ANDPSrm",
+                                            "(V?)INSERTPSrm",
+                                            "(V?)MOVHPDrm",
+                                            "(V?)MOVHPSrm",
+                                            "(V?)MOVLPDrm",
+                                            "(V?)MOVLPSrm",
+                                            "(V?)ORPDrm",
+                                            "(V?)ORPSrm",
+                                            "(V?)PACKSSDWrm",
+                                            "(V?)PACKSSWBrm",
+                                            "(V?)PACKUSDWrm",
+                                            "(V?)PACKUSWBrm",
+                                            "(V?)PALIGNRrmi",
+                                            "(V?)PBLENDWrmi",
                                             "VPERMILPDmi",
                                             "VPERMILPDrm",
                                             "VPERMILPSmi",
                                             "VPERMILPSrm",
-                                            "VPINSRBrm",
-                                            "VPINSRDrm",
-                                            "VPINSRQrm",
-                                            "VPINSRWrm",
-                                            "VPMOVSXBDrm",
-                                            "VPMOVSXBQrm",
-                                            "VPMOVSXBWrm",
-                                            "VPMOVSXDQrm",
-                                            "VPMOVSXWDrm",
-                                            "VPMOVSXWQrm",
-                                            "VPMOVZXBDrm",
-                                            "VPMOVZXBQrm",
-                                            "VPMOVZXBWrm",
-                                            "VPMOVZXDQrm",
-                                            "VPMOVZXWDrm",
-                                            "VPMOVZXWQrm",
-                                            "VPSHUFBrm",
-                                            "VPSHUFDmi",
-                                            "VPSHUFHWmi",
-                                            "VPSHUFLWmi",
-                                            "VPUNPCKHBWrm",
-                                            "VPUNPCKHDQrm",
-                                            "VPUNPCKHQDQrm",
-                                            "VPUNPCKHWDrm",
-                                            "VPUNPCKLBWrm",
-                                            "VPUNPCKLDQrm",
-                                            "VPUNPCKLQDQrm",
-                                            "VPUNPCKLWDrm",
-                                            "VSHUFPDrmi",
-                                            "VSHUFPSrmi",
-                                            "VUNPCKHPDrm",
-                                            "VUNPCKHPSrm",
-                                            "VUNPCKLPDrm",
-                                            "VUNPCKLPSrm",
-                                            "VXORPDrm",
-                                            "VXORPSrm",
-                                            "XORPDrm",
-                                            "XORPSrm")>;
+                                            "(V?)PINSRBrm",
+                                            "(V?)PINSRDrm",
+                                            "(V?)PINSRQrm",
+                                            "(V?)PINSRWrm",
+                                            "(V?)PMOVSXBDrm",
+                                            "(V?)PMOVSXBQrm",
+                                            "(V?)PMOVSXBWrm",
+                                            "(V?)PMOVSXDQrm",
+                                            "(V?)PMOVSXWDrm",
+                                            "(V?)PMOVSXWQrm",
+                                            "(V?)PMOVZXBDrm",
+                                            "(V?)PMOVZXBQrm",
+                                            "(V?)PMOVZXBWrm",
+                                            "(V?)PMOVZXDQrm",
+                                            "(V?)PMOVZXWDrm",
+                                            "(V?)PMOVZXWQrm",
+                                            "(V?)PSHUFBrm",
+                                            "(V?)PSHUFDmi",
+                                            "(V?)PSHUFHWmi",
+                                            "(V?)PSHUFLWmi",
+                                            "(V?)PUNPCKHBWrm",
+                                            "(V?)PUNPCKHDQrm",
+                                            "(V?)PUNPCKHQDQrm",
+                                            "(V?)PUNPCKHWDrm",
+                                            "(V?)PUNPCKLBWrm",
+                                            "(V?)PUNPCKLDQrm",
+                                            "(V?)PUNPCKLQDQrm",
+                                            "(V?)PUNPCKLWDrm",
+                                            "(V?)SHUFPDrmi",
+                                            "(V?)SHUFPSrmi",
+                                            "(V?)UNPCKHPDrm",
+                                            "(V?)UNPCKHPSrm",
+                                            "(V?)UNPCKLPDrm",
+                                            "(V?)UNPCKLPSrm",
+                                            "(V?)XORPDrm",
+                                            "(V?)XORPSrm")>;
 
 def BWWriteResGroup62 : SchedWriteRes<[BWPort6,BWPort23]> {
   let Latency = 6;
@@ -1975,117 +1480,68 @@ def: InstRW<[BWWriteResGroup64], (instre
                                             "MMX_PSUBUSWirm",
                                             "MMX_PSUBWirm",
                                             "MOVBE(16|32|64)rm",
-                                            "PABSBrm",
-                                            "PABSDrm",
-                                            "PABSWrm",
-                                            "PADDBrm",
-                                            "PADDDrm",
-                                            "PADDQrm",
-                                            "PADDSBrm",
-                                            "PADDSWrm",
-                                            "PADDUSBrm",
-                                            "PADDUSWrm",
-                                            "PADDWrm",
-                                            "PAVGBrm",
-                                            "PAVGWrm",
-                                            "PCMPEQBrm",
-                                            "PCMPEQDrm",
-                                            "PCMPEQQrm",
-                                            "PCMPEQWrm",
-                                            "PCMPGTBrm",
-                                            "PCMPGTDrm",
-                                            "PCMPGTWrm",
-                                            "PMAXSBrm",
-                                            "PMAXSDrm",
-                                            "PMAXSWrm",
-                                            "PMAXUBrm",
-                                            "PMAXUDrm",
-                                            "PMAXUWrm",
-                                            "PMINSBrm",
-                                            "PMINSDrm",
-                                            "PMINSWrm",
-                                            "PMINUBrm",
-                                            "PMINUDrm",
-                                            "PMINUWrm",
-                                            "PSIGNBrm",
-                                            "PSIGNDrm",
-                                            "PSIGNWrm",
-                                            "PSUBBrm",
-                                            "PSUBDrm",
-                                            "PSUBQrm",
-                                            "PSUBSBrm",
-                                            "PSUBSWrm",
-                                            "PSUBUSBrm",
-                                            "PSUBUSWrm",
-                                            "PSUBWrm",
-                                            "VPABSBrm",
-                                            "VPABSDrm",
-                                            "VPABSWrm",
-                                            "VPADDBrm",
-                                            "VPADDDrm",
-                                            "VPADDQrm",
-                                            "VPADDSBrm",
-                                            "VPADDSWrm",
-                                            "VPADDUSBrm",
-                                            "VPADDUSWrm",
-                                            "VPADDWrm",
-                                            "VPAVGBrm",
-                                            "VPAVGWrm",
-                                            "VPCMPEQBrm",
-                                            "VPCMPEQDrm",
-                                            "VPCMPEQQrm",
-                                            "VPCMPEQWrm",
-                                            "VPCMPGTBrm",
-                                            "VPCMPGTDrm",
-                                            "VPCMPGTWrm",
-                                            "VPMAXSBrm",
-                                            "VPMAXSDrm",
-                                            "VPMAXSWrm",
-                                            "VPMAXUBrm",
-                                            "VPMAXUDrm",
-                                            "VPMAXUWrm",
-                                            "VPMINSBrm",
-                                            "VPMINSDrm",
-                                            "VPMINSWrm",
-                                            "VPMINUBrm",
-                                            "VPMINUDrm",
-                                            "VPMINUWrm",
-                                            "VPSIGNBrm",
-                                            "VPSIGNDrm",
-                                            "VPSIGNWrm",
-                                            "VPSUBBrm",
-                                            "VPSUBDrm",
-                                            "VPSUBQrm",
-                                            "VPSUBSBrm",
-                                            "VPSUBSWrm",
-                                            "VPSUBUSBrm",
-                                            "VPSUBUSWrm",
-                                            "VPSUBWrm")>;
+                                            "(V?)PABSBrm",
+                                            "(V?)PABSDrm",
+                                            "(V?)PABSWrm",
+                                            "(V?)PADDBrm",
+                                            "(V?)PADDDrm",
+                                            "(V?)PADDQrm",
+                                            "(V?)PADDSBrm",
+                                            "(V?)PADDSWrm",
+                                            "(V?)PADDUSBrm",
+                                            "(V?)PADDUSWrm",
+                                            "(V?)PADDWrm",
+                                            "(V?)PAVGBrm",
+                                            "(V?)PAVGWrm",
+                                            "(V?)PCMPEQBrm",
+                                            "(V?)PCMPEQDrm",
+                                            "(V?)PCMPEQQrm",
+                                            "(V?)PCMPEQWrm",
+                                            "(V?)PCMPGTBrm",
+                                            "(V?)PCMPGTDrm",
+                                            "(V?)PCMPGTWrm",
+                                            "(V?)PMAXSBrm",
+                                            "(V?)PMAXSDrm",
+                                            "(V?)PMAXSWrm",
+                                            "(V?)PMAXUBrm",
+                                            "(V?)PMAXUDrm",
+                                            "(V?)PMAXUWrm",
+                                            "(V?)PMINSBrm",
+                                            "(V?)PMINSDrm",
+                                            "(V?)PMINSWrm",
+                                            "(V?)PMINUBrm",
+                                            "(V?)PMINUDrm",
+                                            "(V?)PMINUWrm",
+                                            "(V?)PSIGNBrm",
+                                            "(V?)PSIGNDrm",
+                                            "(V?)PSIGNWrm",
+                                            "(V?)PSUBBrm",
+                                            "(V?)PSUBDrm",
+                                            "(V?)PSUBQrm",
+                                            "(V?)PSUBSBrm",
+                                            "(V?)PSUBSWrm",
+                                            "(V?)PSUBUSBrm",
+                                            "(V?)PSUBUSWrm",
+                                            "(V?)PSUBWrm")>;
 
 def BWWriteResGroup65 : SchedWriteRes<[BWPort23,BWPort015]> {
   let Latency = 6;
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[BWWriteResGroup65], (instregex "BLENDPDrmi",
-                                            "BLENDPSrmi",
-                                            "MMX_PANDNirm",
+def: InstRW<[BWWriteResGroup65], (instregex "MMX_PANDNirm",
                                             "MMX_PANDirm",
                                             "MMX_PORirm",
                                             "MMX_PXORirm",
-                                            "PANDNrm",
-                                            "PANDrm",
-                                            "PORrm",
-                                            "PXORrm",
-                                            "VBLENDPDrmi",
-                                            "VBLENDPSrmi",
+                                            "(V?)BLENDPDrmi",
+                                            "(V?)BLENDPSrmi",
                                             "VINSERTF128rm",
                                             "VINSERTI128rm",
-                                            "VPANDNrm",
-                                            "VPANDrm",
+                                            "(V?)PANDNrm",
+                                            "(V?)PANDrm",
                                             "VPBLENDDrmi",
-                                            "VPORrm",
-                                            "VPXORrm")>;
+                                            "(V?)PORrm",
+                                            "(V?)PXORrm")>;
 
 def BWWriteResGroup66 : SchedWriteRes<[BWPort23,BWPort0156]> {
   let Latency = 6;
@@ -2301,9 +1757,7 @@ def BWWriteResGroup78 : SchedWriteRes<[B
   let NumMicroOps = 3;
   let ResourceCycles = [1,2];
 }
-def: InstRW<[BWWriteResGroup78], (instregex "MPSADBWrri",
-                                            "VMPSADBWYrri",
-                                            "VMPSADBWrri")>;
+def: InstRW<[BWWriteResGroup78], (instregex "(V?)MPSADBW(Y?)rri")>;
 
 def BWWriteResGroup79 : SchedWriteRes<[BWPort5,BWPort23]> {
   let Latency = 7;
@@ -2434,79 +1888,50 @@ def BWWriteResGroup91 : SchedWriteRes<[B
 }
 def: InstRW<[BWWriteResGroup91], (instrs IMUL32rm, IMUL32rmi, IMUL32rmi8, IMUL64rm, IMUL64rmi8, IMUL64rmi32)>;
 def: InstRW<[BWWriteResGroup91], (instrs IMUL8m, MUL8m)>;
-def: InstRW<[BWWriteResGroup91], (instregex "ADDPDrm",
-                                            "ADDPSrm",
-                                            "ADDSDrm",
-                                            "ADDSSrm",
-                                            "ADDSUBPDrm",
-                                            "ADDSUBPSrm",
-                                            "BSF(16|32|64)rm",
+def: InstRW<[BWWriteResGroup91], (instregex "BSF(16|32|64)rm",
                                             "BSR(16|32|64)rm",
-                                            "CMPPDrmi",
-                                            "CMPPSrmi",
-                                            "CMPSDrm",
-                                            "CMPSSrm",
-                                            "COMISDrm",
-                                            "COMISSrm",
-                                            "CVTDQ2PSrm",
-                                            "CVTPS2DQrm",
-                                            "CVTTPS2DQrm",
                                             "LZCNT(16|32|64)rm",
-                                            "MAX(C?)PDrm",
-                                            "MAX(C?)PSrm",
-                                            "MAX(C?)SDrm",
-                                            "MAX(C?)SSrm",
-                                            "MIN(C?)PDrm",
-                                            "MIN(C?)PSrm",
-                                            "MIN(C?)SDrm",
-                                            "MIN(C?)SSrm",
                                             "MMX_CVTPI2PSirm",
                                             "MMX_CVTPS2PIirm",
                                             "MMX_CVTTPS2PIirm",
                                             "PDEP(32|64)rm",
                                             "PEXT(32|64)rm",
                                             "POPCNT(16|32|64)rm",
-                                            "SUBPDrm",
-                                            "SUBPSrm",
-                                            "SUBSDrm",
-                                            "SUBSSrm",
                                             "TZCNT(16|32|64)rm",
-                                            "UCOMISDrm",
-                                            "UCOMISSrm",
-                                            "VADDPDrm",
-                                            "VADDPSrm",
-                                            "VADDSDrm",
-                                            "VADDSSrm",
-                                            "VADDSUBPDrm",
-                                            "VADDSUBPSrm",
-                                            "VCMPPDrmi",
-                                            "VCMPPSrmi",
-                                            "VCMPSDrm",
-                                            "VCMPSSrm",
-                                            "VCOMISDrm",
-                                            "VCOMISSrm",
-                                            "VCVTDQ2PSrm",
-                                            "VCVTPS2DQrm",
-                                            "VCVTTPS2DQrm",
-                                            "VMAX(C?)PDrm",
-                                            "VMAX(C?)PSrm",
-                                            "VMAX(C?)SDrm",
-                                            "VMAX(C?)SSrm",
-                                            "VMIN(C?)PDrm",
-                                            "VMIN(C?)PSrm",
-                                            "VMIN(C?)SDrm",
-                                            "VMIN(C?)SSrm",
-                                            "VSUBPDrm",
-                                            "VSUBPSrm",
-                                            "VSUBSDrm",
-                                            "VSUBSSrm",
-                                            "VUCOMISDrm",
-                                            "VUCOMISSrm")>;
+                                            "(V?)ADDPDrm",
+                                            "(V?)ADDPSrm",
+                                            "(V?)ADDSDrm",
+                                            "(V?)ADDSSrm",
+                                            "(V?)ADDSUBPDrm",
+                                            "(V?)ADDSUBPSrm",
+                                            "(V?)CMPPDrmi",
+                                            "(V?)CMPPSrmi",
+                                            "(V?)CMPSDrm",
+                                            "(V?)CMPSSrm",
+                                            "(V?)COMISDrm",
+                                            "(V?)COMISSrm",
+                                            "(V?)CVTDQ2PSrm",
+                                            "(V?)CVTPS2DQrm",
+                                            "(V?)CVTTPS2DQrm",
+                                            "(V?)MAX(C?)PDrm",
+                                            "(V?)MAX(C?)PSrm",
+                                            "(V?)MAX(C?)SDrm",
+                                            "(V?)MAX(C?)SSrm",
+                                            "(V?)MIN(C?)PDrm",
+                                            "(V?)MIN(C?)PSrm",
+                                            "(V?)MIN(C?)SDrm",
+                                            "(V?)MIN(C?)SSrm",
+                                            "(V?)SUBPDrm",
+                                            "(V?)SUBPSrm",
+                                            "(V?)SUBSDrm",
+                                            "(V?)SUBSSrm",
+                                            "(V?)UCOMISDrm",
+                                            "(V?)UCOMISSrm")>;
 
 def BWWriteResGroup91_16 : SchedWriteRes<[BWPort1, BWPort0156, BWPort23]> {
   let Latency = 8;
   let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1]; 
+  let ResourceCycles = [1,1,1];
 }
 def: InstRW<[BWWriteResGroup91_16], (instrs IMUL16rm, IMUL16rmi, IMUL16rmi8)>;
 
@@ -2534,14 +1959,10 @@ def BWWriteResGroup93 : SchedWriteRes<[B
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[BWWriteResGroup93], (instregex "MULPDrm",
-                                            "MULPSrm",
-                                            "MULSDrm",
-                                            "MULSSrm",
-                                            "VMULPDrm",
-                                            "VMULPSrm",
-                                            "VMULSDrm",
-                                            "VMULSSrm")>;
+def: InstRW<[BWWriteResGroup93], (instregex "(V?)MULPDrm",
+                                            "(V?)MULPSrm",
+                                            "(V?)MULSDrm",
+                                            "(V?)MULSSrm")>;
 
 def BWWriteResGroup94 : SchedWriteRes<[BWPort5,BWPort23]> {
   let Latency = 8;
@@ -2576,18 +1997,12 @@ def: InstRW<[BWWriteResGroup96], (instre
                                             "MMX_PHSUBDrm",
                                             "MMX_PHSUBSWrm",
                                             "MMX_PHSUBWrm",
-                                            "PHADDDrm",
-                                            "PHADDSWrm",
-                                            "PHADDWrm",
-                                            "PHSUBDrm",
-                                            "PHSUBSWrm",
-                                            "PHSUBWrm",
-                                            "VPHADDDrm",
-                                            "VPHADDSWrm",
-                                            "VPHADDWrm",
-                                            "VPHSUBDrm",
-                                            "VPHSUBSWrm",
-                                            "VPHSUBWrm")>;
+                                            "(V?)PHADDDrm",
+                                            "(V?)PHADDSWrm",
+                                            "(V?)PHADDWrm",
+                                            "(V?)PHSUBDrm",
+                                            "(V?)PHSUBSWrm",
+                                            "(V?)PHSUBWrm")>;
 
 def BWWriteResGroup97 : SchedWriteRes<[BWPort23,BWPort237,BWPort06,BWPort0156]> {
   let Latency = 8;
@@ -2688,29 +2103,21 @@ def BWWriteResGroup104 : SchedWriteRes<[
   let NumMicroOps = 3;
   let ResourceCycles = [1,1,1];
 }
-def: InstRW<[BWWriteResGroup104], (instregex "DPPDrri",
-                                             "VDPPDrri")>;
+def: InstRW<[BWWriteResGroup104], (instregex "(V?)DPPDrri")>;
 
 def BWWriteResGroup105 : SchedWriteRes<[BWPort0,BWPort1,BWPort23]> {
   let Latency = 9;
   let NumMicroOps = 3;
   let ResourceCycles = [1,1,1];
 }
-def: InstRW<[BWWriteResGroup105], (instregex "CVTSD2SI64rm",
-                                             "CVTSD2SIrm",
-                                             "CVTSS2SI64rm",
-                                             "CVTSS2SIrm",
-                                             "CVTTSD2SI64rm",
-                                             "CVTTSD2SIrm",
-                                             "CVTTSS2SIrm",
-                                             "VCVTSD2SI64rm",
-                                             "VCVTSD2SIrm",
-                                             "VCVTSS2SI64rm",
-                                             "VCVTSS2SIrm",
-                                             "VCVTTSD2SI64rm",
-                                             "VCVTTSD2SIrm",
+def: InstRW<[BWWriteResGroup105], (instregex "(V?)CVTSD2SI64rm",
+                                             "(V?)CVTSD2SIrm",
+                                             "(V?)CVTSS2SI64rm",
+                                             "(V?)CVTSS2SIrm",
+                                             "(V?)CVTTSD2SI64rm",
+                                             "(V?)CVTTSD2SIrm",
                                              "VCVTTSS2SI64rm",
-                                             "VCVTTSS2SIrm")>;
+                                             "(V?)CVTTSS2SIrm")>;
 
 def BWWriteResGroup106 : SchedWriteRes<[BWPort0,BWPort5,BWPort23]> {
   let Latency = 9;
@@ -2725,26 +2132,22 @@ def BWWriteResGroup107 : SchedWriteRes<[
   let ResourceCycles = [1,1,1];
 }
 def: InstRW<[BWWriteResGroup107], (instrs IMUL64m, MUL64m, MULX64rm)>;
-def: InstRW<[BWWriteResGroup107], (instregex "CVTDQ2PDrm",
-                                             "CVTPD2DQrm",
+def: InstRW<[BWWriteResGroup107], (instregex "CVTPD2DQrm",
                                              "CVTPD2PSrm",
-                                             "CVTSD2SSrm",
                                              "CVTTPD2DQrm",
                                              "MMX_CVTPD2PIirm",
                                              "MMX_CVTPI2PDirm",
                                              "MMX_CVTTPD2PIirm",
-                                             "VCVTDQ2PDrm",
-                                             "VCVTSD2SSrm")>;
+                                             "(V?)CVTDQ2PDrm",
+                                             "(V?)CVTSD2SSrm")>;
 
 def BWWriteResGroup108 : SchedWriteRes<[BWPort5,BWPort23,BWPort015]> {
   let Latency = 9;
   let NumMicroOps = 3;
   let ResourceCycles = [1,1,1];
 }
-def: InstRW<[BWWriteResGroup108], (instregex "VPBROADCASTBYrm",
-                                             "VPBROADCASTBrm",
-                                             "VPBROADCASTWYrm",
-                                             "VPBROADCASTWrm")>;
+def: InstRW<[BWWriteResGroup108], (instregex "VPBROADCASTB(Y?)rm",
+                                             "VPBROADCASTW(Y?)rm")>;
 
 def BWWriteResGroup109 : SchedWriteRes<[BWPort0,BWPort5,BWPort23]> {
   let Latency = 9;
@@ -2795,9 +2198,7 @@ def BWWriteResGroup114 : SchedWriteRes<[
   let NumMicroOps = 2;
   let ResourceCycles = [2];
 }
-def: InstRW<[BWWriteResGroup114], (instregex "PMULLDrr",
-                                             "VPMULLDYrr",
-                                             "VPMULLDrr")>;
+def: InstRW<[BWWriteResGroup114], (instregex "(V?)PMULLD(Y?)rr")>;
 
 def BWWriteResGroup115 : SchedWriteRes<[BWPort0,BWPort23]> {
   let Latency = 10;
@@ -2812,36 +2213,21 @@ def: InstRW<[BWWriteResGroup115], (instr
                                              "MMX_PMULLWirm",
                                              "MMX_PMULUDQirm",
                                              "MMX_PSADBWirm",
-                                             "PCMPGTQrm",
-                                             "PHMINPOSUWrm",
-                                             "PMADDUBSWrm",
-                                             "PMADDWDrm",
-                                             "PMULDQrm",
-                                             "PMULHRSWrm",
-                                             "PMULHUWrm",
-                                             "PMULHWrm",
-                                             "PMULLWrm",
-                                             "PMULUDQrm",
-                                             "PSADBWrm",
-                                             "RCPPSm",
-                                             "RCPSSm",
-                                             "RSQRTPSm",
-                                             "RSQRTSSm",
-                                             "VPCMPGTQrm",
-                                             "VPHMINPOSUWrm",
-                                             "VPMADDUBSWrm",
-                                             "VPMADDWDrm",
-                                             "VPMULDQrm",
-                                             "VPMULHRSWrm",
-                                             "VPMULHUWrm",
-                                             "VPMULHWrm",
-                                             "VPMULLWrm",
-                                             "VPMULUDQrm",
-                                             "VPSADBWrm",
-                                             "VRCPPSm",
-                                             "VRCPSSm",
-                                             "VRSQRTPSm",
-                                             "VRSQRTSSm")>;
+                                             "(V?)PCMPGTQrm",
+                                             "(V?)PHMINPOSUWrm",
+                                             "(V?)PMADDUBSWrm",
+                                             "(V?)PMADDWDrm",
+                                             "(V?)PMULDQrm",
+                                             "(V?)PMULHRSWrm",
+                                             "(V?)PMULHUWrm",
+                                             "(V?)PMULHWrm",
+                                             "(V?)PMULLWrm",
+                                             "(V?)PMULUDQrm",
+                                             "(V?)PSADBWrm",
+                                             "(V?)RCPPSm",
+                                             "(V?)RCPSSm",
+                                             "(V?)RSQRTPSm",
+                                             "(V?)RSQRTSSm")>;
 
 def BWWriteResGroup116 : SchedWriteRes<[BWPort01,BWPort23]> {
   let Latency = 10;
@@ -2874,14 +2260,10 @@ def BWWriteResGroup119 : SchedWriteRes<[
   let NumMicroOps = 4;
   let ResourceCycles = [1,2,1];
 }
-def: InstRW<[BWWriteResGroup119], (instregex "HADDPDrm",
-                                             "HADDPSrm",
-                                             "HSUBPDrm",
-                                             "HSUBPSrm",
-                                             "VHADDPDrm",
-                                             "VHADDPSrm",
-                                             "VHSUBPDrm",
-                                             "VHSUBPSrm")>;
+def: InstRW<[BWWriteResGroup119], (instregex "(V?)HADDPDrm",
+                                             "(V?)HADDPSrm",
+                                             "(V?)HSUBPDrm",
+                                             "(V?)HSUBPSrm")>;
 
 def BWWriteResGroup120 : SchedWriteRes<[BWPort0,BWPort1,BWPort5,BWPort23]> {
   let Latency = 10;
@@ -2902,10 +2284,8 @@ def BWWriteResGroup122 : SchedWriteRes<[
   let NumMicroOps = 1;
   let ResourceCycles = [1];
 }
-def: InstRW<[BWWriteResGroup122], (instregex "DIVPSrr",
-                                             "DIVSSrr",
-                                             "VDIVPSrr",
-                                             "VDIVSSrr")>;
+def: InstRW<[BWWriteResGroup122], (instregex "(V?)DIVPSrr",
+                                             "(V?)DIVSSrr")>;
 
 def BWWriteResGroup123 : SchedWriteRes<[BWPort0,BWPort23]> {
   let Latency = 11;
@@ -2946,14 +2326,10 @@ def BWWriteResGroup127 : SchedWriteRes<[
   let NumMicroOps = 3;
   let ResourceCycles = [2,1];
 }
-def: InstRW<[BWWriteResGroup127], (instregex "ROUNDPDm",
-                                             "ROUNDPSm",
-                                             "ROUNDSDm",
-                                             "ROUNDSSm",
-                                             "VROUNDPDm",
-                                             "VROUNDPSm",
-                                             "VROUNDSDm",
-                                             "VROUNDSSm")>;
+def: InstRW<[BWWriteResGroup127], (instregex "(V?)ROUNDPDm",
+                                             "(V?)ROUNDPSm",
+                                             "(V?)ROUNDSDm",
+                                             "(V?)ROUNDSSm")>;
 
 def BWWriteResGroup128 : SchedWriteRes<[BWPort1,BWPort5,BWPort23]> {
   let Latency = 11;
@@ -3044,10 +2420,8 @@ def BWWriteResGroup139 : SchedWriteRes<[
   let NumMicroOps = 1;
   let ResourceCycles = [1];
 }
-def: InstRW<[BWWriteResGroup139], (instregex "DIVPDrr",
-                                             "DIVSDrr",
-                                             "VDIVPDrr",
-                                             "VDIVSDrr",
+def: InstRW<[BWWriteResGroup139], (instregex "(V?)DIVPDrr",
+                                             "(V?)DIVSDrr",
                                              "VSQRTPSr",
                                              "VSQRTSSr")>;
 
@@ -3064,9 +2438,7 @@ def BWWriteResGroup142 : SchedWriteRes<[
   let NumMicroOps = 4;
   let ResourceCycles = [2,1,1];
 }
-def: InstRW<[BWWriteResGroup142], (instregex "DPPSrri",
-                                             "VDPPSYrri",
-                                             "VDPPSrri")>;
+def: InstRW<[BWWriteResGroup142], (instregex "(V?)DPPS(Y?)rri")>;
 
 def BWWriteResGroup143 : SchedWriteRes<[BWPort0,BWPort1,BWPort5,BWPort23]> {
   let Latency = 14;
@@ -3191,10 +2563,8 @@ def BWWriteResGroup161 : SchedWriteRes<[
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[BWWriteResGroup161], (instregex "DIVPDrm",
-                                             "DIVSDrm",
-                                             "VDIVPDrm",
-                                             "VDIVSDrm",
+def: InstRW<[BWWriteResGroup161], (instregex "(V?)DIVPDrm",
+                                             "(V?)DIVSDrm",
                                              "VSQRTPSm",
                                              "VSQRTSSm")>;
 
@@ -3377,7 +2747,7 @@ def: InstRW<[BWWriteResGroup183_5], (ins
 def BWWriteResGroup183_6 : SchedWriteRes<[BWPort4, BWPort5, BWPort23, BWPort0156]> {
   let Latency = 26;
   let NumMicroOps = 14;
-  let ResourceCycles = [1,4,8,1];  
+  let ResourceCycles = [1,4,8,1];
 }
 def: InstRW<[BWWriteResGroup183_6], (instrs VGATHERDPSYrm)>;
 




More information about the llvm-commits mailing list