[llvm] r328435 - [X86][SkylakeClient] 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 13:40:14 PDT 2018
Author: rksimon
Date: Sat Mar 24 13:40:14 2018
New Revision: 328435
URL: http://llvm.org/viewvc/llvm-project?rev=328435&view=rev
Log:
[X86][SkylakeClient] Merge xmm/ymm instructions instregex entries to reduce regex matches to reduce compile time
Modified:
llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td
Modified: llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td?rev=328435&r1=328434&r2=328435&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td Sat Mar 24 13:40:14 2018
@@ -19,7 +19,7 @@ def SkylakeClientModel : SchedMachineMod
let MicroOpBufferSize = 224; // Based on the reorder buffer.
let LoadLatency = 5;
let MispredictPenalty = 14;
-
+
// Based on the LSD (loop-stream detector) queue size and benchmarking data.
let LoopMicroOpBufferSize = 50;
@@ -103,7 +103,7 @@ def : WriteRes<WriteRMW, [SKLPort4]>;
defm : SKLWriteResPair<WriteALU, [SKLPort0156], 1>; // Simple integer ALU op.
defm : SKLWriteResPair<WriteIMul, [SKLPort1], 3>; // Integer multiplication.
def : WriteRes<WriteIMulH, []> { let Latency = 3; } // Integer multiplication, high part.
-def SKLDivider : ProcResource<1>; // Integer division issued on port 0.
+def SKLDivider : ProcResource<1>; // Integer division issued on port 0.
def : WriteRes<WriteIDiv, [SKLPort0, SKLDivider]> { // Integer division.
let Latency = 25;
let ResourceCycles = [1, 10];
@@ -343,7 +343,6 @@ def SKLWriteResGroup3 : SchedWriteRes<[S
}
def: InstRW<[SKLWriteResGroup3], (instregex "COMP_FST0r",
"COM_FST0r",
- "INSERTPSrr",
"MMX_MOVD64rr",
"MMX_MOVD64to64rr",
"MMX_PALIGNRrri",
@@ -355,147 +354,64 @@ def: InstRW<[SKLWriteResGroup3], (instre
"MMX_PUNPCKLBWirr",
"MMX_PUNPCKLDQirr",
"MMX_PUNPCKLWDirr",
- "MOV64toPQIrr",
- "MOVDDUPrr",
- "MOVDI2PDIrr",
- "MOVHLPSrr",
- "MOVLHPSrr",
- "MOVSDrr",
- "MOVSHDUPrr",
- "MOVSLDUPrr",
- "MOVUPDrr",
- "MOVUPSrr",
- "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",
"UCOM_FPr",
"UCOM_Fr",
- "UNPCKHPDrr",
- "UNPCKHPSrr",
- "UNPCKLPDrr",
- "UNPCKLPSrr",
"VBROADCASTSSrr",
- "VINSERTPSrr",
- "VMOV64toPQIrr",
- "VMOVDDUPYrr",
- "VMOVDDUPrr",
- "VMOVDI2PDIrr",
- "VMOVHLPSrr",
- "VMOVLHPSrr",
- "VMOVSDrr",
- "VMOVSHDUPYrr",
- "VMOVSHDUPrr",
- "VMOVSLDUPYrr",
- "VMOVSLDUPrr",
- "VMOVUPDYrr",
- "VMOVUPDrr",
- "VMOVUPSYrr",
- "VMOVUPSrr",
- "VPACKSSDWYrr",
- "VPACKSSDWrr",
- "VPACKSSWBYrr",
- "VPACKSSWBrr",
- "VPACKUSDWYrr",
- "VPACKUSDWrr",
- "VPACKUSWBYrr",
- "VPACKUSWBrr",
- "VPALIGNRYrri",
- "VPALIGNRrri",
- "VPBLENDWYrri",
- "VPBLENDWrri",
+ "(V?)INSERTPSrr",
+ "(V?)MOV64toPQIrr",
+ "(V?)MOVDDUP(Y?)rr",
+ "(V?)MOVDI2PDIrr",
+ "(V?)MOVHLPSrr",
+ "(V?)MOVLHPSrr",
+ "(V?)MOVSDrr",
+ "(V?)MOVSHDUP(Y?)rr",
+ "(V?)MOVSLDUP(Y?)rr",
+ "(V?)MOVUPD(Y?)rr",
+ "(V?)MOVUPS(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")>;
+ "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")>;
def SKLWriteResGroup4 : SchedWriteRes<[SKLPort6]> {
let Latency = 1;
@@ -509,145 +425,54 @@ def SKLWriteResGroup5 : SchedWriteRes<[S
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup5], (instregex "PABSBrr",
- "PABSDrr",
- "PABSWrr",
- "PADDSBrr",
- "PADDSWrr",
- "PADDUSBrr",
- "PADDUSWrr",
- "PAVGBrr",
- "PAVGWrr",
- "PCMPEQBrr",
- "PCMPEQDrr",
- "PCMPEQQrr",
- "PCMPEQWrr",
- "PCMPGTBrr",
- "PCMPGTDrr",
- "PCMPGTWrr",
- "PMAXSBrr",
- "PMAXSDrr",
- "PMAXSWrr",
- "PMAXUBrr",
- "PMAXUDrr",
- "PMAXUWrr",
- "PMINSBrr",
- "PMINSDrr",
- "PMINSWrr",
- "PMINUBrr",
- "PMINUDrr",
- "PMINUWrr",
- "PSIGNBrr",
- "PSIGNDrr",
- "PSIGNWrr",
- "PSLLDri",
- "PSLLQri",
- "PSLLWri",
- "PSRADri",
- "PSRAWri",
- "PSRLDri",
- "PSRLQri",
- "PSRLWri",
- "PSUBSBrr",
- "PSUBSWrr",
- "PSUBUSBrr",
- "PSUBUSWrr",
- "VPABSBYrr",
- "VPABSBrr",
- "VPABSDYrr",
- "VPABSDrr",
- "VPABSWYrr",
- "VPABSWrr",
- "VPADDSBYrr",
- "VPADDSBrr",
- "VPADDSWYrr",
- "VPADDSWrr",
- "VPADDUSBYrr",
- "VPADDUSBrr",
- "VPADDUSWYrr",
- "VPADDUSWrr",
- "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",
- "VPSLLDYri",
- "VPSLLDri",
- "VPSLLQYri",
- "VPSLLQri",
- "VPSLLVDYrr",
- "VPSLLVDrr",
- "VPSLLVQYrr",
- "VPSLLVQrr",
- "VPSLLWYri",
- "VPSLLWri",
- "VPSRADYri",
- "VPSRADri",
- "VPSRAVDYrr",
- "VPSRAVDrr",
- "VPSRAWYri",
- "VPSRAWri",
- "VPSRLDYri",
- "VPSRLDri",
- "VPSRLQYri",
- "VPSRLQri",
- "VPSRLVDYrr",
- "VPSRLVDrr",
- "VPSRLVQYrr",
- "VPSRLVQrr",
- "VPSRLWYri",
- "VPSRLWri",
- "VPSUBSBYrr",
- "VPSUBSBrr",
- "VPSUBSWYrr",
- "VPSUBSWrr",
- "VPSUBUSBYrr",
- "VPSUBUSBrr",
- "VPSUBUSWYrr",
- "VPSUBUSWrr")>;
+def: InstRW<[SKLWriteResGroup5], (instregex "(V?)PABSB(Y?)rr",
+ "(V?)PABSD(Y?)rr",
+ "(V?)PABSW(Y?)rr",
+ "(V?)PADDSB(Y?)rr",
+ "(V?)PADDSW(Y?)rr",
+ "(V?)PADDUSB(Y?)rr",
+ "(V?)PADDUSW(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?)PSLLD(Y?)ri",
+ "(V?)PSLLQ(Y?)ri",
+ "VPSLLVD(Y?)rr",
+ "VPSLLVQ(Y?)rr",
+ "(V?)PSLLW(Y?)ri",
+ "(V?)PSRAD(Y?)ri",
+ "VPSRAVD(Y?)rr",
+ "(V?)PSRAW(Y?)ri",
+ "(V?)PSRLD(Y?)ri",
+ "(V?)PSRLQ(Y?)ri",
+ "VPSRLVD(Y?)rr",
+ "VPSRLVQ(Y?)rr",
+ "(V?)PSRLW(Y?)ri",
+ "(V?)PSUBSB(Y?)rr",
+ "(V?)PSUBSW(Y?)rr",
+ "(V?)PSUBUSB(Y?)rr",
+ "(V?)PSUBUSW(Y?)rr")>;
def SKLWriteResGroup6 : SchedWriteRes<[SKLPort05]> {
let Latency = 1;
@@ -735,91 +560,36 @@ def SKLWriteResGroup9 : SchedWriteRes<[S
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup9], (instregex "ANDNPDrr",
- "ANDNPSrr",
- "ANDPDrr",
- "ANDPSrr",
- "BLENDPDrri",
- "BLENDPSrri",
- "MOVAPDrr",
- "MOVAPSrr",
- "MOVDQArr",
- "MOVDQUrr",
- "MOVPQI2QIrr",
- "MOVSSrr",
- "ORPDrr",
- "ORPSrr",
- "PADDBrr",
- "PADDDrr",
- "PADDQrr",
- "PADDWrr",
- "PANDNrr",
- "PANDrr",
- "PORrr",
- "PSUBBrr",
- "PSUBDrr",
- "PSUBQrr",
- "PSUBWrr",
- "PXORrr",
- "VANDNPDYrr",
- "VANDNPDrr",
- "VANDNPSYrr",
- "VANDNPSrr",
- "VANDPDYrr",
- "VANDPDrr",
- "VANDPSYrr",
- "VANDPSrr",
- "VBLENDPDYrri",
- "VBLENDPDrri",
- "VBLENDPSYrri",
- "VBLENDPSrri",
- "VMOVAPDYrr",
- "VMOVAPDrr",
- "VMOVAPSYrr",
- "VMOVAPSrr",
- "VMOVDQAYrr",
- "VMOVDQArr",
- "VMOVDQUYrr",
- "VMOVDQUrr",
- "VMOVPQI2QIrr",
- "VMOVSSrr",
- "VMOVZPQILo2PQIrr",
- "VORPDYrr",
- "VORPDrr",
- "VORPSYrr",
- "VORPSrr",
- "VPADDBYrr",
- "VPADDBrr",
- "VPADDDYrr",
- "VPADDDrr",
- "VPADDQYrr",
- "VPADDQrr",
- "VPADDWYrr",
- "VPADDWrr",
- "VPANDNYrr",
- "VPANDNrr",
- "VPANDYrr",
- "VPANDrr",
- "VPBLENDDYrri",
- "VPBLENDDrri",
- "VPORYrr",
- "VPORrr",
- "VPSUBBYrr",
- "VPSUBBrr",
- "VPSUBDYrr",
- "VPSUBDrr",
- "VPSUBQYrr",
- "VPSUBQrr",
- "VPSUBWYrr",
- "VPSUBWrr",
- "VPXORYrr",
- "VPXORrr",
- "VXORPDYrr",
- "VXORPDrr",
- "VXORPSYrr",
- "VXORPSrr",
- "XORPDrr",
- "XORPSrr")>;
+def: InstRW<[SKLWriteResGroup9], (instregex "(V?)ANDNPD(Y?)rr",
+ "(V?)ANDNPS(Y?)rr",
+ "(V?)ANDPD(Y?)rr",
+ "(V?)ANDPS(Y?)rr",
+ "(V?)BLENDPD(Y?)rri",
+ "(V?)BLENDPS(Y?)rri",
+ "(V?)MOVAPD(Y?)rr",
+ "(V?)MOVAPS(Y?)rr",
+ "(V?)MOVDQA(Y?)rr",
+ "(V?)MOVDQU(Y?)rr",
+ "(V?)MOVPQI2QIrr",
+ "(V?)MOVSSrr",
+ "(V?)MOVZPQILo2PQIrr",
+ "(V?)ORPD(Y?)rr",
+ "(V?)ORPS(Y?)rr",
+ "(V?)PADDB(Y?)rr",
+ "(V?)PADDD(Y?)rr",
+ "(V?)PADDQ(Y?)rr",
+ "(V?)PADDW(Y?)rr",
+ "(V?)PANDN(Y?)rr",
+ "(V?)PAND(Y?)rr",
+ "VPBLENDD(Y?)rri",
+ "(V?)POR(Y?)rr",
+ "(V?)PSUBB(Y?)rr",
+ "(V?)PSUBD(Y?)rr",
+ "(V?)PSUBQ(Y?)rr",
+ "(V?)PSUBW(Y?)rr",
+ "(V?)PXOR(Y?)rr",
+ "(V?)XORPD(Y?)rr"
+ "(V?)XORPS(Y?)rr")>;
def SKLWriteResGroup10 : SchedWriteRes<[SKLPort0156]> {
let Latency = 1;
@@ -886,58 +656,31 @@ def: InstRW<[SKLWriteResGroup11], (instr
"MMX_MOVQ64mr",
"MOV(8|16|32|64)mr",
"MOV8mi",
- "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",
+ "(Y?)MOVAPDYmr",
+ "(Y?)MOVAPS(Y?)mr",
+ "(Y?)MOVDQA(Y?)mr",
+ "(Y?)MOVDQU(Y?)mr",
+ "(Y?)MOVHPDmr",
+ "(Y?)MOVHPSmr",
+ "(Y?)MOVLPDmr",
+ "(Y?)MOVLPSmr",
+ "(Y?)MOVNTDQ(Y?)mr",
+ "(Y?)MOVNTPD(Y?)mr",
+ "(Y?)MOVNTPS(Y?)mr",
+ "(Y?)MOVPDI2DImr",
+ "(Y?)MOVPQI2QImr",
+ "(Y?)MOVPQIto64mr",
+ "(Y?)MOVSDmr",
+ "(Y?)MOVSSmr",
+ "(Y?)MOVUPD(Y?)mr",
+ "(Y?)MOVUPS(Y?)mr",
"VMPTRSTm")>;
def SKLWriteResGroup12 : SchedWriteRes<[SKLPort0]> {
@@ -945,34 +688,20 @@ def SKLWriteResGroup12 : SchedWriteRes<[
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup12], (instregex "COMISDrr",
- "COMISSrr",
- "MMX_MOVD64from64rr",
+def: InstRW<[SKLWriteResGroup12], (instregex "MMX_MOVD64from64rr",
"MMX_MOVD64grr",
"MMX_PMOVMSKBrr",
- "MOVMSKPDrr",
- "MOVMSKPSrr",
- "MOVPDI2DIrr",
- "MOVPQIto64rr",
- "PMOVMSKBrr",
- "UCOMISDrr",
- "UCOMISSrr",
- "VCOMISDrr",
- "VCOMISSrr",
- "VMOVMSKPDYrr",
- "VMOVMSKPDrr",
- "VMOVMSKPSYrr",
- "VMOVMSKPSrr",
- "VMOVPDI2DIrr",
- "VMOVPQIto64rr",
- "VPMOVMSKBYrr",
- "VPMOVMSKBrr",
- "VTESTPDYrr",
- "VTESTPDrr",
- "VTESTPSYrr",
- "VTESTPSrr",
- "VUCOMISDrr",
- "VUCOMISSrr")>;
+ "(V?)COMISDrr",
+ "(V?)COMISSrr",
+ "(V?)MOVMSKPD(Y?)rr",
+ "(V?)MOVMSKPS(Y?)rr",
+ "(V?)MOVPDI2DIrr",
+ "(V?)MOVPQIto64rr",
+ "(V?)PMOVMSKB(Y?)rr",
+ "VTESTPD(Y?)rr",
+ "VTESTPS(Y?)rr",
+ "(V?)UCOMISDrr",
+ "(V?)UCOMISSrr")>;
def SKLWriteResGroup13 : SchedWriteRes<[SKLPort5]> {
let Latency = 2;
@@ -981,14 +710,10 @@ def SKLWriteResGroup13 : SchedWriteRes<[
}
def: InstRW<[SKLWriteResGroup13], (instregex "MMX_MOVQ2DQrr",
"MMX_PINSRWrr",
- "PINSRBrr",
- "PINSRDrr",
- "PINSRQrr",
- "PINSRWrr",
- "VPINSRBrr",
- "VPINSRDrr",
- "VPINSRQrr",
- "VPINSRWrr")>;
+ "(V?)PINSRBrr",
+ "(V?)PINSRDrr",
+ "(V?)PINSRQrr",
+ "(V?)PINSRWrr")>;
def SKLWriteResGroup14 : SchedWriteRes<[SKLPort05]> {
let Latency = 2;
@@ -1018,12 +743,9 @@ def SKLWriteResGroup16 : SchedWriteRes<[
def: InstRW<[SKLWriteResGroup16], (instregex "BLENDVPDrr0",
"BLENDVPSrr0",
"PBLENDVBrr0",
- "VBLENDVPDYrr",
- "VBLENDVPDrr",
- "VBLENDVPSYrr",
- "VBLENDVPSrr",
- "VPBLENDVBYrr",
- "VPBLENDVBrr")>;
+ "VBLENDVPD(Y?)rr",
+ "VBLENDVPS(Y?)rr",
+ "VPBLENDVB(Y?)rr")>;
def SKLWriteResGroup17 : SchedWriteRes<[SKLPort0156]> {
let Latency = 2;
@@ -1039,36 +761,24 @@ def SKLWriteResGroup18 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup18], (instregex "VMASKMOVPDYmr",
- "VMASKMOVPDmr",
- "VMASKMOVPSYmr",
- "VMASKMOVPSmr",
- "VPMASKMOVDYmr",
- "VPMASKMOVDmr",
- "VPMASKMOVQYmr",
- "VPMASKMOVQmr")>;
+def: InstRW<[SKLWriteResGroup18], (instregex "VMASKMOVPD(Y?)mr",
+ "VMASKMOVPS(Y?)mr",
+ "VPMASKMOVD(Y?)mr",
+ "VPMASKMOVQ(Y?)mr")>;
def SKLWriteResGroup19 : SchedWriteRes<[SKLPort5,SKLPort01]> {
let Latency = 2;
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup19], (instregex "PSLLDrr",
- "PSLLQrr",
- "PSLLWrr",
- "PSRADrr",
- "PSRAWrr",
- "PSRLDrr",
- "PSRLQrr",
- "PSRLWrr",
- "VPSLLDrr",
- "VPSLLQrr",
- "VPSLLWrr",
- "VPSRADrr",
- "VPSRAWrr",
- "VPSRLDrr",
- "VPSRLQrr",
- "VPSRLWrr")>;
+def: InstRW<[SKLWriteResGroup19], (instregex "(V?)PSLLDrr",
+ "(V?)PSLLQrr",
+ "(V?)PSLLWrr",
+ "(V?)PSRADrr",
+ "(V?)PSRAWrr",
+ "(V?)PSRLDrr",
+ "(V?)PSRLQrr",
+ "(V?)PSRLWrr")>;
def SKLWriteResGroup20 : SchedWriteRes<[SKLPort6,SKLPort0156]> {
let Latency = 2;
@@ -1109,18 +819,12 @@ def SKLWriteResGroup24 : SchedWriteRes<[
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SKLWriteResGroup24], (instregex "EXTRACTPSmr",
- "PEXTRBmr",
- "PEXTRDmr",
- "PEXTRQmr",
- "PEXTRWmr",
- "STMXCSR",
- "VEXTRACTPSmr",
- "VPEXTRBmr",
- "VPEXTRDmr",
- "VPEXTRQmr",
- "VPEXTRWmr",
- "VSTMXCSR")>;
+def: InstRW<[SKLWriteResGroup24], (instregex "(V?)EXTRACTPSmr",
+ "(V?)PEXTRBmr",
+ "(V?)PEXTRDmr",
+ "(V?)PEXTRQmr",
+ "(V?)PEXTRWmr",
+ "(V?)STMXCSR")>;
def SKLWriteResGroup25 : SchedWriteRes<[SKLPort4,SKLPort6,SKLPort237]> {
let Latency = 2;
@@ -1189,8 +893,6 @@ def: InstRW<[SKLWriteResGroup30], (instr
"ADD_FST0r",
"ADD_FrST0",
"MMX_PSADBWirr",
- "PCMPGTQrr",
- "PSADBWrr",
"SUBR_FPrST0",
"SUBR_FST0r",
"SUBR_FrST0",
@@ -1203,14 +905,11 @@ def: InstRW<[SKLWriteResGroup30], (instr
"VEXTRACTI128rr",
"VINSERTF128rr",
"VINSERTI128rr",
- "VPBROADCASTBYrr",
- "VPBROADCASTBrr",
+ "VPBROADCASTB(Y?)rr",
"VPBROADCASTDYrr",
"VPBROADCASTQYrr",
- "VPBROADCASTWYrr",
- "VPBROADCASTWrr",
- "VPCMPGTQYrr",
- "VPCMPGTQrr",
+ "VPBROADCASTW(Y?)rr",
+ "(V?)PCMPGTQ(Y?)rr",
"VPERM2F128rr",
"VPERM2I128rr",
"VPERMDYrr",
@@ -1229,28 +928,20 @@ def: InstRW<[SKLWriteResGroup30], (instr
"VPMOVZXDQYrr",
"VPMOVZXWDYrr",
"VPMOVZXWQYrr",
- "VPSADBWYrr",
- "VPSADBWrr")>;
+ "(V?)PSADBW(Y?)rr")>;
def SKLWriteResGroup31 : SchedWriteRes<[SKLPort0,SKLPort5]> {
let Latency = 3;
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup31], (instregex "EXTRACTPSrr",
- "MMX_PEXTRWrr",
- "PEXTRBrr",
- "PEXTRDrr",
- "PEXTRQrr",
- "PEXTRWrr",
- "PTESTrr",
- "VEXTRACTPSrr",
- "VPEXTRBrr",
- "VPEXTRDrr",
- "VPEXTRQrr",
- "VPEXTRWrr",
- "VPTESTYrr",
- "VPTESTrr")>;
+def: InstRW<[SKLWriteResGroup31], (instregex "MMX_PEXTRWrr",
+ "(V?)EXTRACTPSrr",
+ "(V?)PEXTRBrr",
+ "(V?)PEXTRDrr",
+ "(V?)PEXTRQrr",
+ "(V?)PEXTRWrr",
+ "(V?)PTEST(Y?)rr")>;
def SKLWriteResGroup32 : SchedWriteRes<[SKLPort0,SKLPort0156]> {
let Latency = 3;
@@ -1291,12 +982,8 @@ def SKLWriteResGroup36 : SchedWriteRes<[
let NumMicroOps = 3;
let ResourceCycles = [2,1];
}
-def: InstRW<[SKLWriteResGroup36], (instregex "PHADDSWrr",
- "PHSUBSWrr",
- "VPHADDSWrr",
- "VPHADDSWYrr",
- "VPHSUBSWrr",
- "VPHSUBSWYrr")>;
+def: InstRW<[SKLWriteResGroup36], (instregex "(V?)PHADDSW(Y?)rr",
+ "(V?)PHSUBSW(Y?)rr")>;
def SKLWriteResGroup37 : SchedWriteRes<[SKLPort5,SKLPort05]> {
let Latency = 3;
@@ -1313,18 +1000,10 @@ def SKLWriteResGroup38 : SchedWriteRes<[
let NumMicroOps = 3;
let ResourceCycles = [2,1];
}
-def: InstRW<[SKLWriteResGroup38], (instregex "PHADDDrr",
- "PHADDWrr",
- "PHSUBDrr",
- "PHSUBWrr",
- "VPHADDDYrr",
- "VPHADDDrr",
- "VPHADDWYrr",
- "VPHADDWrr",
- "VPHSUBDYrr",
- "VPHSUBDrr",
- "VPHSUBWYrr",
- "VPHSUBWrr")>;
+def: InstRW<[SKLWriteResGroup38], (instregex "(V?)PHADDD(Y?)rr",
+ "(V?)PHADDW(Y?)rr",
+ "(V?)PHSUBD(Y?)rr",
+ "(V?)PHSUBW(Y?)rr")>;
def SKLWriteResGroup39 : SchedWriteRes<[SKLPort5,SKLPort0156]> {
let Latency = 3;
@@ -1402,123 +1081,54 @@ def: InstRW<[SKLWriteResGroup47], (instr
"MUL_FPrST0",
"MUL_FST0r",
"MUL_FrST0",
- "RCPPSr",
- "RCPSSr",
- "RSQRTPSr",
- "RSQRTSSr",
- "VRCPPSYr",
- "VRCPPSr",
- "VRCPSSr",
- "VRSQRTPSYr",
- "VRSQRTPSr",
- "VRSQRTSSr")>;
+ "(V?)RCPPS(Y?)r",
+ "(V?)RCPSSr",
+ "(V?)RSQRTPS(Y?)r",
+ "(V?)RSQRTSSr")>;
def SKLWriteResGroup48 : SchedWriteRes<[SKLPort01]> {
let Latency = 4;
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup48], (instregex "ADDPDrr",
- "ADDPSrr",
- "ADDSDrr",
- "ADDSSrr",
- "ADDSUBPDrr",
- "ADDSUBPSrr",
- "CMPPDrri",
- "CMPPSrri",
- "CMPSDrr",
- "CMPSSrr",
- "CVTDQ2PSrr",
- "CVTPS2DQrr",
- "CVTTPS2DQrr",
- "MAX(C?)PDrr",
- "MAX(C?)PSrr",
- "MAX(C?)SDrr",
- "MAX(C?)SSrr",
- "MIN(C?)PDrr",
- "MIN(C?)PSrr",
- "MIN(C?)SDrr",
- "MIN(C?)SSrr",
- "MULPDrr",
- "MULPSrr",
- "MULSDrr",
- "MULSSrr",
- "PHMINPOSUWrr",
- "PMADDUBSWrr",
- "PMADDWDrr",
- "PMULDQrr",
- "PMULHRSWrr",
- "PMULHUWrr",
- "PMULHWrr",
- "PMULLWrr",
- "PMULUDQrr",
- "SUBPDrr",
- "SUBPSrr",
- "SUBSDrr",
- "SUBSSrr",
- "VADDPDYrr",
- "VADDPDrr",
- "VADDPSYrr",
- "VADDPSrr",
- "VADDSDrr",
- "VADDSSrr",
- "VADDSUBPDYrr",
- "VADDSUBPDrr",
- "VADDSUBPSYrr",
- "VADDSUBPSrr",
- "VCMPPDYrri",
- "VCMPPDrri",
- "VCMPPSYrri",
- "VCMPPSrri",
- "VCMPSDrr",
- "VCMPSSrr",
- "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",
- "VMULPDYrr",
- "VMULPDrr",
- "VMULPSYrr",
- "VMULPSrr",
- "VMULSDrr",
- "VMULSSrr",
- "VPHMINPOSUWrr",
- "VPMADDUBSWYrr",
- "VPMADDUBSWrr",
- "VPMADDWDYrr",
- "VPMADDWDrr",
- "VPMULDQYrr",
- "VPMULDQrr",
- "VPMULHRSWYrr",
- "VPMULHRSWrr",
- "VPMULHUWYrr",
- "VPMULHUWrr",
- "VPMULHWYrr",
- "VPMULHWrr",
- "VPMULLWYrr",
- "VPMULLWrr",
- "VPMULUDQYrr",
- "VPMULUDQrr",
- "VSUBPDYrr",
- "VSUBPDrr",
- "VSUBPSYrr",
- "VSUBPSrr",
- "VSUBSDrr",
- "VSUBSSrr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "(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?)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?)MULPD(Y?)rr",
+ "(V?)MULPS(Y?)rr",
+ "(V?)MULSDrr",
+ "(V?)MULSSrr",
+ "(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?)SUBPD(Y?)rr",
+ "(V?)SUBPS(Y?)rr",
+ "(V?)SUBSDrr",
+ "(V?)SUBSSrr")>;
def: InstRW<[SKLWriteResGroup48],
(instregex
"VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)(Y)?r",
@@ -1529,9 +1139,7 @@ def SKLWriteResGroup50 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [2];
}
-def: InstRW<[SKLWriteResGroup50], (instregex "MPSADBWrri",
- "VMPSADBWYrri",
- "VMPSADBWrri")>;
+def: InstRW<[SKLWriteResGroup50], (instregex "(V?)MPSADBW(Y?)rri")>;
def SKLWriteResGroup51 : SchedWriteRes<[SKLPort1,SKLPort5]> {
let Latency = 4;
@@ -1612,12 +1220,6 @@ def: InstRW<[SKLWriteResGroup58], (instr
"MMX_MOVD64to64rm",
"MMX_MOVQ64rm",
"MOV(8|16|32|64)rm",
- "MOV64toPQIrm",
- "MOVDDUPrm",
- "MOVDI2PDIrm",
- "MOVQI2PQIrm",
- "MOVSDrm",
- "MOVSSrm",
"MOVSX(16|32|64)rm16",
"MOVSX(16|32|64)rm32",
"MOVSX(16|32|64)rm8",
@@ -1627,51 +1229,41 @@ def: InstRW<[SKLWriteResGroup58], (instr
"PREFETCHT0",
"PREFETCHT1",
"PREFETCHT2",
- "VMOV64toPQIrm",
- "VMOVDDUPrm",
- "VMOVDI2PDIrm",
- "VMOVQI2PQIrm",
- "VMOVSDrm",
- "VMOVSSrm")>;
+ "(V?)MOV64toPQIrm",
+ "(V?)MOVDDUPrm",
+ "(V?)MOVDI2PDIrm",
+ "(V?)MOVQI2PQIrm",
+ "(V?)MOVSDrm",
+ "(V?)MOVSSrm")>;
def SKLWriteResGroup59 : SchedWriteRes<[SKLPort0,SKLPort5]> {
let Latency = 5;
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup59], (instregex "CVTDQ2PDrr",
- "MMX_CVTPI2PDirr",
- "VCVTDQ2PDrr")>;
+def: InstRW<[SKLWriteResGroup59], (instregex "MMX_CVTPI2PDirr",
+ "(V?)CVTDQ2PDrr")>;
def SKLWriteResGroup60 : SchedWriteRes<[SKLPort5,SKLPort015]> {
let Latency = 5;
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup60], (instregex "CVTPD2DQrr",
- "CVTPD2PSrr",
- "CVTPS2PDrr",
- "CVTSD2SSrr",
- "CVTSI642SDrr",
- "CVTSI2SDrr",
- "CVTSI2SSrr",
- "CVTSS2SDrr",
- "CVTTPD2DQrr",
- "MMX_CVTPD2PIirr",
+def: InstRW<[SKLWriteResGroup60], (instregex "MMX_CVTPD2PIirr",
"MMX_CVTPS2PIirr",
"MMX_CVTTPD2PIirr",
"MMX_CVTTPS2PIirr",
- "VCVTPD2DQrr",
- "VCVTPD2PSrr",
+ "(V?)CVTPD2DQrr",
+ "(V?)CVTPD2PSrr",
"VCVTPH2PSrr",
- "VCVTPS2PDrr",
+ "(V?)CVTPS2PDrr",
"VCVTPS2PHrr",
- "VCVTSD2SSrr",
- "VCVTSI642SDrr",
- "VCVTSI2SDrr",
- "VCVTSI2SSrr",
- "VCVTSS2SDrr",
- "VCVTTPD2DQrr")>;
+ "(V?)CVTSD2SSrr",
+ "(V?)CVTSI642SDrr",
+ "(V?)CVTSI2SDrr",
+ "(V?)CVTSI2SSrr",
+ "(V?)CVTSS2SDrr",
+ "(V?)CVTTPD2DQrr")>;
def SKLWriteResGroup61 : SchedWriteRes<[SKLPort1,SKLPort6,SKLPort06]> {
let Latency = 5;
@@ -1714,27 +1306,17 @@ def SKLWriteResGroup67 : SchedWriteRes<[
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup67], (instregex "LDDQUrm",
- "MOVAPDrm",
- "MOVAPSrm",
- "MOVDQArm",
- "MOVDQUrm",
- "MOVNTDQArm",
- "MOVSHDUPrm",
- "MOVSLDUPrm",
- "MOVUPDrm",
- "MOVUPSrm",
- "VBROADCASTSSrm",
- "VLDDQUrm",
- "VMOVAPDrm",
- "VMOVAPSrm",
- "VMOVDQArm",
- "VMOVDQUrm",
- "VMOVNTDQArm",
- "VMOVSHDUPrm",
- "VMOVSLDUPrm",
- "VMOVUPDrm",
- "VMOVUPSrm",
+def: InstRW<[SKLWriteResGroup67], (instregex "VBROADCASTSSrm",
+ "(V?)LDDQUrm",
+ "(V?)MOVAPDrm",
+ "(V?)MOVAPSrm",
+ "(V?)MOVDQArm",
+ "(V?)MOVDQUrm",
+ "(V?)MOVNTDQArm",
+ "(V?)MOVSHDUPrm",
+ "(V?)MOVSLDUPrm",
+ "(V?)MOVUPDrm",
+ "(V?)MOVUPSrm",
"VPBROADCASTDrm",
"VPBROADCASTQrm")>;
@@ -1784,18 +1366,12 @@ def SKLWriteResGroup70 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup70], (instregex "CVTSD2SI64rr",
- "CVTSD2SIrr",
- "CVTSS2SI64rr",
- "CVTSS2SIrr",
- "CVTTSD2SI64rr",
- "CVTTSD2SIrr",
- "VCVTSD2SI64rr",
- "VCVTSD2SIrr",
- "VCVTSS2SI64rr",
- "VCVTSS2SIrr",
- "VCVTTSD2SI64rr",
- "VCVTTSD2SIrr")>;
+def: InstRW<[SKLWriteResGroup70], (instregex "(V?)CVTSD2SI64rr",
+ "(V?)CVTSD2SIrr",
+ "(V?)CVTSS2SI64rr",
+ "(V?)CVTSS2SIrr",
+ "(V?)CVTTSD2SI64rr",
+ "(V?)CVTTSD2SIrr")>;
def SKLWriteResGroup71 : SchedWriteRes<[SKLPort5,SKLPort23]> {
let Latency = 6;
@@ -1812,46 +1388,26 @@ def: InstRW<[SKLWriteResGroup71], (instr
"MMX_PUNPCKLBWirm",
"MMX_PUNPCKLDQirm",
"MMX_PUNPCKLWDirm",
- "MOVHPDrm",
- "MOVHPSrm",
- "MOVLPDrm",
- "MOVLPSrm",
- "PINSRBrm",
- "PINSRDrm",
- "PINSRQrm",
- "PINSRWrm",
- "PMOVSXBDrm",
- "PMOVSXBQrm",
- "PMOVSXBWrm",
- "PMOVSXDQrm",
- "PMOVSXWDrm",
- "PMOVSXWQrm",
- "PMOVZXBDrm",
- "PMOVZXBQrm",
- "PMOVZXBWrm",
- "PMOVZXDQrm",
- "PMOVZXWDrm",
- "PMOVZXWQrm",
- "VMOVHPDrm",
- "VMOVHPSrm",
- "VMOVLPDrm",
- "VMOVLPSrm",
- "VPINSRBrm",
- "VPINSRDrm",
- "VPINSRQrm",
- "VPINSRWrm",
- "VPMOVSXBDrm",
- "VPMOVSXBQrm",
- "VPMOVSXBWrm",
- "VPMOVSXDQrm",
- "VPMOVSXWDrm",
- "VPMOVSXWQrm",
- "VPMOVZXBDrm",
- "VPMOVZXBQrm",
- "VPMOVZXBWrm",
- "VPMOVZXDQrm",
- "VPMOVZXWDrm",
- "VPMOVZXWQrm")>;
+ "(V?)MOVHPDrm",
+ "(V?)MOVHPSrm",
+ "(V?)MOVLPDrm",
+ "(V?)MOVLPSrm",
+ "(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")>;
def SKLWriteResGroup72 : SchedWriteRes<[SKLPort6,SKLPort23]> {
let Latency = 6;
@@ -1936,18 +1492,10 @@ def SKLWriteResGroup77 : SchedWriteRes<[
let NumMicroOps = 3;
let ResourceCycles = [2,1];
}
-def: InstRW<[SKLWriteResGroup77], (instregex "HADDPDrr",
- "HADDPSrr",
- "HSUBPDrr",
- "HSUBPSrr",
- "VHADDPDYrr",
- "VHADDPDrr",
- "VHADDPSYrr",
- "VHADDPSrr",
- "VHSUBPDYrr",
- "VHSUBPDrr",
- "VHSUBPSYrr",
- "VHSUBPSrr")>;
+def: InstRW<[SKLWriteResGroup77], (instregex "(V?)HADDPD(Y?)rr",
+ "(V?)HADDPS(Y?)rr",
+ "(V?)HSUBPD(Y?)rr",
+ "(V?)HSUBPS(Y?)rr")>;
def SKLWriteResGroup78 : SchedWriteRes<[SKLPort5,SKLPort01]> {
let Latency = 6;
@@ -2060,76 +1608,47 @@ def SKLWriteResGroup87 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup87], (instregex "COMISDrm",
- "COMISSrm",
- "UCOMISDrm",
- "UCOMISSrm",
- "VCOMISDrm",
- "VCOMISSrm",
- "VUCOMISDrm",
- "VUCOMISSrm")>;
+def: InstRW<[SKLWriteResGroup87], (instregex "(V?)COMISDrm",
+ "(V?)COMISSrm",
+ "(V?)UCOMISDrm",
+ "(V?)UCOMISSrm")>;
def SKLWriteResGroup88 : SchedWriteRes<[SKLPort5,SKLPort23]> {
let Latency = 7;
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup88], (instregex "INSERTPSrm",
- "PACKSSDWrm",
- "PACKSSWBrm",
- "PACKUSDWrm",
- "PACKUSWBrm",
- "PALIGNRrmi",
- "PBLENDWrmi",
- "PSHUFBrm",
- "PSHUFDmi",
- "PSHUFHWmi",
- "PSHUFLWmi",
- "PUNPCKHBWrm",
- "PUNPCKHDQrm",
- "PUNPCKHQDQrm",
- "PUNPCKHWDrm",
- "PUNPCKLBWrm",
- "PUNPCKLDQrm",
- "PUNPCKLQDQrm",
- "PUNPCKLWDrm",
- "SHUFPDrmi",
- "SHUFPSrmi",
- "UNPCKHPDrm",
- "UNPCKHPSrm",
- "UNPCKLPDrm",
- "UNPCKLPSrm",
- "VINSERTPSrm",
- "VPACKSSDWrm",
- "VPACKSSWBrm",
- "VPACKUSDWrm",
- "VPACKUSWBrm",
- "VPALIGNRrmi",
- "VPBLENDWrmi",
+def: InstRW<[SKLWriteResGroup88], (instregex "(V?)INSERTPSrm",
+ "(V?)PACKSSDWrm",
+ "(V?)PACKSSWBrm",
+ "(V?)PACKUSDWrm",
+ "(V?)PACKUSWBrm",
+ "(V?)PALIGNRrmi",
+ "(V?)PBLENDWrmi",
"VPBROADCASTBrm",
"VPBROADCASTWrm",
"VPERMILPDmi",
"VPERMILPDrm",
"VPERMILPSmi",
"VPERMILPSrm",
- "VPSHUFBrm",
- "VPSHUFDmi",
- "VPSHUFHWmi",
- "VPSHUFLWmi",
- "VPUNPCKHBWrm",
- "VPUNPCKHDQrm",
- "VPUNPCKHQDQrm",
- "VPUNPCKHWDrm",
- "VPUNPCKLBWrm",
- "VPUNPCKLDQrm",
- "VPUNPCKLQDQrm",
- "VPUNPCKLWDrm",
- "VSHUFPDrmi",
- "VSHUFPSrmi",
- "VUNPCKHPDrm",
- "VUNPCKHPSrm",
- "VUNPCKLPDrm",
- "VUNPCKLPSrm")>;
+ "(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")>;
def SKLWriteResGroup89 : SchedWriteRes<[SKLPort5,SKLPort01]> {
let Latency = 7;
@@ -2148,154 +1667,89 @@ def SKLWriteResGroup90 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup90], (instregex "PABSBrm",
- "PABSDrm",
- "PABSWrm",
- "PADDSBrm",
- "PADDSWrm",
- "PADDUSBrm",
- "PADDUSWrm",
- "PAVGBrm",
- "PAVGWrm",
- "PCMPEQBrm",
- "PCMPEQDrm",
- "PCMPEQQrm",
- "PCMPEQWrm",
- "PCMPGTBrm",
- "PCMPGTDrm",
- "PCMPGTWrm",
- "PMAXSBrm",
- "PMAXSDrm",
- "PMAXSWrm",
- "PMAXUBrm",
- "PMAXUDrm",
- "PMAXUWrm",
- "PMINSBrm",
- "PMINSDrm",
- "PMINSWrm",
- "PMINUBrm",
- "PMINUDrm",
- "PMINUWrm",
- "PSIGNBrm",
- "PSIGNDrm",
- "PSIGNWrm",
- "PSLLDrm",
- "PSLLQrm",
- "PSLLWrm",
- "PSRADrm",
- "PSRAWrm",
- "PSRLDrm",
- "PSRLQrm",
- "PSRLWrm",
- "PSUBSBrm",
- "PSUBSWrm",
- "PSUBUSBrm",
- "PSUBUSWrm",
- "VPABSBrm",
- "VPABSDrm",
- "VPABSWrm",
- "VPADDSBrm",
- "VPADDSWrm",
- "VPADDUSBrm",
- "VPADDUSWrm",
- "VPAVGBrm",
- "VPAVGWrm",
- "VPCMPEQBrm",
- "VPCMPEQDrm",
- "VPCMPEQQrm",
- "VPCMPEQWrm",
- "VPCMPGTBrm",
- "VPCMPGTDrm",
- "VPCMPGTWrm",
- "VPMAXSBrm",
- "VPMAXSDrm",
- "VPMAXSWrm",
- "VPMAXUBrm",
- "VPMAXUDrm",
- "VPMAXUWrm",
- "VPMINSBrm",
- "VPMINSDrm",
- "VPMINSWrm",
- "VPMINUBrm",
- "VPMINUDrm",
- "VPMINUWrm",
- "VPSIGNBrm",
- "VPSIGNDrm",
- "VPSIGNWrm",
- "VPSLLDrm",
- "VPSLLQrm",
+def: InstRW<[SKLWriteResGroup90], (instregex "(V?)PABSBrm",
+ "(V?)PABSDrm",
+ "(V?)PABSWrm",
+ "(V?)PADDSBrm",
+ "(V?)PADDSWrm",
+ "(V?)PADDUSBrm",
+ "(V?)PADDUSWrm",
+ "(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?)PSLLDrm",
+ "(V?)PSLLQrm",
"VPSLLVDrm",
"VPSLLVQrm",
- "VPSLLWrm",
- "VPSRADrm",
+ "(V?)PSLLWrm",
+ "(V?)PSRADrm",
"VPSRAVDrm",
- "VPSRAWrm",
- "VPSRLDrm",
- "VPSRLQrm",
- "VPSRLVDrm",
+ "(V?)PSRAWrm",
+ "(V?)PSRLDrm",
+ "(V?)PSRLQrm",
+ "(V?)PSRLVDrm",
"VPSRLVQrm",
- "VPSRLWrm",
- "VPSUBSBrm",
- "VPSUBSWrm",
- "VPSUBUSBrm",
- "VPSUBUSWrm")>;
+ "(V?)PSRLWrm",
+ "(V?)PSUBSBrm",
+ "(V?)PSUBSWrm",
+ "(V?)PSUBUSBrm",
+ "(V?)PSUBUSWrm")>;
def SKLWriteResGroup91 : SchedWriteRes<[SKLPort23,SKLPort015]> {
let Latency = 7;
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup91], (instregex "ANDNPDrm",
- "ANDNPSrm",
- "ANDPDrm",
- "ANDPSrm",
- "BLENDPDrmi",
- "BLENDPSrmi",
- "ORPDrm",
- "ORPSrm",
- "PADDBrm",
- "PADDDrm",
- "PADDQrm",
- "PADDWrm",
- "PANDNrm",
- "PANDrm",
- "PORrm",
- "PSUBBrm",
- "PSUBDrm",
- "PSUBQrm",
- "PSUBWrm",
- "PXORrm",
- "VANDNPDrm",
- "VANDNPSrm",
- "VANDPDrm",
- "VANDPSrm",
- "VBLENDPDrmi",
- "VBLENDPSrmi",
- "VINSERTF128rm",
- "VINSERTI128rm",
- "VMASKMOVPDrm",
- "VMASKMOVPSrm",
- "VORPDrm",
- "VORPSrm",
- "VPADDBrm",
- "VPADDDrm",
- "VPADDQrm",
- "VPADDWrm",
- "VPANDNrm",
- "VPANDrm",
- "VPBLENDDrmi",
- "VPMASKMOVDrm",
- "VPMASKMOVQrm",
- "VPORrm",
- "VPSUBBrm",
- "VPSUBDrm",
- "VPSUBQrm",
- "VPSUBWrm",
- "VPXORrm",
- "VXORPDrm",
- "VXORPSrm",
- "XORPDrm",
- "XORPSrm")>;
+def: InstRW<[SKLWriteResGroup91], (instregex "(V?)ANDNPDrm",
+ "(V?)ANDNPSrm",
+ "(V?)ANDPDrm",
+ "(V?)ANDPSrm",
+ "(V?)BLENDPDrmi",
+ "(V?)BLENDPSrmi",
+ "(V?)INSERTF128rm",
+ "(V?)INSERTI128rm",
+ "(V?)MASKMOVPDrm",
+ "(V?)MASKMOVPSrm",
+ "(V?)ORPDrm",
+ "(V?)ORPSrm",
+ "(V?)PADDBrm",
+ "(V?)PADDDrm",
+ "(V?)PADDQrm",
+ "(V?)PADDWrm",
+ "(V?)PANDNrm",
+ "(V?)PANDrm",
+ "(V?)PBLENDDrmi",
+ "(V?)PMASKMOVDrm",
+ "(V?)PMASKMOVQrm",
+ "(V?)PORrm",
+ "(V?)PSUBBrm",
+ "(V?)PSUBDrm",
+ "(V?)PSUBQrm",
+ "(V?)PSUBWrm",
+ "(V?)PXORrm",
+ "(V?)XORPDrm",
+ "(V?)XORPSrm")>;
def SKLWriteResGroup92 : SchedWriteRes<[SKLPort5,SKLPort23]> {
let Latency = 7;
@@ -2398,25 +1852,17 @@ def SKLWriteResGroup105 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [2];
}
-def: InstRW<[SKLWriteResGroup105], (instregex "ROUNDPDr",
- "ROUNDPSr",
- "ROUNDSDr",
- "ROUNDSSr",
- "VROUNDPDr",
- "VROUNDPSr",
- "VROUNDSDr",
- "VROUNDSSr",
- "VROUNDPDYr",
- "VROUNDPSYr")>;
+def: InstRW<[SKLWriteResGroup105], (instregex "(V?)ROUNDPD(Y?)r",
+ "(V?)ROUNDPS(Y?)r",
+ "(V?)ROUNDSDr",
+ "(V?)ROUNDSSr")>;
def SKLWriteResGroup105_2 : SchedWriteRes<[SKLPort01]> {
let Latency = 10;
let NumMicroOps = 2;
let ResourceCycles = [2];
}
-def: InstRW<[SKLWriteResGroup105_2], (instregex "PMULLDrr",
- "VPMULLDYrr",
- "VPMULLDrr")>;
+def: InstRW<[SKLWriteResGroup105_2], (instregex "(V?)PMULLD(Y?)rr")>;
def SKLWriteResGroup106 : SchedWriteRes<[SKLPort0,SKLPort23]> {
let Latency = 8;
@@ -2444,7 +1890,7 @@ def: InstRW<[SKLWriteResGroup107], (inst
def SKLWriteResGroup107_16 : SchedWriteRes<[SKLPort1, SKLPort0156, SKLPort23]> {
let Latency = 8;
let NumMicroOps = 3;
- let ResourceCycles = [1,1,1];
+ let ResourceCycles = [1,1,1];
}
def: InstRW<[SKLWriteResGroup107_16], (instrs IMUL16rm, IMUL16rmi, IMUL16rmi8)>;
@@ -2595,8 +2041,7 @@ def: InstRW<[SKLWriteResGroup111], (inst
"PBLENDVBrm0",
"VBLENDVPDrm",
"VBLENDVPSrm",
- "VPBLENDVBYrm",
- "VPBLENDVBrm")>;
+ "VPBLENDVB(Y?)rm")>;
def SKLWriteResGroup112 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
let Latency = 8;
@@ -2680,10 +2125,8 @@ def: InstRW<[SKLWriteResGroup120], (inst
"MMX_PMULHWirm",
"MMX_PMULLWirm",
"MMX_PMULUDQirm",
- "RCPSSm",
- "RSQRTSSm",
- "VRCPSSm",
- "VRSQRTSSm",
+ "(V?)RCPSSm",
+ "(V?)RSQRTSSm",
"VTESTPDYrm",
"VTESTPSYrm")>;
@@ -2692,44 +2135,30 @@ def SKLWriteResGroup121 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup121], (instregex "PCMPGTQrm",
- "PSADBWrm",
- "VPCMPGTQrm",
+def: InstRW<[SKLWriteResGroup121], (instregex "(V?)PCMPGTQrm",
"VPMOVSXBWYrm",
"VPMOVSXDQYrm",
"VPMOVSXWDYrm",
"VPMOVZXWDYrm",
- "VPSADBWrm")>;
+ "(V?)PSADBWrm")>;
def SKLWriteResGroup122 : SchedWriteRes<[SKLPort01,SKLPort23]> {
let Latency = 9;
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup122], (instregex "ADDSDrm",
- "ADDSSrm",
- "CMPSDrm",
- "CMPSSrm",
- "MAX(C?)SDrm",
- "MAX(C?)SSrm",
- "MIN(C?)SDrm",
- "MIN(C?)SSrm",
- "MULSDrm",
- "MULSSrm",
- "SUBSDrm",
- "SUBSSrm",
- "VADDSDrm",
- "VADDSSrm",
- "VCMPSDrm",
- "VCMPSSrm",
- "VMAX(C?)SDrm",
- "VMAX(C?)SSrm",
- "VMIN(C?)SDrm",
- "VMIN(C?)SSrm",
- "VMULSDrm",
- "VMULSSrm",
- "VSUBSDrm",
- "VSUBSSrm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "(V?)ADDSDrm",
+ "(V?)ADDSSrm",
+ "(V?)CMPSDrm",
+ "(V?)CMPSSrm",
+ "(V?)MAX(C?)SDrm",
+ "(V?)MAX(C?)SSrm",
+ "(V?)MIN(C?)SDrm",
+ "(V?)MIN(C?)SSrm",
+ "(V?)MULSDrm",
+ "(V?)MULSSrm",
+ "(V?)SUBSDrm",
+ "(V?)SUBSSrm")>;
def: InstRW<[SKLWriteResGroup122],
(instregex "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)m")>;
@@ -2738,11 +2167,10 @@ def SKLWriteResGroup123 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup123], (instregex "CVTPS2PDrm",
- "MMX_CVTPS2PIirm",
+def: InstRW<[SKLWriteResGroup123], (instregex "MMX_CVTPS2PIirm",
"MMX_CVTTPS2PIirm",
"VCVTPH2PSrm",
- "VCVTPS2PDrm")>;
+ "(V?)CVTPS2PDrm")>;
def SKLWriteResGroup124 : SchedWriteRes<[SKLPort5,SKLPort01]> {
let Latency = 9;
@@ -2848,61 +2276,34 @@ def SKLWriteResGroup134 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup134], (instregex "ADDPDrm",
- "ADDPSrm",
- "ADDSUBPDrm",
- "ADDSUBPSrm",
- "CMPPDrmi",
- "CMPPSrmi",
- "CVTDQ2PSrm",
- "CVTPS2DQrm",
- "CVTSS2SDrm",
- "CVTTPS2DQrm",
- "MAX(C?)PDrm",
- "MAX(C?)PSrm",
- "MIN(C?)PDrm",
- "MIN(C?)PSrm",
- "MULPDrm",
- "MULPSrm",
- "PHMINPOSUWrm",
- "PMADDUBSWrm",
- "PMADDWDrm",
- "PMULDQrm",
- "PMULHRSWrm",
- "PMULHUWrm",
- "PMULHWrm",
- "PMULLWrm",
- "PMULUDQrm",
- "SUBPDrm",
- "SUBPSrm",
- "VADDPDrm",
- "VADDPSrm",
- "VADDSUBPDrm",
- "VADDSUBPSrm",
- "VCMPPDrmi",
- "VCMPPSrmi",
- "VCVTDQ2PSrm",
- "VCVTPH2PSYrm",
- "VCVTPS2DQrm",
- "VCVTSS2SDrm",
- "VCVTTPS2DQrm",
- "VMAX(C?)PDrm",
- "VMAX(C?)PSrm",
- "VMIN(C?)PDrm",
- "VMIN(C?)PSrm",
- "VMULPDrm",
- "VMULPSrm",
- "VPHMINPOSUWrm",
- "VPMADDUBSWrm",
- "VPMADDWDrm",
- "VPMULDQrm",
- "VPMULHRSWrm",
- "VPMULHUWrm",
- "VPMULHWrm",
- "VPMULLWrm",
- "VPMULUDQrm",
- "VSUBPDrm",
- "VSUBPSrm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "(V?)ADDPDrm",
+ "(V?)ADDPSrm",
+ "(V?)ADDSUBPDrm",
+ "(V?)ADDSUBPSrm",
+ "(V?)CMPPDrmi",
+ "(V?)CMPPSrmi",
+ "(V?)CVTDQ2PSrm",
+ "(V?)CVTPH2PSYrm",
+ "(V?)CVTPS2DQrm",
+ "(V?)CVTSS2SDrm",
+ "(V?)CVTTPS2DQrm",
+ "(V?)MAX(C?)PDrm",
+ "(V?)MAX(C?)PSrm",
+ "(V?)MIN(C?)PDrm",
+ "(V?)MIN(C?)PSrm",
+ "(V?)MULPDrm",
+ "(V?)MULPSrm",
+ "(V?)PHMINPOSUWrm",
+ "(V?)PMADDUBSWrm",
+ "(V?)PMADDWDrm",
+ "(V?)PMULDQrm",
+ "(V?)PMULHRSWrm",
+ "(V?)PMULHUWrm",
+ "(V?)PMULHWrm",
+ "(V?)PMULLWrm",
+ "(V?)PMULUDQrm",
+ "(V?)SUBPDrm",
+ "(V?)SUBPSrm")>;
def: InstRW<[SKLWriteResGroup134],
(instregex "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)m")>;
@@ -2972,11 +2373,8 @@ def SKLWriteResGroup145 : SchedWriteRes<
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup145], (instregex "DIVPSrr",
- "DIVSSrr",
- "VDIVPSYrr",
- "VDIVPSrr",
- "VDIVSSrr")>;
+def: InstRW<[SKLWriteResGroup145], (instregex "(V?)DIVPS(Y?)rr",
+ "(V?)DIVSSrr")>;
def SKLWriteResGroup146 : SchedWriteRes<[SKLPort0,SKLPort23]> {
let Latency = 11;
@@ -3045,21 +2443,14 @@ def SKLWriteResGroup151 : SchedWriteRes<
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SKLWriteResGroup151], (instregex "CVTSD2SI64rm",
- "CVTSD2SIrm",
- "CVTSS2SI64rm",
- "CVTSS2SIrm",
- "CVTTSD2SI64rm",
- "CVTTSD2SIrm",
- "CVTTSS2SIrm",
- "VCVTSD2SI64rm",
- "VCVTSD2SIrm",
- "VCVTSS2SI64rm",
- "VCVTSS2SIrm",
- "VCVTTSD2SI64rm",
- "VCVTTSD2SIrm",
+def: InstRW<[SKLWriteResGroup151], (instregex "(V?)CVTSD2SI64rm",
+ "(V?)CVTSD2SIrm",
+ "(V?)CVTSS2SI64rm",
+ "(V?)CVTSS2SIrm",
+ "(V?)CVTTSD2SI64rm",
+ "(V?)CVTTSD2SIrm",
"VCVTTSS2SI64rm",
- "VCVTTSS2SIrm")>;
+ "(V?)CVTTSS2SIrm")>;
def SKLWriteResGroup152 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort01]> {
let Latency = 11;
@@ -3107,8 +2498,7 @@ def SKLWriteResGroup157 : SchedWriteRes<
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup157], (instregex "VSQRTPSYr",
- "VSQRTPSr",
+def: InstRW<[SKLWriteResGroup157], (instregex "VSQRTPS(Y?)r",
"VSQRTSSr")>;
def SKLWriteResGroup159 : SchedWriteRes<[SKLPort5,SKLPort01,SKLPort23]> {
@@ -3160,9 +2550,7 @@ def SKLWriteResGroup164 : SchedWriteRes<
let NumMicroOps = 4;
let ResourceCycles = [1,3];
}
-def: InstRW<[SKLWriteResGroup164], (instregex "DPPSrri",
- "VDPPSYrri",
- "VDPPSrri")>;
+def: InstRW<[SKLWriteResGroup164], (instregex "(V?)DPPS(Y?)rri")>;
def SKLWriteResGroup165 : SchedWriteRes<[SKLPort5,SKLPort01,SKLPort23]> {
let Latency = 13;
@@ -3179,11 +2567,8 @@ def SKLWriteResGroup166 : SchedWriteRes<
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup166], (instregex "DIVPDrr",
- "DIVSDrr",
- "VDIVPDYrr",
- "VDIVPDrr",
- "VDIVSDrr")>;
+def: InstRW<[SKLWriteResGroup166], (instregex "(V?)DIVPD(Y?)rr",
+ "(V?)DIVSDrr")>;
def SKLWriteResGroup168 : SchedWriteRes<[SKLPort23,SKLPort01]> {
let Latency = 14;
@@ -3296,8 +2681,7 @@ def SKLWriteResGroup181 : SchedWriteRes<
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup181], (instregex "VSQRTPDYr",
- "VSQRTPDr",
+def: InstRW<[SKLWriteResGroup181], (instregex "VSQRTPD(Y?)r",
"VSQRTSDr")>;
def SKLWriteResGroup182 : SchedWriteRes<[SKLPort0,SKLPort23]> {
@@ -3328,9 +2712,8 @@ def SKLWriteResGroup186 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup186], (instregex "DIVSDrm",
- "SQRTPSm",
- "VDIVSDrm",
+def: InstRW<[SKLWriteResGroup186], (instregex "SQRTPSm",
+ "(V?)DIVSDrm",
"VSQRTPSYm")>;
def SKLWriteResGroup187 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort01]> {
More information about the llvm-commits
mailing list