[llvm] r331911 - [X86] Merge instregex patterns to reduce InstrRW compile time.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Wed May 9 12:04:15 PDT 2018
Author: rksimon
Date: Wed May 9 12:04:15 2018
New Revision: 331911
URL: http://llvm.org/viewvc/llvm-project?rev=331911&view=rev
Log:
[X86] Merge instregex patterns to reduce InstrRW compile time.
Modified:
llvm/trunk/lib/Target/X86/X86SchedBroadwell.td
llvm/trunk/lib/Target/X86/X86SchedHaswell.td
llvm/trunk/lib/Target/X86/X86SchedSandyBridge.td
llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td
llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td
Modified: llvm/trunk/lib/Target/X86/X86SchedBroadwell.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedBroadwell.td?rev=331911&r1=331910&r2=331911&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedBroadwell.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedBroadwell.td Wed May 9 12:04:15 2018
@@ -566,15 +566,11 @@ def: InstRW<[BWWriteResGroup10], (instre
"MOVNTI_64mr",
"MOVNTImr",
"ST_FP(32|64|80)m",
- "(V?)MOVHPDmr",
- "(V?)MOVHPSmr",
- "(V?)MOVLPDmr",
- "(V?)MOVLPSmr",
+ "(V?)MOV(H|L)(PD|PS)mr",
"(V?)MOVPDI2DImr",
"(V?)MOVPQI2QImr",
"(V?)MOVPQIto64mr",
- "(V?)MOVSDmr",
- "(V?)MOVSSmr")>;
+ "(V?)MOV(SD|SS)mr")>;
def BWWriteResGroup12 : SchedWriteRes<[BWPort01]> {
let Latency = 2;
@@ -778,14 +774,10 @@ def BWWriteResGroup39 : SchedWriteRes<[B
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[BWWriteResGroup39], (instregex "(V?)CVTSD2SI64rr",
- "(V?)CVTSD2SIrr",
- "(V?)CVTSS2SI64rr",
- "(V?)CVTSS2SIrr",
- "(V?)CVTTSD2SI64rr",
- "(V?)CVTTSD2SIrr",
- "(V?)CVTTSS2SI64rr",
- "(V?)CVTTSS2SIrr")>;
+def: InstRW<[BWWriteResGroup39], (instregex "(V?)CVT(T?)SD2SI64rr",
+ "(V?)CVT(T?)SD2SIrr",
+ "(V?)CVT(T?)SS2SI64rr",
+ "(V?)CVT(T?)SS2SIrr")>;
def BWWriteResGroup40 : SchedWriteRes<[BWPort0,BWPort5]> {
let Latency = 4;
@@ -807,20 +799,17 @@ def BWWriteResGroup42 : SchedWriteRes<[B
let ResourceCycles = [1,1];
}
def: InstRW<[BWWriteResGroup42], (instrs IMUL64r, MUL64r, MULX64rr)>;
-def: InstRW<[BWWriteResGroup42], (instregex "MMX_CVTPD2PIirr",
- "MMX_CVTPI2PDirr",
- "MMX_CVTPS2PIirr",
- "MMX_CVTTPD2PIirr",
- "MMX_CVTTPS2PIirr",
+def: InstRW<[BWWriteResGroup42], (instregex "MMX_CVTPI2PDirr",
+ "MMX_CVT(T?)PD2PIirr",
+ "MMX_CVT(T?)PS2PIirr",
"(V?)CVTDQ2PDrr",
- "(V?)CVTPD2DQrr",
"(V?)CVTPD2PSrr",
"VCVTPS2PHrr",
"(V?)CVTSD2SSrr",
"(V?)CVTSI642SDrr",
"(V?)CVTSI2SDrr",
"(V?)CVTSI2SSrr",
- "(V?)CVTTPD2DQrr")>;
+ "(V?)CVT(T?)PD2DQrr")>;
def BWWriteResGroup42_16 : SchedWriteRes<[BWPort1,BWPort06,BWPort0156]> {
let Latency = 4;
@@ -975,10 +964,9 @@ def BWWriteResGroup60 : SchedWriteRes<[B
let ResourceCycles = [1,1];
}
def: InstRW<[BWWriteResGroup60], (instregex "VCVTDQ2PDYrr",
- "VCVTPD2DQYrr",
"VCVTPD2PSYrr",
"VCVTPS2PHYrr",
- "VCVTTPD2DQYrr")>;
+ "VCVT(T?)PD2DQYrr")>;
def BWWriteResGroup62 : SchedWriteRes<[BWPort6,BWPort23]> {
let Latency = 6;
@@ -1276,12 +1264,9 @@ def BWWriteResGroup105 : SchedWriteRes<[
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[BWWriteResGroup105], (instregex "(V?)CVTSD2SI64rm",
- "(V?)CVTSD2SIrm",
- "(V?)CVTSS2SI64rm",
- "(V?)CVTSS2SIrm",
- "(V?)CVTTSD2SI64rm",
- "(V?)CVTTSD2SIrm",
+def: InstRW<[BWWriteResGroup105], (instregex "(V?)CVTSS2SI(64)?rm",
+ "(V?)CVT(T?)SD2SI64rm",
+ "(V?)CVT(T?)SD2SIrm",
"VCVTTSS2SI64rm",
"(V?)CVTTSS2SIrm")>;
@@ -1298,12 +1283,10 @@ def BWWriteResGroup107 : SchedWriteRes<[
let ResourceCycles = [1,1,1];
}
def: InstRW<[BWWriteResGroup107], (instrs IMUL64m, MUL64m, MULX64rm)>;
-def: InstRW<[BWWriteResGroup107], (instregex "CVTPD2DQrm",
- "CVTPD2PSrm",
- "CVTTPD2DQrm",
- "MMX_CVTPD2PIirm",
+def: InstRW<[BWWriteResGroup107], (instregex "CVTPD2PSrm",
+ "CVT(T?)PD2DQrm",
"MMX_CVTPI2PDirm",
- "MMX_CVTTPD2PIirm",
+ "MMX_CVT(T?)PD2PIirm",
"(V?)CVTDQ2PDrm",
"(V?)CVTSD2SSrm")>;
@@ -1350,10 +1333,8 @@ def BWWriteResGroup117 : SchedWriteRes<[
let NumMicroOps = 3;
let ResourceCycles = [2,1];
}
-def: InstRW<[BWWriteResGroup117], (instregex "FICOM16m",
- "FICOM32m",
- "FICOMP16m",
- "FICOMP32m")>;
+def: InstRW<[BWWriteResGroup117], (instregex "FICOM(P?)16m",
+ "FICOM(P?)32m")>;
def BWWriteResGroup120 : SchedWriteRes<[BWPort0,BWPort1,BWPort5,BWPort23]> {
let Latency = 10;
Modified: llvm/trunk/lib/Target/X86/X86SchedHaswell.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedHaswell.td?rev=331911&r1=331910&r2=331911&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedHaswell.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedHaswell.td Wed May 9 12:04:15 2018
@@ -759,15 +759,11 @@ def: InstRW<[HWWriteResGroup1], (instreg
"MOVNTI_64mr",
"MOVNTImr",
"ST_FP(32|64|80)m",
- "(V?)MOVHPDmr",
- "(V?)MOVHPSmr",
- "(V?)MOVLPDmr",
- "(V?)MOVLPSmr",
+ "(V?)MOV(H|L)(PD|PS)mr",
"(V?)MOVPDI2DImr",
"(V?)MOVPQI2QImr",
"(V?)MOVPQIto64mr",
- "(V?)MOVSDmr",
- "(V?)MOVSSmr",
+ "(V?)MOV(SD|SS)mr",
"VMPTRSTm")>;
def HWWriteResGroup2 : SchedWriteRes<[HWPort0]> {
@@ -1418,14 +1414,8 @@ def HWWriteResGroup70 : SchedWriteRes<[H
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[HWWriteResGroup70], (instregex "(V?)CVTSD2SI64rr",
- "(V?)CVTSD2SIrr",
- "(V?)CVTSS2SI64rr",
- "(V?)CVTSS2SIrr",
- "(V?)CVTTSD2SI64rr",
- "(V?)CVTTSD2SIrr",
- "(V?)CVTTSS2SI64rr",
- "(V?)CVTTSS2SIrr")>;
+def: InstRW<[HWWriteResGroup70], (instregex "(V?)CVT(T?)SD2SI(64)?rr",
+ "(V?)CVT(T?)SS2SI(64)?rr")>;
def HWWriteResGroup71 : SchedWriteRes<[HWPort0,HWPort5]> {
let Latency = 4;
@@ -1446,20 +1436,16 @@ def HWWriteResGroup73 : SchedWriteRes<[H
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[HWWriteResGroup73], (instregex "MMX_CVTPD2PIirr",
- "MMX_CVTPI2PDirr",
- "MMX_CVTPS2PIirr",
- "MMX_CVTTPD2PIirr",
- "MMX_CVTTPS2PIirr",
+def: InstRW<[HWWriteResGroup73], (instregex "MMX_CVTPI2PDirr",
+ "MMX_CVT(T?)PD2PIirr",
+ "MMX_CVT(T?)PS2PIirr",
"(V?)CVTDQ2PDrr",
- "(V?)CVTPD2DQrr",
"(V?)CVTPD2PSrr",
"VCVTPS2PHrr",
"(V?)CVTSD2SSrr",
- "(V?)CVTSI642SDrr",
- "(V?)CVTSI2SDrr",
+ "(V?)CVTSI(64)?2SDrr",
"(V?)CVTSI2SSrr",
- "(V?)CVTTPD2DQrr")>;
+ "(V?)CVT(T?)PD2DQrr")>;
def HWWriteResGroup74 : SchedWriteRes<[HWPort1,HWPort6]> {
let Latency = 4;
@@ -1490,12 +1476,9 @@ def HWWriteResGroup76 : SchedWriteRes<[H
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[HWWriteResGroup76], (instregex "(V?)CVTSD2SI64rm",
- "(V?)CVTSD2SIrm",
- "(V?)CVTSS2SI64rm",
- "(V?)CVTSS2SIrm",
- "(V?)CVTTSD2SI64rm",
- "(V?)CVTTSD2SIrm",
+def: InstRW<[HWWriteResGroup76], (instregex "(V?)CVTSD2SI(64)?rm",
+ "(V?)CVTSS2SI(64)?rm",
+ "(V?)CVTTSD2SI(64)?rm",
"VCVTTSS2SI64rm",
"(V?)CVTTSS2SIrm")>;
@@ -1511,11 +1494,9 @@ def HWWriteResGroup78 : SchedWriteRes<[H
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[HWWriteResGroup78], (instregex "CVTPD2DQrm",
- "CVTPD2PSrm",
- "CVTTPD2DQrm",
- "MMX_CVTPD2PIirm",
- "MMX_CVTTPD2PIirm",
+def: InstRW<[HWWriteResGroup78], (instregex "CVTPD2PSrm",
+ "CVT(T?)PD2DQrm",
+ "MMX_CVT(T?)PD2PIirm",
"(V?)CVTDQ2PDrm")>;
def HWWriteResGroup78_1 : SchedWriteRes<[HWPort1,HWPort5,HWPort23]> {
@@ -1682,10 +1663,9 @@ def HWWriteResGroup102 : SchedWriteRes<[
let ResourceCycles = [1,1];
}
def: InstRW<[HWWriteResGroup102], (instregex "VCVTDQ2PDYrr",
- "VCVTPD2DQYrr",
"VCVTPD2PSYrr",
"VCVTPS2PHYrr",
- "VCVTTPD2DQYrr")>;
+ "VCVT(T?)PD2DQYrr")>;
def HWWriteResGroup103 : SchedWriteRes<[HWPort1,HWPort23]> {
let Latency = 13;
Modified: llvm/trunk/lib/Target/X86/X86SchedSandyBridge.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedSandyBridge.td?rev=331911&r1=331910&r2=331911&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedSandyBridge.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedSandyBridge.td Wed May 9 12:04:15 2018
@@ -705,16 +705,13 @@ def SBWriteResGroup28 : SchedWriteRes<[S
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SBWriteResGroup28], (instregex "MMX_CVTPD2PIirr",
- "MMX_CVTPI2PDirr",
- "MMX_CVTTPD2PIirr",
+def: InstRW<[SBWriteResGroup28], (instregex "MMX_CVTPI2PDirr",
+ "MMX_CVT(T?)PD2PIirr",
"(V?)CVTDQ2PD(Y?)rr",
- "(V?)CVTPD2DQ(Y?)rr",
"(V?)CVTPD2PS(Y?)rr",
"(V?)CVTSD2SSrr",
- "(V?)CVTSI642SDrr",
- "(V?)CVTSI2SDrr",
- "(V?)CVTTPD2DQ(Y?)rr")>;
+ "(V?)CVTSI(64)?2SDrr",
+ "(V?)CVT(T?)PD2DQ(Y?)rr")>;
def SBWriteResGroup29 : SchedWriteRes<[SBPort1,SBPort015]> {
let Latency = 4;
@@ -761,14 +758,8 @@ def SBWriteResGroup32 : SchedWriteRes<[S
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SBWriteResGroup32], (instregex "(V?)CVTSD2SI64rr",
- "(V?)CVTSD2SIrr",
- "(V?)CVTSS2SI64rr",
- "(V?)CVTSS2SIrr",
- "(V?)CVTTSD2SI64rr",
- "(V?)CVTTSD2SIrr",
- "(V?)CVTTSS2SI64rr",
- "(V?)CVTTSS2SIrr")>;
+def: InstRW<[SBWriteResGroup32], (instregex "(V?)CVT(T?)SD2SI(64)?rr",
+ "(V?)CVT(T?)SS2SI(64)?rr")>;
def SBWriteResGroup33 : SchedWriteRes<[SBPort4,SBPort23]> {
let Latency = 5;
@@ -784,8 +775,7 @@ def SBWriteResGroup35 : SchedWriteRes<[S
let ResourceCycles = [1,2];
}
def: InstRW<[SBWriteResGroup35], (instregex "CLI")>;
-def: InstRW<[SBWriteResGroup35], (instregex "(V?)CVTSI642SSrr",
- "(V?)CVTSI2SSrr")>;
+def: InstRW<[SBWriteResGroup35], (instregex "(V?)CVTSI(64)?2SSrr")>;
def SBWriteResGroup35_2 : SchedWriteRes<[SBPort1,SBPort4,SBPort23]> {
let Latency = 5;
@@ -1068,10 +1058,7 @@ def SBWriteResGroup77 : SchedWriteRes<[S
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SBWriteResGroup77], (instregex "(V?)COMISDrm",
- "(V?)COMISSrm",
- "(V?)UCOMISDrm",
- "(V?)UCOMISSrm")>;
+def: InstRW<[SBWriteResGroup77], (instregex "(V?)(U?)COMI(SD|SS)rm")>;
def SBWriteResGroup80 : SchedWriteRes<[SBPort23,SBPort15]> {
let Latency = 8;
@@ -1159,24 +1146,16 @@ def SBWriteResGroup90 : SchedWriteRes<[S
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SBWriteResGroup90], (instregex "MMX_CVTPS2PIirm",
- "MMX_CVTTPS2PIirm",
- "(V?)CVTPS2DQrm",
- "(V?)CVTTPS2DQrm")>;
+def: InstRW<[SBWriteResGroup90], (instregex "MMX_CVT(T?)PS2PIirm",
+ "(V?)CVT(T?)PS2DQrm")>;
def SBWriteResGroup93 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
let Latency = 9;
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SBWriteResGroup93], (instregex "CVTSD2SI64rm",
- "CVTSD2SIrm",
- "CVTSS2SI64rm",
- "CVTSS2SIrm",
- "CVTTSD2SI64rm",
- "CVTTSD2SIrm",
- "CVTTSS2SI64rm",
- "CVTTSS2SIrm")>;
+def: InstRW<[SBWriteResGroup93], (instregex "CVT(T?)SD2SI(64)?rm",
+ "CVT(T?)SS2SI(64)?rm")>;
def SBWriteResGroup93_1 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
let Latency = 9;
@@ -1266,38 +1245,28 @@ def SBWriteResGroup101 : SchedWriteRes<[
def: InstRW<[SBWriteResGroup101], (instregex "(ADD|SUB|SUBR)_F(32|64)m",
"ILD_F(16|32|64)m",
"VCVTDQ2PSYrm",
- "VCVTPS2DQYrm",
- "VCVTTPS2DQYrm")>;
+ "VCVT(T?)PS2DQYrm")>;
def SBWriteResGroup102 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
let Latency = 10;
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SBWriteResGroup102], (instregex "VCVTSD2SI64rm",
- "VCVTSD2SIrm",
- "VCVTSS2SI64rm",
- "VCVTSS2SIrm",
- "VCVTTSD2SI64rm",
- "VCVTTSD2SIrm",
- "VCVTTSS2SI64rm",
- "VCVTTSS2SIrm")>;
+def: InstRW<[SBWriteResGroup102], (instregex "VCVT(T?)SD2SI(64)?rm",
+ "VCVT(T?)SS2SI(64)?rm")>;
def SBWriteResGroup103 : SchedWriteRes<[SBPort1,SBPort5,SBPort23]> {
let Latency = 10;
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SBWriteResGroup103], (instregex "MMX_CVTPD2PIirm",
- "MMX_CVTPI2PDirm",
- "MMX_CVTTPD2PIirm",
+def: InstRW<[SBWriteResGroup103], (instregex "MMX_CVTPI2PDirm",
+ "MMX_CVT(T?)PD2PIirm",
"(V?)CVTDQ2PD(Y?)rm",
- "(V?)CVTPD2DQrm",
"(V?)CVTPD2PSrm",
"(V?)CVTSD2SSrm",
- "(V?)CVTSI642SSrm",
- "(V?)CVTSI2SSrm",
- "(V?)CVTTPD2DQrm")>;
+ "(V?)CVTSI(64)?2SSrm",
+ "(V?)CVT(T?)PD2DQrm")>;
def SBWriteResGroup103_2 : SchedWriteRes<[SBPort4,SBPort23,SBPort05,SBPort015]> {
let Latency = 10;
@@ -1319,19 +1288,16 @@ def SBWriteResGroup106 : SchedWriteRes<[
let NumMicroOps = 3;
let ResourceCycles = [2,1];
}
-def: InstRW<[SBWriteResGroup106], (instregex "FICOM16m",
- "FICOM32m",
- "FICOMP16m",
- "FICOMP32m")>;
+def: InstRW<[SBWriteResGroup106], (instregex "FICOM(P?)16m",
+ "FICOM(P?)32m")>;
def SBWriteResGroup107 : SchedWriteRes<[SBPort1,SBPort5,SBPort23]> {
let Latency = 11;
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SBWriteResGroup107], (instregex "VCVTPD2DQYrm",
- "VCVTPD2PSYrm",
- "VCVTTPD2DQYrm")>;
+def: InstRW<[SBWriteResGroup107], (instregex "VCVTPD2PSYrm",
+ "VCVT(T?)PD2DQYrm")>;
def SBWriteResGroup111 : SchedWriteRes<[SBPort0,SBPort23]> {
let Latency = 12;
Modified: llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td?rev=331911&r1=331910&r2=331911&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td Wed May 9 12:04:15 2018
@@ -460,26 +460,15 @@ def SKLWriteResGroup1 : SchedWriteRes<[S
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PADDSBirr",
- "MMX_PADDSWirr",
- "MMX_PADDUSBirr",
- "MMX_PADDUSWirr",
- "MMX_PAVGBirr",
- "MMX_PAVGWirr",
- "MMX_PCMPEQBirr",
- "MMX_PCMPEQDirr",
- "MMX_PCMPEQWirr",
- "MMX_PCMPGTBirr",
- "MMX_PCMPGTDirr",
- "MMX_PCMPGTWirr",
- "MMX_PMAXSWirr",
- "MMX_PMAXUBirr",
- "MMX_PMINSWirr",
- "MMX_PMINUBirr",
- "MMX_PSUBSBirr",
- "MMX_PSUBSWirr",
- "MMX_PSUBUSBirr",
- "MMX_PSUBUSWirr")>;
+def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PADDS(B|W)irr",
+ "MMX_PADDUS(B|W)irr",
+ "MMX_PAVG(B|W)irr",
+ "MMX_PCMPEQ(B|D|W)irr",
+ "MMX_PCMPGT(B|D|W)irr",
+ "MMX_P(MAX|MIN)SWirr",
+ "MMX_P(MAX|MIN)UBirr",
+ "MMX_PSUBS(B|W)irr",
+ "MMX_PSUBUS(B|W)irr")>;
def SKLWriteResGroup3 : SchedWriteRes<[SKLPort5]> {
let Latency = 1;
@@ -556,15 +545,9 @@ def SKLWriteResGroup9 : SchedWriteRes<[S
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup9], (instregex "(V?)PADDB(Y?)rr",
- "(V?)PADDD(Y?)rr",
- "(V?)PADDQ(Y?)rr",
- "(V?)PADDW(Y?)rr",
+def: InstRW<[SKLWriteResGroup9], (instregex "(V?)PADD(B|D|Q|W)(Y?)rr",
"VPBLENDD(Y?)rri",
- "(V?)PSUBB(Y?)rr",
- "(V?)PSUBD(Y?)rr",
- "(V?)PSUBQ(Y?)rr",
- "(V?)PSUBW(Y?)rr")>;
+ "(V?)PSUB(B|D|Q|W)(Y?)rr")>;
def SKLWriteResGroup10 : SchedWriteRes<[SKLPort0156]> {
let Latency = 1;
@@ -596,15 +579,11 @@ def: InstRW<[SKLWriteResGroup11], (instr
"MOVNTI_64mr",
"MOVNTImr",
"ST_FP(32|64|80)m",
- "(V?)MOVHPDmr",
- "(V?)MOVHPSmr",
- "(V?)MOVLPDmr",
- "(V?)MOVLPSmr",
+ "(V?)MOV(H|L)(PD|PS)mr",
"(V?)MOVPDI2DImr",
"(V?)MOVPQI2QImr",
"(V?)MOVPQIto64mr",
- "(V?)MOVSDmr",
- "(V?)MOVSSmr",
+ "(V?)MOV(SD|SS)mr",
"VMPTRSTm")>;
def SKLWriteResGroup12 : SchedWriteRes<[SKLPort0]> {
@@ -872,8 +851,7 @@ def SKLWriteResGroup48 : SchedWriteRes<[
let ResourceCycles = [1];
}
def: InstRW<[SKLWriteResGroup48], (instregex "(V?)CVTDQ2PS(Y?)rr",
- "(V?)CVTPS2DQ(Y?)rr",
- "(V?)CVTTPS2DQ(Y?)rr")>;
+ "(V?)CVT(T?)PS2DQ(Y?)rr")>;
def SKLWriteResGroup51 : SchedWriteRes<[SKLPort1,SKLPort5]> {
let Latency = 4;
@@ -950,11 +928,9 @@ def SKLWriteResGroup60 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup60], (instregex "MMX_CVTPD2PIirr",
- "MMX_CVTPS2PIirr",
- "MMX_CVTTPD2PIirr",
- "MMX_CVTTPS2PIirr",
- "(V?)CVTPD2DQrr",
+def: InstRW<[SKLWriteResGroup60], (instregex "MMX_CVT(T?)PD2PIirr",
+ "MMX_CVT(T?)PS2PIirr",
+ "(V?)CVT(T?)PD2DQrr",
"(V?)CVTPD2PSrr",
"VCVTPH2PSrr",
"(V?)CVTPS2PDrr",
@@ -963,8 +939,7 @@ def: InstRW<[SKLWriteResGroup60], (instr
"(V?)CVTSI642SDrr",
"(V?)CVTSI2SDrr",
"(V?)CVTSI2SSrr",
- "(V?)CVTSS2SDrr",
- "(V?)CVTTPD2DQrr")>;
+ "(V?)CVTSS2SDrr")>;
def SKLWriteResGroup61 : SchedWriteRes<[SKLPort1,SKLPort6,SKLPort06]> {
let Latency = 5;
@@ -1051,12 +1026,8 @@ def SKLWriteResGroup70 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup70], (instregex "(V?)CVTSD2SI64rr",
- "(V?)CVTSD2SIrr",
- "(V?)CVTSS2SI64rr",
- "(V?)CVTSS2SIrr",
- "(V?)CVTTSD2SI64rr",
- "(V?)CVTTSD2SIrr")>;
+def: InstRW<[SKLWriteResGroup70], (instregex "(V?)CVTSS2SI(64)?rr",
+ "(V?)CVT(T?)SD2SI(64)?rr")>;
def SKLWriteResGroup72 : SchedWriteRes<[SKLPort6,SKLPort23]> {
let Latency = 6;
@@ -1229,12 +1200,11 @@ def SKLWriteResGroup89 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup89], (instregex "VCVTPD2DQYrr",
- "VCVTPD2PSYrr",
+def: InstRW<[SKLWriteResGroup89], (instregex "VCVTPD2PSYrr",
"VCVTPH2PSYrr",
"VCVTPS2PDYrr",
"VCVTPS2PHYrr",
- "VCVTTPD2DQYrr")>;
+ "VCVT(T?)PD2DQYrr")>;
def SKLWriteResGroup91 : SchedWriteRes<[SKLPort23,SKLPort015]> {
let Latency = 7;
@@ -1243,15 +1213,9 @@ def SKLWriteResGroup91 : SchedWriteRes<[
}
def: InstRW<[SKLWriteResGroup91], (instregex "(V?)INSERTF128rm",
"(V?)INSERTI128rm",
- "(V?)PADDBrm",
- "(V?)PADDDrm",
- "(V?)PADDQrm",
- "(V?)PADDWrm",
+ "(V?)PADD(B|D|Q|W)rm",
"(V?)PBLENDDrmi",
- "(V?)PSUBBrm",
- "(V?)PSUBDrm",
- "(V?)PSUBQrm",
- "(V?)PSUBWrm")>;
+ "(V?)PSUB(B|D|Q|W)rm")>;
def SKLWriteResGroup92 : SchedWriteRes<[SKLPort5,SKLPort23]> {
let Latency = 7;
@@ -1282,8 +1246,7 @@ def SKLWriteResGroup95 : SchedWriteRes<[
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SKLWriteResGroup95], (instregex "(V?)CVTTSS2SI64rr",
- "(V?)CVTTSS2SIrr")>;
+def: InstRW<[SKLWriteResGroup95], (instregex "(V?)CVTTSS2SI(64)?rr")>;
def SKLWriteResGroup96 : SchedWriteRes<[SKLPort0,SKLPort23,SKLPort05]> {
let Latency = 7;
@@ -1375,15 +1338,9 @@ def SKLWriteResGroup110 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup110], (instregex "VPADDBYrm",
- "VPADDDYrm",
- "VPADDQYrm",
- "VPADDWYrm",
+def: InstRW<[SKLWriteResGroup110], (instregex "VPADD(B|D|Q|W)Yrm",
"VPBLENDDYrmi",
- "VPSUBBYrm",
- "VPSUBDYrm",
- "VPSUBQYrm",
- "VPSUBWYrm")>;
+ "VPSUB(B|D|Q|W)Yrm")>;
def SKLWriteResGroup112 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
let Latency = 8;
@@ -1467,8 +1424,7 @@ def SKLWriteResGroup123 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup123], (instregex "MMX_CVTPS2PIirm",
- "MMX_CVTTPS2PIirm",
+def: InstRW<[SKLWriteResGroup123], (instregex "MMX_CVT(T?)PS2PIirm",
"VCVTPH2PSrm",
"(V?)CVTPS2PDrm")>;
@@ -1579,19 +1535,16 @@ def SKLWriteResGroup147 : SchedWriteRes<
let ResourceCycles = [1,1];
}
def: InstRW<[SKLWriteResGroup147], (instregex "VCVTDQ2PSYrm",
- "VCVTPS2DQYrm",
"VCVTPS2PDYrm",
- "VCVTTPS2DQYrm")>;
+ "VCVT(T?)PS2DQYrm")>;
def SKLWriteResGroup149 : SchedWriteRes<[SKLPort5,SKLPort23]> {
let Latency = 11;
let NumMicroOps = 3;
let ResourceCycles = [2,1];
}
-def: InstRW<[SKLWriteResGroup149], (instregex "FICOM16m",
- "FICOM32m",
- "FICOMP16m",
- "FICOMP32m")>;
+def: InstRW<[SKLWriteResGroup149], (instregex "FICOM(P?)16m",
+ "FICOM(P?)32m")>;
def SKLWriteResGroup150 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
let Latency = 11;
@@ -1605,25 +1558,19 @@ def SKLWriteResGroup151 : SchedWriteRes<
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SKLWriteResGroup151], (instregex "(V?)CVTSD2SI64rm",
- "(V?)CVTSD2SIrm",
- "(V?)CVTSS2SI64rm",
- "(V?)CVTSS2SIrm",
- "(V?)CVTTSD2SI64rm",
- "(V?)CVTTSD2SIrm",
+def: InstRW<[SKLWriteResGroup151], (instregex "(V?)CVTSS2SI64rm",
+ "(V?)CVT(T?)SD2SI(64)?rm",
"VCVTTSS2SI64rm",
- "(V?)CVTTSS2SIrm")>;
+ "(V?)CVT(T?)SS2SIrm")>;
def SKLWriteResGroup152 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort01]> {
let Latency = 11;
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SKLWriteResGroup152], (instregex "CVTPD2DQrm",
- "CVTPD2PSrm",
- "CVTTPD2DQrm",
- "MMX_CVTPD2PIirm",
- "MMX_CVTTPD2PIirm")>;
+def: InstRW<[SKLWriteResGroup152], (instregex "CVTPD2PSrm",
+ "CVT(T?)PD2DQrm",
+ "MMX_CVT(T?)PD2PIirm")>;
def SKLWriteResGroup153 : SchedWriteRes<[SKLPort1,SKLPort23,SKLPort237,SKLPort06,SKLPort0156]> {
let Latency = 11;
Modified: llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td?rev=331911&r1=331910&r2=331911&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td Wed May 9 12:04:15 2018
@@ -460,66 +460,26 @@ def SKXWriteResGroup1 : SchedWriteRes<[S
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKXWriteResGroup1], (instregex "KANDBrr",
- "KANDDrr",
- "KANDNBrr",
- "KANDNDrr",
- "KANDNQrr",
- "KANDNWrr",
- "KANDQrr",
- "KANDWrr",
- "KMOVBkk",
- "KMOVDkk",
- "KMOVQkk",
- "KMOVWkk",
- "KNOTBrr",
- "KNOTDrr",
- "KNOTQrr",
- "KNOTWrr",
- "KORBrr",
- "KORDrr",
- "KORQrr",
- "KORWrr",
- "KXNORBrr",
- "KXNORDrr",
- "KXNORQrr",
- "KXNORWrr",
- "KXORBrr",
- "KXORDrr",
- "KXORQrr",
- "KXORWrr",
- "MMX_PADDSBirr",
- "MMX_PADDSWirr",
- "MMX_PADDUSBirr",
- "MMX_PADDUSWirr",
- "MMX_PAVGBirr",
- "MMX_PAVGWirr",
- "MMX_PCMPEQBirr",
- "MMX_PCMPEQDirr",
- "MMX_PCMPEQWirr",
- "MMX_PCMPGTBirr",
- "MMX_PCMPGTDirr",
- "MMX_PCMPGTWirr",
- "MMX_PMAXSWirr",
- "MMX_PMAXUBirr",
- "MMX_PMINSWirr",
- "MMX_PMINUBirr",
- "MMX_PSUBSBirr",
- "MMX_PSUBSWirr",
- "MMX_PSUBUSBirr",
- "MMX_PSUBUSWirr",
- "VPMOVB2MZ128rr",
- "VPMOVB2MZ256rr",
- "VPMOVB2MZrr",
- "VPMOVD2MZ128rr",
- "VPMOVD2MZ256rr",
- "VPMOVD2MZrr",
- "VPMOVQ2MZ128rr",
- "VPMOVQ2MZ256rr",
- "VPMOVQ2MZrr",
- "VPMOVW2MZ128rr",
- "VPMOVW2MZ256rr",
- "VPMOVW2MZrr")>;
+def: InstRW<[SKXWriteResGroup1], (instregex "KAND(B|D|Q|W)rr",
+ "KANDN(B|D|Q|W)rr",
+ "KMOV(B|D|Q|W)kk",
+ "KNOT(B|D|Q|W)rr",
+ "KOR(B|D|Q|W)rr",
+ "KXNOR(B|D|Q|W)rr",
+ "KXOR(B|D|Q|W)rr",
+ "MMX_PADDS(B|W)irr",
+ "MMX_PADDUS(B|W)irr",
+ "MMX_PAVG(B|W)irr",
+ "MMX_PCMPEQ(B|D|W)irr",
+ "MMX_PCMPGT(B|D|W)irr",
+ "MMX_P(MAX|MIN)SWirr",
+ "MMX_P(MAX|MIN)UBirr",
+ "MMX_PSUBS(B|W)irr",
+ "MMX_PSUBUS(B|W)irr",
+ "VPMOVB2M(Z|Z128|Z256)rr",
+ "VPMOVD2M(Z|Z128|Z256)rr",
+ "VPMOVQ2M(Z|Z128|Z256)rr",
+ "VPMOVW2M(Z|Z128|Z256)rr")>;
def SKXWriteResGroup3 : SchedWriteRes<[SKXPort5]> {
let Latency = 1;
@@ -528,20 +488,15 @@ def SKXWriteResGroup3 : SchedWriteRes<[S
}
def: InstRW<[SKXWriteResGroup3], (instregex "COMP_FST0r",
"COM_FST0r",
- "KMOVBkr",
- "KMOVDkr",
- "KMOVQkr",
- "KMOVWkr",
+ "KMOV(B|D|Q|W)kr",
"MMX_MOVD64rr",
"MMX_MOVD64to64rr",
"MOV64toPQIrr",
"MOVDI2PDIrr",
"UCOM_FPr",
"UCOM_Fr",
- "VMOV64toPQIZrr",
- "VMOV64toPQIrr",
- "VMOVDI2PDIZrr",
- "VMOVDI2PDIrr")>;
+ "VMOV64toPQI(Z?)rr",
+ "VMOVDI2PDI(Z?)rr")>;
def SKXWriteResGroup4 : SchedWriteRes<[SKXPort6]> {
let Latency = 1;
@@ -604,71 +559,19 @@ def SKXWriteResGroup9 : SchedWriteRes<[S
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKXWriteResGroup9], (instregex "VBLENDMPDZ128rr",
- "VBLENDMPDZ256rr",
- "VBLENDMPDZrr",
- "VBLENDMPSZ128rr",
- "VBLENDMPSZ256rr",
- "VBLENDMPSZrr",
- "VPADDBYrr",
- "VPADDBZ128rr",
- "VPADDBZ256rr",
- "VPADDBZrr",
- "(V?)PADDBrr",
- "VPADDDYrr",
- "VPADDDZ128rr",
- "VPADDDZ256rr",
- "VPADDDZrr",
- "(V?)PADDDrr",
- "VPADDQYrr",
- "VPADDQZ128rr",
- "VPADDQZ256rr",
- "VPADDQZrr",
- "(V?)PADDQrr",
- "VPADDWYrr",
- "VPADDWZ128rr",
- "VPADDWZ256rr",
- "VPADDWZrr",
- "(V?)PADDWrr",
- "VPBLENDDYrri",
- "VPBLENDDrri",
- "VPBLENDMBZ128rr",
- "VPBLENDMBZ256rr",
- "VPBLENDMBZrr",
- "VPBLENDMDZ128rr",
- "VPBLENDMDZ256rr",
- "VPBLENDMDZrr",
- "VPBLENDMQZ128rr",
- "VPBLENDMQZ256rr",
- "VPBLENDMQZrr",
- "VPBLENDMWZ128rr",
- "VPBLENDMWZ256rr",
- "VPBLENDMWZrr",
- "VPSUBBYrr",
- "VPSUBBZ128rr",
- "VPSUBBZ256rr",
- "VPSUBBZrr",
- "(V?)PSUBBrr",
- "VPSUBDYrr",
- "VPSUBDZ128rr",
- "VPSUBDZ256rr",
- "VPSUBDZrr",
- "(V?)PSUBDrr",
- "VPSUBQYrr",
- "VPSUBQZ128rr",
- "VPSUBQZ256rr",
- "VPSUBQZrr",
- "(V?)PSUBQrr",
- "VPSUBWYrr",
- "VPSUBWZ128rr",
- "VPSUBWZrr",
- "(V?)PSUBWrr",
- "VPTERNLOGDZ128rri",
- "VPTERNLOGDZ256rri",
- "VPTERNLOGDZrri",
- "VPTERNLOGQZ128rri",
- "VPTERNLOGQZ256rri",
- "VPTERNLOGQZrri")>;
+def: InstRW<[SKXWriteResGroup9], (instregex "VBLENDMPD(Z|Z128|Z256)rr",
+ "VBLENDMPS(Z|Z128|Z256)rr",
+ "VPADD(B|D|Q|W)(Y|Z|Z128|Z256)rr",
+ "(V?)PADD(B|D|Q|W)rr",
+ "VPBLENDD(Y?)rri",
+ "VPBLENDMB(Z|Z128|Z256)rr",
+ "VPBLENDMD(Z|Z128|Z256)rr",
+ "VPBLENDMQ(Z|Z128|Z256)rr",
+ "VPBLENDMW(Z|Z128|Z256)rr",
+ "VPSUB(B|D|Q|W)(Y|Z|Z128|Z256)rr",
+ "(V?)PSUB(B|D|Q|W)rr",
+ "VPTERNLOGD(Z|Z128|Z256)rri",
+ "VPTERNLOGQ(Z|Z128|Z256)rri")>;
def SKXWriteResGroup10 : SchedWriteRes<[SKXPort0156]> {
let Latency = 1;
@@ -693,46 +596,26 @@ def SKXWriteResGroup11 : SchedWriteRes<[
let ResourceCycles = [1,1];
}
def: InstRW<[SKXWriteResGroup11], (instregex "FBSTPm",
- "KMOVBmk",
- "KMOVDmk",
- "KMOVQmk",
- "KMOVWmk",
+ "KMOV(B|D|Q|W)mk",
"MMX_MOVD64from64rm",
"MMX_MOVD64mr",
"MMX_MOVNTQmr",
"MMX_MOVQ64mr",
- "MOVHPDmr",
- "MOVHPSmr",
- "MOVLPDmr",
- "MOVLPSmr",
"MOVNTDQmr",
"MOVNTI_64mr",
"MOVNTImr",
- "MOVPDI2DImr",
- "MOVPQI2QImr",
- "MOVPQIto64mr",
- "MOVSDmr",
- "MOVSSmr",
"ST_FP32m",
"ST_FP64m",
"ST_FP80m",
- "VMOVHPDZ128mr(b?)",
- "VMOVHPDmr",
- "VMOVHPSZ128mr(b?)",
- "VMOVHPSmr",
- "VMOVLPDZ128mr(b?)",
- "VMOVLPDmr",
- "VMOVLPSZ128mr(b?)",
- "VMOVLPSmr",
+ "VMOV(H|L)(PD|PS)Z128mr(b?)",
+ "(V?)MOV(H|L)(PD|PS)mr",
"VMOVPDI2DIZmr(b?)",
- "VMOVPDI2DImr",
+ "(V?)MOVPDI2DImr",
"VMOVPQI(2QI|to64)Zmr(b?)",
- "VMOVPQI2QImr",
- "VMOVPQIto64mr",
- "VMOVSDZmr(b?)",
- "VMOVSDmr",
- "VMOVSSZmr(b?)",
- "VMOVSSmr",
+ "(V?)MOVPQI2QImr",
+ "(V?)MOVPQIto64mr",
+ "VMOV(SD|SS)Zmr(b?)",
+ "(V?)MOV(SD|SS)mr",
"VMPTRSTm")>;
def SKXWriteResGroup12 : SchedWriteRes<[SKXPort0]> {
@@ -861,22 +744,10 @@ def SKXWriteResGroup30 : SchedWriteRes<[
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKXWriteResGroup30], (instregex "KADDBrr",
- "KADDDrr",
- "KADDQrr",
- "KADDWrr",
- "KMOVBrk",
- "KMOVDrk",
- "KMOVQrk",
- "KMOVWrk",
- "KORTESTBrr",
- "KORTESTDrr",
- "KORTESTQrr",
- "KORTESTWrr",
- "KTESTBrr",
- "KTESTDrr",
- "KTESTQrr",
- "KTESTWrr")>;
+def: InstRW<[SKXWriteResGroup30], (instregex "KADD(B|D|Q|W)rr",
+ "KMOV(B|D|Q|W)rk",
+ "KORTEST(B|D|Q|W)rr",
+ "KTEST(B|D|Q|W)rr")>;
def SKXWriteResGroup31 : SchedWriteRes<[SKXPort1]> {
let Latency = 3;
@@ -905,129 +776,35 @@ def SKXWriteResGroup32 : SchedWriteRes<[
def: InstRW<[SKXWriteResGroup32], (instregex "(ADD|SUB|SUBR)_FPrST0",
"(ADD|SUB|SUBR)_FST0r",
"(ADD|SUB|SUBR)_FrST0",
- "KSHIFTLBri",
- "KSHIFTLDri",
- "KSHIFTLQri",
- "KSHIFTLWri",
- "KSHIFTRBri",
- "KSHIFTRDri",
- "KSHIFTRQri",
- "KSHIFTRWri",
+ "KSHIFTL(B|D|Q|W)ri",
+ "KSHIFTR(B|D|Q|W)ri",
"KUNPCKBWrr",
"KUNPCKDQrr",
"KUNPCKWDrr",
- "VALIGNDZ128rri",
- "VALIGNDZ256rri",
- "VALIGNDZrri",
- "VALIGNQZ128rri",
- "VALIGNQZ256rri",
- "VALIGNQZrri",
- "VCMPPDZ128rri",
- "VCMPPDZ256rri",
- "VCMPPDZrri",
- "VCMPPSZ128rri",
- "VCMPPSZ256rri",
- "VCMPPSZrri",
+ "VALIGND(Z|Z128|Z256)rri",
+ "VALIGNQ(Z|Z128|Z256)rri",
+ "VCMPPD(Z|Z128|Z256)rri",
+ "VCMPPS(Z|Z128|Z256)rri",
"VCMPSDZrr",
"VCMPSSZrr",
"VDBPSADBWZrri", // TODO: 512-bit ops require ports 0/1 to be joined.
- "VFPCLASSPDZ128rr",
- "VFPCLASSPDZ256rr",
- "VFPCLASSPDZrr",
- "VFPCLASSPSZ128rr",
- "VFPCLASSPSZ256rr",
- "VFPCLASSPSZrr",
+ "VFPCLASSPD(Z|Z128|Z256)rr",
+ "VFPCLASSPS(Z|Z128|Z256)rr",
"VFPCLASSSDrr",
"VFPCLASSSSrr",
"VPBROADCASTBrr",
"VPBROADCASTWrr",
- "VPCMPBZ128rri",
- "VPCMPBZ256rri",
- "VPCMPBZrri",
- "VPCMPDZ128rri",
- "VPCMPDZ256rri",
- "VPCMPDZrri",
- "VPCMPEQBZ128rr",
- "VPCMPEQBZ256rr",
- "VPCMPEQBZrr",
- "VPCMPEQDZ128rr",
- "VPCMPEQDZ256rr",
- "VPCMPEQDZrr",
- "VPCMPEQQZ128rr",
- "VPCMPEQQZ256rr",
- "VPCMPEQQZrr",
- "VPCMPEQWZ128rr",
- "VPCMPEQWZ256rr",
- "VPCMPEQWZrr",
- "VPCMPGTBZ128rr",
- "VPCMPGTBZ256rr",
- "VPCMPGTBZrr",
- "VPCMPGTDZ128rr",
- "VPCMPGTDZ256rr",
- "VPCMPGTDZrr",
- "VPCMPGTQYrr",
- "VPCMPGTQZ128rr",
- "VPCMPGTQZ256rr",
- "VPCMPGTQZrr",
- "(V?)PCMPGTQrr",
- "VPCMPGTWZ128rr",
- "VPCMPGTWZ256rr",
- "VPCMPGTWZrr",
- "VPCMPQZ128rri",
- "VPCMPQZ256rri",
- "VPCMPQZrri",
- "VPCMPUBZ128rri",
- "VPCMPUBZ256rri",
- "VPCMPUBZrri",
- "VPCMPUDZ128rri",
- "VPCMPUDZ256rri",
- "VPCMPUDZrri",
- "VPCMPUQZ128rri",
- "VPCMPUQZ256rri",
- "VPCMPUQZrri",
- "VPCMPUWZ128rri",
- "VPCMPUWZ256rri",
- "VPCMPUWZrri",
- "VPCMPWZ128rri",
- "VPCMPWZ256rri",
- "VPCMPWZrri",
- "VPMAXSQZ128rr",
- "VPMAXSQZ256rr",
- "VPMAXSQZrr",
- "VPMAXUQZ128rr",
- "VPMAXUQZ256rr",
- "VPMAXUQZrr",
- "VPMINSQZ128rr",
- "VPMINSQZ256rr",
- "VPMINSQZrr",
- "VPMINUQZ128rr",
- "VPMINUQZ256rr",
- "VPMINUQZrr",
+ "VPCMPB(Z|Z128|Z256)rri",
+ "VPCMPD(Z|Z128|Z256)rri",
+ "VPCMPEQ(B|D|Q|W)(Z|Z128|Z256)rr",
+ "VPCMPGT(B|D|Q|W)(Z|Z128|Z256)rr",
+ "(V?)PCMPGTQ(Y?)rr",
+ "VPCMPQ(Z|Z128|Z256)rri",
+ "VPCMPU(B|D|Q|W)(Z|Z128|Z256)rri",
+ "VPCMPW(Z|Z128|Z256)rri",
+ "VP(MAX|MIN)(S|U)Q(Z|Z128|Z256)rr",
"VPSADBWZrr", // TODO: 512-bit ops require ports 0/1 to be joined.
- "VPTESTMBZ128rr",
- "VPTESTMBZ256rr",
- "VPTESTMBZrr",
- "VPTESTMDZ128rr",
- "VPTESTMDZ256rr",
- "VPTESTMDZrr",
- "VPTESTMQZ128rr",
- "VPTESTMQZ256rr",
- "VPTESTMQZrr",
- "VPTESTMWZ128rr",
- "VPTESTMWZ256rr",
- "VPTESTMWZrr",
- "VPTESTNMBZ128rr",
- "VPTESTNMBZ256rr",
- "VPTESTNMBZrr",
- "VPTESTNMDZ128rr",
- "VPTESTNMDZ256rr",
- "VPTESTNMDZrr",
- "VPTESTNMQZ128rr",
- "VPTESTNMQZ256rr",
- "VPTESTNMQZrr",
- "VPTESTNMWZ128rr",
- "VPTESTNMWZ256rr",
- "VPTESTNMWZrr")>;
+ "VPTEST(N?)M(B|D|Q|W)(Z|Z128|Z256)rr")>;
def SKXWriteResGroup34 : SchedWriteRes<[SKXPort0,SKXPort0156]> {
let Latency = 3;
@@ -1152,117 +929,47 @@ def SKXWriteResGroup50 : SchedWriteRes<[
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKXWriteResGroup50], (instregex "VCVTDQ2PSYrr",
- "VCVTDQ2PSZ128rr",
- "VCVTDQ2PSZ256rr",
- "VCVTDQ2PSZrr",
+def: InstRW<[SKXWriteResGroup50], (instregex "VCVTDQ2PS(Y|Z|Z128|Z256)rr",
"(V?)CVTDQ2PSrr",
- "VCVTPD2QQZ128rr",
- "VCVTPD2QQZ256rr",
- "VCVTPD2QQZrr",
- "VCVTPD2UQQZ128rr",
- "VCVTPD2UQQZ256rr",
- "VCVTPD2UQQZrr",
- "VCVTPS2DQYrr",
- "VCVTPS2DQZ128rr",
- "VCVTPS2DQZ256rr",
- "VCVTPS2DQZrr",
+ "VCVTPD2QQ(Z|Z128|Z256)rr",
+ "VCVTPD2UQQ(Z|Z128|Z256)rr",
+ "VCVTPS2DQ(Y|Z|Z128|Z256)rr",
"(V?)CVTPS2DQrr",
- "VCVTPS2UDQZ128rr",
- "VCVTPS2UDQZ256rr",
- "VCVTPS2UDQZrr",
- "VCVTQQ2PDZ128rr",
- "VCVTQQ2PDZ256rr",
- "VCVTQQ2PDZrr",
- "VCVTTPD2QQZ128rr",
- "VCVTTPD2QQZ256rr",
- "VCVTTPD2QQZrr",
- "VCVTTPD2UQQZ128rr",
- "VCVTTPD2UQQZ256rr",
- "VCVTTPD2UQQZrr",
- "VCVTTPS2DQYrr",
- "VCVTTPS2DQZ128rr",
- "VCVTTPS2DQZ256rr",
- "VCVTTPS2DQZrr",
+ "VCVTPS2UDQ(Z|Z128|Z256)rr",
+ "VCVTQQ2PD(Z|Z128|Z256)rr",
+ "VCVTTPD2QQ(Z|Z128|Z256)rr",
+ "VCVTTPD2UQQ(Z|Z128|Z256)rr",
+ "VCVTTPS2DQ(Y|Z|Z128|Z256)rr",
"(V?)CVTTPS2DQrr",
- "VCVTTPS2UDQZ128rr",
- "VCVTTPS2UDQZ256rr",
- "VCVTTPS2UDQZrr",
- "VCVTUDQ2PSZ128rr",
- "VCVTUDQ2PSZ256rr",
- "VCVTUDQ2PSZrr",
- "VCVTUQQ2PDZ128rr",
- "VCVTUQQ2PDZ256rr",
- "VCVTUQQ2PDZrr")>;
+ "VCVTTPS2UDQ(Z|Z128|Z256)rr",
+ "VCVTUDQ2PS(Z|Z128|Z256)rr",
+ "VCVTUQQ2PD(Z|Z128|Z256)rr")>;
def SKXWriteResGroup51 : SchedWriteRes<[SKXPort5]> {
let Latency = 4;
let NumMicroOps = 2;
let ResourceCycles = [2];
}
-def: InstRW<[SKXWriteResGroup51], (instregex "VEXPANDPDZ128rr",
- "VEXPANDPDZ256rr",
- "VEXPANDPDZrr",
- "VEXPANDPSZ128rr",
- "VEXPANDPSZ256rr",
- "VEXPANDPSZrr",
- "VPEXPANDDZ128rr",
- "VPEXPANDDZ256rr",
- "VPEXPANDDZrr",
- "VPEXPANDQZ128rr",
- "VPEXPANDQZ256rr",
- "VPEXPANDQZrr",
- "VPMOVDBZ128rr",
- "VPMOVDBZ256rr",
- "VPMOVDBZrr",
- "VPMOVDWZ128rr",
- "VPMOVDWZ256rr",
- "VPMOVDWZrr",
- "VPMOVQBZ128rr",
- "VPMOVQBZ256rr",
- "VPMOVQBZrr",
- "VPMOVQWZ128rr",
- "VPMOVQWZ256rr",
- "VPMOVQWZrr",
- "VPMOVSDBZ128rr",
- "VPMOVSDBZ256rr",
- "VPMOVSDBZrr",
- "VPMOVSDWZ128rr",
- "VPMOVSDWZ256rr",
- "VPMOVSDWZrr",
- "VPMOVSQBZ128rr",
- "VPMOVSQBZ256rr",
- "VPMOVSQBZrr",
- "VPMOVSQDZ128rr",
- "VPMOVSQDZ256rr",
- "VPMOVSQDZrr",
- "VPMOVSQWZ128rr",
- "VPMOVSQWZ256rr",
- "VPMOVSQWZrr",
- "VPMOVSWBZ128rr",
- "VPMOVSWBZ256rr",
- "VPMOVSWBZrr",
- "VPMOVUSDBZ128rr",
- "VPMOVUSDBZ256rr",
- "VPMOVUSDBZrr",
- "VPMOVUSDWZ128rr",
- "VPMOVUSDWZ256rr",
- "VPMOVUSDWZrr",
- "VPMOVUSQBZ128rr",
- "VPMOVUSQBZ256rr",
- "VPMOVUSQBZrr",
- "VPMOVUSQDZ128rr",
- "VPMOVUSQDZ256rr",
- "VPMOVUSQDZrr",
- "VPMOVUSQWZ128rr",
- "VPMOVUSQWZ256rr",
- "VPMOVUSQWZrr",
- "VPMOVUSWBZ128rr",
- "VPMOVUSWBZ256rr",
- "VPMOVUSWBZrr",
- "VPMOVWBZ128rr",
- "VPMOVWBZ256rr",
- "VPMOVWBZrr")>;
+def: InstRW<[SKXWriteResGroup51], (instregex "VEXPANDPD(Z|Z128|Z256)rr",
+ "VEXPANDPS(Z|Z128|Z256)rr",
+ "VPEXPANDD(Z|Z128|Z256)rr",
+ "VPEXPANDQ(Z|Z128|Z256)rr",
+ "VPMOVDB(Z|Z128|Z256)rr",
+ "VPMOVDW(Z|Z128|Z256)rr",
+ "VPMOVQB(Z|Z128|Z256)rr",
+ "VPMOVQW(Z|Z128|Z256)rr",
+ "VPMOVSDB(Z|Z128|Z256)rr",
+ "VPMOVSDW(Z|Z128|Z256)rr",
+ "VPMOVSQB(Z|Z128|Z256)rr",
+ "VPMOVSQD(Z|Z128|Z256)rr",
+ "VPMOVSQW(Z|Z128|Z256)rr",
+ "VPMOVSWB(Z|Z128|Z256)rr",
+ "VPMOVUSDB(Z|Z128|Z256)rr",
+ "VPMOVUSDW(Z|Z128|Z256)rr",
+ "VPMOVUSQB(Z|Z128|Z256)rr",
+ "VPMOVUSQD(Z|Z128|Z256)rr",
+ "VPMOVUSWB(Z|Z128|Z256)rr",
+ "VPMOVWB(Z|Z128|Z256)rr")>;
def SKXWriteResGroup52 : SchedWriteRes<[SKXPort1,SKXPort5]> {
let Latency = 4;
@@ -1285,9 +992,7 @@ def SKXWriteResGroup54 : SchedWriteRes<[
}
def: InstRW<[SKXWriteResGroup54], (instregex "IST(T?)_FP(16|32|64)m",
"IST_F(16|32)m",
- "VPMOVQDZ128mr(b?)",
- "VPMOVQDZ256mr(b?)",
- "VPMOVQDZmr(b?)")>;
+ "VPMOVQD(Z|Z128|Z256)mr(b?)")>;
def SKXWriteResGroup55 : SchedWriteRes<[SKXPort0156]> {
let Latency = 4;
@@ -1342,53 +1047,38 @@ def SKXWriteResGroup61 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKXWriteResGroup61], (instregex "CVTPD2DQrr",
- "CVTPD2PSrr",
- "CVTPS2PDrr",
- "CVTSD2SSrr",
- "CVTSI642SDrr",
- "CVTSI2SDrr",
- "CVTSI2SSrr",
- "CVTSS2SDrr",
- "CVTTPD2DQrr",
- "MMX_CVTPD2PIirr",
- "MMX_CVTPS2PIirr",
- "MMX_CVTTPD2PIirr",
- "MMX_CVTTPS2PIirr",
+def: InstRW<[SKXWriteResGroup61], (instregex "MMX_CVT(T?)PD2PIirr",
+ "MMX_CVT(T?)PS2PIirr",
"VCVTDQ2PDZ128rr",
"VCVTPD2DQZ128rr",
- "VCVTPD2DQrr",
+ "(V?)CVT(T?)PD2DQrr",
"VCVTPD2PSZ128rr",
- "VCVTPD2PSrr",
+ "(V?)CVTPD2PSrr",
"VCVTPD2UDQZ128rr",
"VCVTPH2PSZ128rr",
"VCVTPH2PSrr",
"VCVTPS2PDZ128rr",
- "VCVTPS2PDrr",
+ "(V?)CVTPS2PDrr",
"VCVTPS2PHZ128rr",
"VCVTPS2PHrr",
"VCVTPS2QQZ128rr",
"VCVTPS2UQQZ128rr",
"VCVTQQ2PSZ128rr",
- "VCVTSD2SSrr",
- "VCVTSI642SDrr",
- "VCVTSI2SDZrr",
- "VCVTSI2SDrr",
+ "(V?)CVTSD2SSrr",
+ "(V?)CVTSI(64)?2SDrr",
"VCVTSI2SSZrr",
- "VCVTSI2SSrr",
- "VCVTSI642SDZrr",
+ "(V?)CVTSI2SSrr",
+ "VCVTSI(64)?2SDZrr",
"VCVTSS2SDZrr",
- "VCVTSS2SDrr",
+ "(V?)CVTSS2SDrr",
"VCVTTPD2DQZ128rr",
- "VCVTTPD2DQrr",
"VCVTTPD2UDQZ128rr",
"VCVTTPS2QQZ128rr",
"VCVTTPS2UQQZ128rr",
"VCVTUDQ2PDZ128rr",
"VCVTUQQ2PSZ128rr",
- "VCVTUSI2SDZrr",
"VCVTUSI2SSZrr",
- "VCVTUSI642SDZrr")>;
+ "VCVTUSI(64)?2SDZrr")>;
def SKXWriteResGroup62 : SchedWriteRes<[SKXPort5,SKXPort015]> {
let Latency = 5;
@@ -1425,57 +1115,23 @@ def SKXWriteResGroup66 : SchedWriteRes<[
let NumMicroOps = 4;
let ResourceCycles = [1,2,1];
}
-def: InstRW<[SKXWriteResGroup66], (instregex "VPMOVDBZ128mr(b?)",
- "VPMOVDBZ256mr(b?)",
- "VPMOVDBZmr(b?)",
- "VPMOVDWZ128mr(b?)",
- "VPMOVDWZ256mr(b?)",
- "VPMOVDWZmr(b?)",
- "VPMOVQBZ128mr(b?)",
- "VPMOVQBZ256mr(b?)",
- "VPMOVQBZmr(b?)",
- "VPMOVQWZ128mr(b?)",
- "VPMOVQWZ256mr(b?)",
- "VPMOVQWZmr(b?)",
- "VPMOVSDBZ128mr(b?)",
- "VPMOVSDBZ256mr(b?)",
- "VPMOVSDBZmr(b?)",
- "VPMOVSDWZ128mr(b?)",
- "VPMOVSDWZ256mr(b?)",
- "VPMOVSDWZmr(b?)",
- "VPMOVSQBZ128mr(b?)",
- "VPMOVSQBZ256mr(b?)",
- "VPMOVSQBZmr(b?)",
- "VPMOVSQDZ128mr(b?)",
- "VPMOVSQDZ256mr(b?)",
- "VPMOVSQDZmr(b?)",
- "VPMOVSQWZ128mr(b?)",
- "VPMOVSQWZ256mr(b?)",
- "VPMOVSQWZmr(b?)",
- "VPMOVSWBZ128mr(b?)",
- "VPMOVSWBZ256mr(b?)",
- "VPMOVSWBZmr(b?)",
- "VPMOVUSDBZ128mr(b?)",
- "VPMOVUSDBZ256mr(b?)",
- "VPMOVUSDBZmr(b?)",
- "VPMOVUSDWZ128mr(b?)",
- "VPMOVUSDWZ256mr(b?)",
- "VPMOVUSDWZmr(b?)",
- "VPMOVUSQBZ128mr(b?)",
- "VPMOVUSQBZ256mr(b?)",
- "VPMOVUSQBZmr(b?)",
- "VPMOVUSQDZ128mr(b?)",
- "VPMOVUSQDZ256mr(b?)",
- "VPMOVUSQDZmr(b?)",
- "VPMOVUSQWZ128mr(b?)",
- "VPMOVUSQWZ256mr(b?)",
- "VPMOVUSQWZmr(b?)",
- "VPMOVUSWBZ128mr(b?)",
- "VPMOVUSWBZ256mr(b?)",
- "VPMOVUSWBZmr(b?)",
- "VPMOVWBZ128mr(b?)",
- "VPMOVWBZ256mr(b?)",
- "VPMOVWBZmr(b?)")>;
+def: InstRW<[SKXWriteResGroup66], (instregex "VPMOVDB(Z|Z128|Z256)mr(b?)",
+ "VPMOVDW(Z|Z128|Z256)mr(b?)",
+ "VPMOVQB(Z|Z128|Z256)mr(b?)",
+ "VPMOVQW(Z|Z128|Z256)mr(b?)",
+ "VPMOVSDB(Z|Z128|Z256)mr(b?)",
+ "VPMOVSDW(Z|Z128|Z256)mr(b?)",
+ "VPMOVSQB(Z|Z128|Z256)mr(b?)",
+ "VPMOVSQD(Z|Z128|Z256)mr(b?)",
+ "VPMOVSQW(Z|Z128|Z256)mr(b?)",
+ "VPMOVSWB(Z|Z128|Z256)mr(b?)",
+ "VPMOVUSDB(Z|Z128|Z256)mr(b?)",
+ "VPMOVUSDW(Z|Z128|Z256)mr(b?)",
+ "VPMOVUSQB(Z|Z128|Z256)mr(b?)",
+ "VPMOVUSQD(Z|Z128|Z256)mr(b?)",
+ "VPMOVUSQW(Z|Z128|Z256)mr(b?)",
+ "VPMOVUSWB(Z|Z128|Z256)mr(b?)",
+ "VPMOVWB(Z|Z128|Z256)mr(b?)")>;
def SKXWriteResGroup67 : SchedWriteRes<[SKXPort06,SKXPort0156]> {
let Latency = 5;
@@ -1534,21 +1190,11 @@ def SKXWriteResGroup72 : SchedWriteRes<[
let ResourceCycles = [2];
}
def: InstRW<[SKXWriteResGroup72], (instregex "MMX_CVTPI2PSirr",
- "VCOMPRESSPDZ128rr",
- "VCOMPRESSPDZ256rr",
- "VCOMPRESSPDZrr",
- "VCOMPRESSPSZ128rr",
- "VCOMPRESSPSZ256rr",
- "VCOMPRESSPSZrr",
- "VPCOMPRESSDZ128rr",
- "VPCOMPRESSDZ256rr",
- "VPCOMPRESSDZrr",
- "VPCOMPRESSQZ128rr",
- "VPCOMPRESSQZ256rr",
- "VPCOMPRESSQZrr",
- "VPERMWZ128rr",
- "VPERMWZ256rr",
- "VPERMWZrr")>;
+ "VCOMPRESSPD(Z|Z128|Z256)rr",
+ "VCOMPRESSPS(Z|Z128|Z256)rr",
+ "VPCOMPRESSD(Z|Z128|Z256)rr",
+ "VPCOMPRESSQ(Z|Z128|Z256)rr",
+ "VPERMW(Z|Z128|Z256)rr")>;
def SKXWriteResGroup73 : SchedWriteRes<[SKXPort0,SKXPort23]> {
let Latency = 6;
@@ -1581,27 +1227,17 @@ def SKXWriteResGroup74 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKXWriteResGroup74], (instregex "CVTSD2SI64rr",
- "CVTSD2SIrr",
- "CVTSS2SI64rr",
- "CVTSS2SIrr",
- "CVTTSD2SI64rr",
- "CVTTSD2SIrr",
- "VCVTSD2SI64Zrr",
- "VCVTSD2SI64rr",
- "VCVTSD2SIZrr",
- "VCVTSD2SIrr",
- "VCVTSD2USI64Zrr",
- "VCVTSD2USIZrr",
- "VCVTSS2SI64Zrr",
- "VCVTSS2SI64rr",
- "VCVTSS2SIZrr",
- "VCVTSS2SIrr",
+def: InstRW<[SKXWriteResGroup74], (instregex "CVTSD2SI(64)?rr",
+ "CVTSS2SI(64)?rr",
+ "CVTTSD2SI(64)?rr",
+ "VCVTSD2SI(64)?Zrr",
+ "VCVTSD2SI(64)?rr",
+ "VCVTSD2USI(64)?Zrr",
+ "VCVTSS2SI(64)?Zrr",
+ "VCVTSS2SI(64)?rr",
"VCVTSS2USIZrr",
- "VCVTTSD2SI64Zrr(b?)",
- "VCVTTSD2SI64rr",
- "VCVTTSD2SIZrr(b?)",
- "VCVTTSD2SIrr",
+ "VCVTTSD2SI(64)?Zrr(b?)",
+ "VCVTTSD2SI(64)?rr",
"VCVTTSD2USI64Zrr(b?)",
"VCVTTSD2USIZrr(b?)",
"VCVTTSS2USIZrr(b?)")>;
@@ -1671,8 +1307,7 @@ def SKXWriteResGroup82 : SchedWriteRes<[
let NumMicroOps = 3;
let ResourceCycles = [2,1];
}
-def: InstRW<[SKXWriteResGroup82], (instregex "CVTSI642SSrr",
- "VCVTSI642SSrr",
+def: InstRW<[SKXWriteResGroup82], (instregex "(V?)CVTSI642SSrr",
"VCVTSI642SSZrr",
"VCVTUSI642SSZrr")>;
@@ -1811,44 +1446,22 @@ def SKXWriteResGroup93 : SchedWriteRes<[
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKXWriteResGroup93], (instregex "VCVTDQ2PDZ256rr",
- "VCVTDQ2PDZrr",
- "VCVTPD2DQYrr",
- "VCVTPD2DQZ256rr",
- "VCVTPD2DQZrr",
- "VCVTPD2PSYrr",
- "VCVTPD2PSZ256rr",
- "VCVTPD2PSZrr",
- "VCVTPD2UDQZ256rr",
- "VCVTPD2UDQZrr",
- "VCVTPH2PSYrr",
- "VCVTPH2PSZ256rr",
- "VCVTPH2PSZrr",
- "VCVTPS2PDYrr",
- "VCVTPS2PDZ256rr",
- "VCVTPS2PDZrr",
- "VCVTPS2PHYrr",
- "VCVTPS2PHZ256rr",
- "VCVTPS2PHZrr",
- "VCVTPS2QQZ256rr",
- "VCVTPS2QQZrr",
- "VCVTPS2UQQZ256rr",
- "VCVTPS2UQQZrr",
- "VCVTQQ2PSZ256rr",
- "VCVTQQ2PSZrr",
- "VCVTTPD2DQYrr",
- "VCVTTPD2DQZ256rr",
- "VCVTTPD2DQZrr",
- "VCVTTPD2UDQZ256rr",
- "VCVTTPD2UDQZrr",
- "VCVTTPS2QQZ256rr",
- "VCVTTPS2QQZrr",
- "VCVTTPS2UQQZ256rr",
- "VCVTTPS2UQQZrr",
- "VCVTUDQ2PDZ256rr",
- "VCVTUDQ2PDZrr",
- "VCVTUQQ2PSZ256rr",
- "VCVTUQQ2PSZrr")>;
+def: InstRW<[SKXWriteResGroup93], (instregex "VCVTDQ2PD(Z|Z256)rr",
+ "VCVTPD2DQ(Y|Z|Z256)rr",
+ "VCVTPD2PS(Y|Z|Z256)rr",
+ "VCVTPD2UDQ(Z|Z256)rr",
+ "VCVTPH2PS(Y|Z|Z256)rr",
+ "VCVTPS2PD(Y|Z|Z256)rr",
+ "VCVTPS2PH(Y|Z|Z256)rr",
+ "VCVTPS2QQ(Z|Z256)rr",
+ "VCVTPS2UQQ(Z|Z256)rr",
+ "VCVTQQ2PS(Z|Z256)rr",
+ "VCVTTPD2DQ(Y|Z|Z256)rr",
+ "VCVTTPD2UDQ(Z|Z256)rr",
+ "VCVTTPS2QQ(Z|Z256)rr",
+ "VCVTTPS2UQQ(Z|Z256)rr",
+ "VCVTUDQ2PD(Z|Z256)rr",
+ "VCVTUQQ2PS(Z|Z256)rr")>;
def SKXWriteResGroup95 : SchedWriteRes<[SKXPort23,SKXPort015]> {
@@ -1876,29 +1489,14 @@ def: InstRW<[SKXWriteResGroup95], (instr
"VMOVSLDUPZ128rm(b?)",
"VMOVUPDZ128rm(b?)",
"VMOVUPSZ128rm(b?)",
- "VPADDBZ128rm(b?)",
- "(V?)PADDBrm",
- "VPADDDZ128rm(b?)",
- "(V?)PADDDrm",
- "VPADDQZ128rm(b?)",
- "(V?)PADDQrm",
- "VPADDWZ128rm(b?)",
- "(V?)PADDWrm",
+ "VPADD(B|D|Q|W)Z128rm(b?)",
+ "(V?)PADD(B|D|Q|W)rm",
"VPBLENDDrmi",
- "VPBLENDMBZ128rm(b?)",
- "VPBLENDMDZ128rm(b?)",
- "VPBLENDMQZ128rm(b?)",
- "VPBLENDMWZ128rm(b?)",
+ "VPBLENDM(B|D|Q|W)Z128rm(b?)",
"VPBROADCASTDZ128m(b?)",
"VPBROADCASTQZ128m(b?)",
- "VPSUBBZ128rm(b?)",
- "(V?)PSUBBrm",
- "VPSUBDZ128rm(b?)",
- "(V?)PSUBDrm",
- "VPSUBQZ128rm(b?)",
- "(V?)PSUBQrm",
- "VPSUBWZ128rm(b?)",
- "(V?)PSUBWrm",
+ "VPSUB(B|D|Q|W)Z128rm(b?)",
+ "(V?)PSUB(B|D|Q|W)rm",
"VPTERNLOGDZ128rm(b?)i",
"VPTERNLOGQZ128rm(b?)i")>;
@@ -1943,13 +1541,9 @@ def SKXWriteResGroup100 : SchedWriteRes<
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SKXWriteResGroup100], (instregex "CVTTSS2SI64rr",
- "CVTTSS2SIrr",
- "VCVTSS2USI64Zrr",
- "VCVTTSS2SI64Zrr",
- "VCVTTSS2SI64rr",
- "VCVTTSS2SIZrr",
- "VCVTTSS2SIrr",
+def: InstRW<[SKXWriteResGroup100], (instregex "VCVTSS2USI64Zrr",
+ "VCVTTSS2SI(64)?Zrr",
+ "(V?)CVTTSS2SI(64)?rr",
"VCVTTSS2USI64Zrr")>;
def SKXWriteResGroup101 : SchedWriteRes<[SKXPort0,SKXPort23,SKXPort05]> {
@@ -1964,10 +1558,7 @@ def SKXWriteResGroup103 : SchedWriteRes<
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SKXWriteResGroup103], (instregex "KMOVBkm",
- "KMOVDkm",
- "KMOVQkm",
- "KMOVWkm")>;
+def: InstRW<[SKXWriteResGroup103], (instregex "KMOV(B|D|Q|W)km")>;
def SKXWriteResGroup104 : SchedWriteRes<[SKXPort6,SKXPort23,SKXPort0156]> {
let Latency = 7;
@@ -1982,18 +1573,10 @@ def SKXWriteResGroup106 : SchedWriteRes<
let NumMicroOps = 4;
let ResourceCycles = [1,2,1];
}
-def: InstRW<[SKXWriteResGroup106], (instregex "VCOMPRESSPDZ128mr(b?)",
- "VCOMPRESSPDZ256mr(b?)",
- "VCOMPRESSPDZmr(b?)",
- "VCOMPRESSPSZ128mr(b?)",
- "VCOMPRESSPSZ256mr(b?)",
- "VCOMPRESSPSZmr(b?)",
- "VPCOMPRESSDZ128mr(b?)",
- "VPCOMPRESSDZ256mr(b?)",
- "VPCOMPRESSDZmr(b?)",
- "VPCOMPRESSQZ128mr(b?)",
- "VPCOMPRESSQZ256mr(b?)",
- "VPCOMPRESSQZmr(b?)")>;
+def: InstRW<[SKXWriteResGroup106], (instregex "VCOMPRESSPD(Z|Z128|Z256)mr(b?)",
+ "VCOMPRESSPS(Z|Z128|Z256)mr(b?)",
+ "VPCOMPRESSD(Z|Z128|Z256)mr(b?)",
+ "VPCOMPRESSQ(Z|Z128|Z256)mr(b?)")>;
def SKXWriteResGroup107 : SchedWriteRes<[SKXPort4,SKXPort23,SKXPort237,SKXPort06]> {
let Latency = 7;
@@ -2091,18 +1674,14 @@ def SKXWriteResGroup119 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKXWriteResGroup119], (instregex "FCOM32m",
- "FCOM64m",
- "FCOMP32m",
- "FCOMP64m",
+def: InstRW<[SKXWriteResGroup119], (instregex "FCOM(P?)32m",
+ "FCOM(P?)64m",
"MMX_PSADBWirm",
"VFPCLASSSDrm(b?)",
"VPBROADCASTBYrm",
- "VPBROADCASTBZ256m(b?)",
- "VPBROADCASTBZm(b?)",
+ "VPBROADCASTB(Z|Z256)m(b?)",
"VPBROADCASTWYrm",
- "VPBROADCASTWZ256m(b?)",
- "VPBROADCASTWZm(b?)",
+ "VPBROADCASTW(Z|Z256)m(b?)",
"VPMOVSXBDYrm",
"VPMOVSXBQYrm",
"VPMOVSXWQYrm")>;
@@ -2112,10 +1691,8 @@ def SKXWriteResGroup121 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKXWriteResGroup121], (instregex "VBLENDMPDZ256rm(b?)",
- "VBLENDMPDZrm(b?)",
- "VBLENDMPSZ256rm(b?)",
- "VBLENDMPSZrm(b?)",
+def: InstRW<[SKXWriteResGroup121], (instregex "VBLENDMPD(Z|Z256)rm(b?)",
+ "VBLENDMPS(Z|Z256)rm(b?)",
"VBROADCASTF32X2Z256m(b?)",
"VBROADCASTF32X2Zm(b?)",
"VBROADCASTF32X4Z256rm(b?)",
@@ -2132,89 +1709,40 @@ def: InstRW<[SKXWriteResGroup121], (inst
"VBROADCASTI64X2Z128rm(b?)",
"VBROADCASTI64X2rm(b?)",
"VBROADCASTI64X4rm(b?)",
- "VBROADCASTSDZ256m(b?)",
- "VBROADCASTSDZm(b?)",
- "VBROADCASTSSZ256m(b?)",
- "VBROADCASTSSZm(b?)",
- "VINSERTF32x4Z256rm(b?)",
- "VINSERTF32x4Zrm(b?)",
+ "VBROADCASTSD(Z|Z256)m(b?)",
+ "VBROADCASTSS(Z|Z256)m(b?)",
+ "VINSERTF32x4(Z|Z256)rm(b?)",
"VINSERTF32x8Zrm(b?)",
- "VINSERTF64x2Z256rm(b?)",
- "VINSERTF64x2Zrm(b?)",
+ "VINSERTF64x2(Z|Z256)rm(b?)",
"VINSERTF64x4Zrm(b?)",
- "VINSERTI32x4Z256rm(b?)",
- "VINSERTI32x4Zrm(b?)",
+ "VINSERTI32x4(Z|Z256)rm(b?)",
"VINSERTI32x8Zrm(b?)",
- "VINSERTI64x2Z256rm(b?)",
- "VINSERTI64x2Zrm(b?)",
+ "VINSERTI64x2(Z|Z256)rm(b?)",
"VINSERTI64x4Zrm(b?)",
- "VMOVAPDZ256rm(b?)",
- "VMOVAPDZrm(b?)",
- "VMOVAPSZ256rm(b?)",
- "VMOVAPSZrm(b?)",
- "VMOVDDUPZ256rm(b?)",
- "VMOVDDUPZrm(b?)",
- "VMOVDQA32Z256rm(b?)",
- "VMOVDQA32Zrm(b?)",
- "VMOVDQA64Z256rm(b?)",
- "VMOVDQA64Zrm(b?)",
- "VMOVDQU16Z256rm(b?)",
- "VMOVDQU16Zrm(b?)",
- "VMOVDQU32Z256rm(b?)",
- "VMOVDQU32Zrm(b?)",
- "VMOVDQU64Z256rm(b?)",
- "VMOVDQU64Zrm(b?)",
- "VMOVDQU8Z256rm(b?)",
- "VMOVDQU8Zrm(b?)",
+ "VMOVAPD(Z|Z256)rm(b?)",
+ "VMOVAPS(Z|Z256)rm(b?)",
+ "VMOVDDUP(Z|Z256)rm(b?)",
+ "VMOVDQA32(Z|Z256)rm(b?)",
+ "VMOVDQA64(Z|Z256)rm(b?)",
+ "VMOVDQU16(Z|Z256)rm(b?)",
+ "VMOVDQU32(Z|Z256)rm(b?)",
+ "VMOVDQU64(Z|Z256)rm(b?)",
+ "VMOVDQU8(Z|Z256)rm(b?)",
"VMOVNTDQAZ256rm(b?)",
- "VMOVSHDUPZ256rm(b?)",
- "VMOVSHDUPZrm(b?)",
- "VMOVSLDUPZ256rm(b?)",
- "VMOVSLDUPZrm(b?)",
- "VMOVUPDZ256rm(b?)",
- "VMOVUPDZrm(b?)",
- "VMOVUPSZ256rm(b?)",
- "VMOVUPSZrm(b?)",
- "VPADDBYrm",
- "VPADDBZ256rm(b?)",
- "VPADDBZrm(b?)",
- "VPADDDYrm",
- "VPADDDZ256rm(b?)",
- "VPADDDZrm(b?)",
- "VPADDQYrm",
- "VPADDQZ256rm(b?)",
- "VPADDQZrm(b?)",
- "VPADDWYrm",
- "VPADDWZ256rm(b?)",
- "VPADDWZrm(b?)",
+ "VMOVSHDUP(Z|Z256)rm(b?)",
+ "VMOVSLDUP(Z|Z256)rm(b?)",
+ "VMOVUPD(Z|Z256)rm(b?)",
+ "VMOVUPS(Z|Z256)rm(b?)",
+ "VPADD(B|D|Q|W)Yrm",
+ "VPADD(B|D|Q|W)(Z|Z256)rm(b?)",
"VPBLENDDYrmi",
- "VPBLENDMBZ256rm(b?)",
- "VPBLENDMBZrm(b?)",
- "VPBLENDMDZ256rm(b?)",
- "VPBLENDMDZrm(b?)",
- "VPBLENDMQZ256rm(b?)",
- "VPBLENDMQZrm(b?)",
- "VPBLENDMWZ256rm(b?)",
- "VPBLENDMWZrm(b?)",
- "VPBROADCASTDZ256m(b?)",
- "VPBROADCASTDZm(b?)",
- "VPBROADCASTQZ256m(b?)",
- "VPBROADCASTQZm(b?)",
- "VPSUBBYrm",
- "VPSUBBZ256rm(b?)",
- "VPSUBBZrm(b?)",
- "VPSUBDYrm",
- "VPSUBDZ256rm(b?)",
- "VPSUBDZrm(b?)",
- "VPSUBQYrm",
- "VPSUBQZ256rm(b?)",
- "VPSUBQZrm(b?)",
- "VPSUBWYrm",
- "VPSUBWZrm(b?)",
- "VPTERNLOGDZ256rm(b?)i",
- "VPTERNLOGDZrm(b?)i",
- "VPTERNLOGQZ256rm(b?)i",
- "VPTERNLOGQZrm(b?)i")>;
+ "VPBLENDM(B|D|Q|W)(Z|Z256)rm(b?)",
+ "VPBROADCASTD(Z|Z256)m(b?)",
+ "VPBROADCASTQ(Z|Z256)m(b?)",
+ "VPSUB(B|D|Q|W)Yrm",
+ "VPSUB(B|D|Q|W)(Z|Z256)rm(b?)",
+ "VPTERNLOGD(Z|Z256)rm(b?)i",
+ "VPTERNLOGQ(Z|Z256)rm(b?)i")>;
def SKXWriteResGroup123 : SchedWriteRes<[SKXPort0,SKXPort5,SKXPort23]> {
let Latency = 8;
@@ -2329,20 +1857,11 @@ def: InstRW<[SKXWriteResGroup136], (inst
"VFPCLASSSSrm(b?)",
"VPCMPBZ128rmi(b?)",
"VPCMPDZ128rmi(b?)",
- "VPCMPEQBZ128rm(b?)",
- "VPCMPEQDZ128rm(b?)",
- "VPCMPEQQZ128rm(b?)",
- "VPCMPEQWZ128rm(b?)",
- "VPCMPGTBZ128rm(b?)",
- "VPCMPGTDZ128rm(b?)",
- "VPCMPGTQZ128rm(b?)",
+ "VPCMPEQ(B|D|Q|W)Z128rm(b?)",
+ "VPCMPGT(B|D|Q|W)Z128rm(b?)",
"(V?)PCMPGTQrm",
- "VPCMPGTWZ128rm(b?)",
"VPCMPQZ128rmi(b?)",
- "VPCMPUBZ128rmi(b?)",
- "VPCMPUDZ128rmi(b?)",
- "VPCMPUQZ128rmi(b?)",
- "VPCMPUWZ128rmi(b?)",
+ "VPCMPU(B|D|Q|W)Z128rmi(b?)",
"VPCMPWZ128rmi(b?)",
"VPERMI2D128rm(b?)",
"VPERMI2PD128rm(b?)",
@@ -2386,8 +1905,7 @@ def SKXWriteResGroup137 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKXWriteResGroup137], (instregex "MMX_CVTPS2PIirm",
- "MMX_CVTTPS2PIirm",
+def: InstRW<[SKXWriteResGroup137], (instregex "MMX_CVT(T?)PS2PIirm",
"VCVTPH2PSrm",
"(V?)CVTPS2PDrm")>;
@@ -2439,90 +1957,48 @@ def SKXWriteResGroup148 : SchedWriteRes<
}
def: InstRW<[SKXWriteResGroup148], (instregex "(ADD|SUB|SUBR)_F(32|64)m",
"ILD_F(16|32|64)m",
- "VALIGNDZ256rm(b?)i",
- "VALIGNDZrm(b?)i",
- "VALIGNQZ256rm(b?)i",
- "VALIGNQZrm(b?)i",
- "VCMPPDZ256rm(b?)i",
- "VCMPPDZrm(b?)i",
- "VCMPPSZ256rm(b?)i",
- "VCMPPSZrm(b?)i",
- "VPCMPBZ256rmi(b?)",
- "VPCMPBZrmi(b?)",
- "VPCMPDZ256rmi(b?)",
- "VPCMPDZrmi(b?)",
- "VPCMPEQBZ256rm(b?)",
- "VPCMPEQBZrm(b?)",
- "VPCMPEQDZ256rm(b?)",
- "VPCMPEQDZrm(b?)",
- "VPCMPEQQZ256rm(b?)",
- "VPCMPEQQZrm(b?)",
- "VPCMPEQWZ256rm(b?)",
- "VPCMPEQWZrm(b?)",
- "VPCMPGTBZ256rm(b?)",
- "VPCMPGTBZrm(b?)",
- "VPCMPGTDZ256rm(b?)",
- "VPCMPGTDZrm(b?)",
+ "VALIGND(Z|Z256)rm(b?)i",
+ "VALIGNQ(Z|Z256)rm(b?)i",
+ "VCMPPD(Z|Z256)rm(b?)i",
+ "VCMPPS(Z|Z256)rm(b?)i",
+ "VPCMPB(Z|Z256)rmi(b?)",
+ "VPCMPD(Z|Z256)rmi(b?)",
+ "VPCMPEQB(Z|Z256)rm(b?)",
+ "VPCMPEQD(Z|Z256)rm(b?)",
+ "VPCMPEQQ(Z|Z256)rm(b?)",
+ "VPCMPEQW(Z|Z256)rm(b?)",
+ "VPCMPGTB(Z|Z256)rm(b?)",
+ "VPCMPGTD(Z|Z256)rm(b?)",
"VPCMPGTQYrm",
- "VPCMPGTQZ256rm(b?)",
- "VPCMPGTQZrm(b?)",
- "VPCMPGTWZ256rm(b?)",
- "VPCMPGTWZrm(b?)",
- "VPCMPQZ256rmi(b?)",
- "VPCMPQZrmi(b?)",
- "VPCMPUBZ256rmi(b?)",
- "VPCMPUBZrmi(b?)",
- "VPCMPUDZ256rmi(b?)",
- "VPCMPUDZrmi(b?)",
- "VPCMPUQZ256rmi(b?)",
- "VPCMPUQZrmi(b?)",
- "VPCMPUWZ256rmi(b?)",
- "VPCMPUWZrmi(b?)",
- "VPCMPWZ256rmi(b?)",
- "VPCMPWZrmi(b?)",
- "VPMAXSQZ256rm(b?)",
- "VPMAXSQZrm(b?)",
- "VPMAXUQZ256rm(b?)",
- "VPMAXUQZrm(b?)",
- "VPMINSQZ256rm(b?)",
- "VPMINSQZrm(b?)",
- "VPMINUQZ256rm(b?)",
- "VPMINUQZrm(b?)",
- "VPTESTMBZ256rm(b?)",
- "VPTESTMBZrm(b?)",
- "VPTESTMDZ256rm(b?)",
- "VPTESTMDZrm(b?)",
- "VPTESTMQZ256rm(b?)",
- "VPTESTMQZrm(b?)",
- "VPTESTMWZ256rm(b?)",
- "VPTESTMWZrm(b?)",
- "VPTESTNMBZ256rm(b?)",
- "VPTESTNMBZrm(b?)",
- "VPTESTNMDZ256rm(b?)",
- "VPTESTNMDZrm(b?)",
- "VPTESTNMQZ256rm(b?)",
- "VPTESTNMQZrm(b?)",
- "VPTESTNMWZ256rm(b?)",
- "VPTESTNMWZrm(b?)")>;
+ "VPCMPGTQ(Z|Z256)rm(b?)",
+ "VPCMPGTW(Z|Z256)rm(b?)",
+ "VPCMPQ(Z|Z256)rmi(b?)",
+ "VPCMPU(B|D|Q|W)Z256rmi(b?)",
+ "VPCMPU(B|D|Q|W)Zrmi(b?)",
+ "VPCMPW(Z|Z256)rmi(b?)",
+ "VPMAXSQ(Z|Z256)rm(b?)",
+ "VPMAXUQ(Z|Z256)rm(b?)",
+ "VPMINSQ(Z|Z256)rm(b?)",
+ "VPMINUQ(Z|Z256)rm(b?)",
+ "VPTESTM(B|D|Q|W)Z256rm(b?)",
+ "VPTESTM(B|D|Q|W)Zrm(b?)",
+ "VPTESTNM(B|D|Q|W)Z256rm(b?)",
+ "VPTESTNM(B|D|Q|W)Zrm(b?)")>;
def SKXWriteResGroup149 : SchedWriteRes<[SKXPort23,SKXPort015]> {
let Latency = 10;
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKXWriteResGroup149], (instregex "CVTDQ2PSrm",
- "CVTPS2DQrm",
- "CVTSS2SDrm",
- "CVTTPS2DQrm",
- "VCVTDQ2PDZ128rm(b?)",
+def: InstRW<[SKXWriteResGroup149], (instregex "VCVTDQ2PDZ128rm(b?)",
"VCVTDQ2PSZ128rm(b?)",
- "VCVTDQ2PSrm",
+ "(V?)CVTDQ2PSrm",
"VCVTPD2QQZ128rm(b?)",
"VCVTPD2UQQZ128rm(b?)",
"VCVTPH2PSYrm",
"VCVTPH2PSZ128rm(b?)",
"VCVTPS2DQZ128rm(b?)",
- "VCVTPS2DQrm",
+ "(V?)CVTPS2DQrm",
"VCVTPS2PDZ128rm(b?)",
"VCVTPS2QQZ128rm(b?)",
"VCVTPS2UDQZ128rm(b?)",
@@ -2530,11 +2006,11 @@ def: InstRW<[SKXWriteResGroup149], (inst
"VCVTQQ2PDZ128rm(b?)",
"VCVTQQ2PSZ128rm(b?)",
"VCVTSS2SDZrm",
- "VCVTSS2SDrm",
+ "(V?)CVTSS2SDrm",
"VCVTTPD2QQZ128rm(b?)",
"VCVTTPD2UQQZ128rm(b?)",
"VCVTTPS2DQZ128rm(b?)",
- "VCVTTPS2DQrm",
+ "(V?)CVTTPS2DQrm",
"VCVTTPS2QQZ128rm(b?)",
"VCVTTPS2UDQZ128rm(b?)",
"VCVTTPS2UQQZ128rm(b?)",
@@ -2608,47 +2084,24 @@ def SKXWriteResGroup161 : SchedWriteRes<
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKXWriteResGroup161], (instregex "VCVTDQ2PDZ256rm(b?)",
- "VCVTDQ2PDZrm(b?)",
+def: InstRW<[SKXWriteResGroup161], (instregex "VCVTDQ2PD(Z|Z256)rm(b?)",
"VCVTDQ2PSYrm",
- "VCVTDQ2PSZ256rm(b?)",
- "VCVTDQ2PSZrm(b?)",
- "VCVTPD2QQZ256rm(b?)",
- "VCVTPD2QQZrm(b?)",
- "VCVTPD2UQQZ256rm(b?)",
- "VCVTPD2UQQZrm(b?)",
- "VCVTPH2PSZ256rm(b?)",
- "VCVTPH2PSZrm(b?)",
- "VCVTPS2DQYrm",
- "VCVTPS2DQZ256rm(b?)",
- "VCVTPS2DQZrm(b?)",
+ "VCVTDQ2PS(Z|Z256)rm(b?)",
+ "VCVTPH2PS(Z|Z256)rm(b?)",
"VCVTPS2PDYrm",
- "VCVTPS2PDZ256rm(b?)",
- "VCVTPS2PDZrm(b?)",
- "VCVTPS2QQZ256rm(b?)",
- "VCVTPS2UDQZ256rm(b?)",
- "VCVTPS2UDQZrm(b?)",
- "VCVTPS2UQQZ256rm(b?)",
- "VCVTQQ2PDZ256rm(b?)",
- "VCVTQQ2PDZrm(b?)",
+ "VCVTPS2PD(Z|Z256)rm(b?)",
+ "VCVTQQ2PD(Z|Z256)rm(b?)",
"VCVTQQ2PSZ256rm(b?)",
- "VCVTTPD2QQZ256rm(b?)",
- "VCVTTPD2QQZrm(b?)",
- "VCVTTPD2UQQZ256rm(b?)",
- "VCVTTPD2UQQZrm(b?)",
- "VCVTTPS2DQYrm",
- "VCVTTPS2DQZ256rm(b?)",
- "VCVTTPS2DQZrm(b?)",
- "VCVTTPS2QQZ256rm(b?)",
- "VCVTTPS2UDQZ256rm(b?)",
- "VCVTTPS2UDQZrm(b?)",
- "VCVTTPS2UQQZ256rm(b?)",
- "VCVTUDQ2PDZ256rm(b?)",
- "VCVTUDQ2PDZrm(b?)",
- "VCVTUDQ2PSZ256rm(b?)",
- "VCVTUDQ2PSZrm(b?)",
- "VCVTUQQ2PDZ256rm(b?)",
- "VCVTUQQ2PDZrm(b?)",
+ "VCVT(T?)PD2QQ(Z|Z256)rm(b?)",
+ "VCVT(T?)PD2UQQ(Z|Z256)rm(b?)",
+ "VCVT(T?)PS2DQYrm",
+ "VCVT(T?)PS2DQ(Z|Z256)rm(b?)",
+ "VCVT(T?)PS2QQZ256rm(b?)",
+ "VCVT(T?)PS2UDQ(Z|Z256)rm(b?)",
+ "VCVT(T?)PS2UQQZ256rm(b?)",
+ "VCVTUDQ2PD(Z|Z256)rm(b?)",
+ "VCVTUDQ2PS(Z|Z256)rm(b?)",
+ "VCVTUQQ2PD(Z|Z256)rm(b?)",
"VCVTUQQ2PSZ256rm(b?)")>;
def SKXWriteResGroup162 : SchedWriteRes<[SKXPort5,SKXPort23]> {
@@ -2656,18 +2109,12 @@ def SKXWriteResGroup162 : SchedWriteRes<
let NumMicroOps = 3;
let ResourceCycles = [2,1];
}
-def: InstRW<[SKXWriteResGroup162], (instregex "FICOM16m",
- "FICOM32m",
- "FICOMP16m",
- "FICOMP32m",
- "VEXPANDPDZ256rm(b?)",
- "VEXPANDPDZrm(b?)",
- "VEXPANDPSZ256rm(b?)",
- "VEXPANDPSZrm(b?)",
- "VPEXPANDDZ256rm(b?)",
- "VPEXPANDDZrm(b?)",
- "VPEXPANDQZ256rm(b?)",
- "VPEXPANDQZrm(b?)")>;
+def: InstRW<[SKXWriteResGroup162], (instregex "FICOM(P?)16m",
+ "FICOM(P?)32m",
+ "VEXPANDPD(Z|Z256)rm(b?)",
+ "VEXPANDPS(Z|Z256)rm(b?)",
+ "VPEXPANDD(Z|Z256)rm(b?)",
+ "VPEXPANDQ(Z|Z256)rm(b?)")>;
def SKXWriteResGroup163 : SchedWriteRes<[SKXPort23,SKXPort015]> {
let Latency = 11;
@@ -2721,11 +2168,9 @@ def SKXWriteResGroup166 : SchedWriteRes<
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SKXWriteResGroup166], (instregex "CVTPD2DQrm",
- "CVTPD2PSrm",
- "CVTTPD2DQrm",
- "MMX_CVTPD2PIirm",
- "MMX_CVTTPD2PIirm")>;
+def: InstRW<[SKXWriteResGroup166], (instregex "CVTPD2PSrm",
+ "CVT(T?)PD2DQrm",
+ "MMX_CVT(T?)PD2PIirm")>;
def SKXWriteResGroup167 : SchedWriteRes<[SKXPort5,SKXPort23,SKXPort015]> {
let Latency = 11;
@@ -2769,9 +2214,7 @@ def SKXWriteResGroup174 : SchedWriteRes<
let NumMicroOps = 3;
let ResourceCycles = [3];
}
-def: InstRW<[SKXWriteResGroup174], (instregex "VPMULLQZ128rr",
- "VPMULLQZ256rr",
- "VPMULLQZrr")>;
+def: InstRW<[SKXWriteResGroup174], (instregex "VPMULLQ(Z|Z128|Z256)rr")>;
def SKXWriteResGroup175 : SchedWriteRes<[SKXPort5,SKXPort23]> {
let Latency = 12;
@@ -2785,20 +2228,16 @@ def SKXWriteResGroup176 : SchedWriteRes<
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SKXWriteResGroup176], (instregex "VCVTSD2USIZrm(b?)",
- "VCVTSS2USI64Zrm(b?)",
- "VCVTTSD2USIZrm(b?)",
- "VCVTTSS2USI64Zrm(b?)")>;
+def: InstRW<[SKXWriteResGroup176], (instregex "VCVT(T?)SD2USIZrm(b?)",
+ "VCVT(T?)SS2USI64Zrm(b?)")>;
def SKXWriteResGroup177 : SchedWriteRes<[SKXPort5,SKXPort23,SKXPort015]> {
let Latency = 12;
let NumMicroOps = 3;
let ResourceCycles = [1,1,1];
}
-def: InstRW<[SKXWriteResGroup177], (instregex "VCVTPS2QQZrm(b?)",
- "VCVTPS2UQQZrm(b?)",
- "VCVTTPS2QQZrm(b?)",
- "VCVTTPS2UQQZrm(b?)")>;
+def: InstRW<[SKXWriteResGroup177], (instregex "VCVT(T?)PS2QQZrm(b?)",
+ "VCVT(T?)PS2UQQZrm(b?)")>;
def SKXWriteResGroup179 : SchedWriteRes<[SKXPort0,SKXPort5,SKXPort23,SKXPort015]> {
let Latency = 12;
More information about the llvm-commits
mailing list