mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
[X86] Replace all single match schedule class instregexs with instrs entries
Helps reduce cost of instrw collection llvm-svn: 340124
This commit is contained in:
parent
d74753f6d7
commit
491720ca70
@ -583,7 +583,7 @@ def BWWriteResGroup3 : SchedWriteRes<[BWPort5]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup3], (instregex "MMX_MOVQ2DQrr")>;
|
||||
def: InstRW<[BWWriteResGroup3], (instrs MMX_MOVQ2DQrr)>;
|
||||
|
||||
def BWWriteResGroup4 : SchedWriteRes<[BWPort6]> {
|
||||
let Latency = 1;
|
||||
@ -628,19 +628,19 @@ def BWWriteResGroup9 : SchedWriteRes<[BWPort0156]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup9], (instregex "SGDT64m",
|
||||
"SIDT64m",
|
||||
"SMSW16m",
|
||||
"STRm",
|
||||
"SYSCALL")>;
|
||||
def: InstRW<[BWWriteResGroup9], (instrs SGDT64m,
|
||||
SIDT64m,
|
||||
SMSW16m,
|
||||
STRm,
|
||||
SYSCALL)>;
|
||||
|
||||
def BWWriteResGroup10 : SchedWriteRes<[BWPort4,BWPort237]> {
|
||||
let Latency = 1;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup10], (instregex "FBSTPm",
|
||||
"ST_FP(32|64|80)m")>;
|
||||
def: InstRW<[BWWriteResGroup10], (instrs FBSTPm)>;
|
||||
def: InstRW<[BWWriteResGroup10], (instregex "ST_FP(32|64|80)m")>;
|
||||
|
||||
def BWWriteResGroup12 : SchedWriteRes<[BWPort01]> {
|
||||
let Latency = 2;
|
||||
@ -687,7 +687,7 @@ def BWWriteResGroup17 : SchedWriteRes<[BWPort01,BWPort015]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup17], (instregex "MMX_MOVDQ2Qrr")>;
|
||||
def: InstRW<[BWWriteResGroup17], (instrs MMX_MOVDQ2Qrr)>;
|
||||
|
||||
def BWWriteResGroup18 : SchedWriteRes<[BWPort237,BWPort0156]> {
|
||||
let Latency = 2;
|
||||
@ -701,11 +701,10 @@ def BWWriteResGroup20 : SchedWriteRes<[BWPort06,BWPort0156]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup20], (instrs CWD)>;
|
||||
def: InstRW<[BWWriteResGroup20], (instrs JCXZ, JECXZ, JRCXZ)>;
|
||||
def: InstRW<[BWWriteResGroup20], (instregex "ADC8i8",
|
||||
"ADC8ri",
|
||||
"SBB8i8",
|
||||
def: InstRW<[BWWriteResGroup20], (instrs CWD,
|
||||
JCXZ, JECXZ, JRCXZ,
|
||||
ADC8i8, SBB8i8)>;
|
||||
def: InstRW<[BWWriteResGroup20], (instregex "ADC8ri",
|
||||
"SBB8ri",
|
||||
"SET(A|BE)r")>;
|
||||
|
||||
@ -728,19 +727,17 @@ def BWWriteResGroup25 : SchedWriteRes<[BWPort4,BWPort237,BWPort0156]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup25], (instrs PUSH16r, PUSH32r, PUSH64r,
|
||||
def: InstRW<[BWWriteResGroup25], (instrs PUSH16r, PUSH32r, PUSH64r, PUSH64i8,
|
||||
STOSB, STOSL, STOSQ, STOSW)>;
|
||||
def: InstRW<[BWWriteResGroup25], (instregex "PUSH(16|32|64)rmr",
|
||||
"PUSH64i8")>;
|
||||
def: InstRW<[BWWriteResGroup25], (instregex "PUSH(16|32|64)rmr")>;
|
||||
|
||||
def BWWriteResGroup27 : SchedWriteRes<[BWPort1]> {
|
||||
let Latency = 3;
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup27], (instregex "MMX_CVTPI2PSirr",
|
||||
"PDEP(32|64)rr",
|
||||
"PEXT(32|64)rr",
|
||||
def: InstRW<[BWWriteResGroup27], (instrs MMX_CVTPI2PSirr)>;
|
||||
def: InstRW<[BWWriteResGroup27], (instregex "P(DEP|EXT)(32|64)rr",
|
||||
"(V?)CVTDQ2PS(Y?)rr")>;
|
||||
|
||||
def BWWriteResGroup27_16 : SchedWriteRes<[BWPort1, BWPort0156]> {
|
||||
@ -755,17 +752,17 @@ def BWWriteResGroup28 : SchedWriteRes<[BWPort5]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup28], (instregex "VPBROADCASTBrr",
|
||||
"VPBROADCASTWrr")>;
|
||||
def: InstRW<[BWWriteResGroup28], (instrs VPBROADCASTBrr,
|
||||
VPBROADCASTWrr)>;
|
||||
|
||||
def BWWriteResGroup33 : SchedWriteRes<[BWPort5,BWPort0156]> {
|
||||
let Latency = 3;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup33], (instregex "MMX_PACKSSDWirr",
|
||||
"MMX_PACKSSWBirr",
|
||||
"MMX_PACKUSWBirr")>;
|
||||
def: InstRW<[BWWriteResGroup33], (instrs MMX_PACKSSDWirr,
|
||||
MMX_PACKSSWBirr,
|
||||
MMX_PACKUSWBirr)>;
|
||||
|
||||
def BWWriteResGroup34 : SchedWriteRes<[BWPort6,BWPort0156]> {
|
||||
let Latency = 3;
|
||||
@ -823,7 +820,7 @@ def BWWriteResGroup40 : SchedWriteRes<[BWPort0,BWPort5]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup40], (instregex "VCVTPS2PDYrr")>;
|
||||
def: InstRW<[BWWriteResGroup40], (instrs VCVTPS2PDYrr)>;
|
||||
|
||||
def BWWriteResGroup41 : SchedWriteRes<[BWPort0,BWPort0156]> {
|
||||
let Latency = 4;
|
||||
@ -837,9 +834,9 @@ def BWWriteResGroup42 : SchedWriteRes<[BWPort1,BWPort5]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup42], (instrs IMUL64r, MUL64r, MULX64rr)>;
|
||||
def: InstRW<[BWWriteResGroup42], (instregex "MMX_CVTPI2PDirr",
|
||||
"MMX_CVT(T?)PD2PIirr",
|
||||
def: InstRW<[BWWriteResGroup42], (instrs IMUL64r, MUL64r, MULX64rr,
|
||||
MMX_CVTPI2PDirr)>;
|
||||
def: InstRW<[BWWriteResGroup42], (instregex "MMX_CVT(T?)PD2PIirr",
|
||||
"MMX_CVT(T?)PS2PIirr",
|
||||
"(V?)CVTDQ2PDrr",
|
||||
"(V?)CVTPD2PSrr",
|
||||
@ -898,17 +895,14 @@ def BWWriteResGroup49 : SchedWriteRes<[BWPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup49], (instregex "MOVSX(16|32|64)rm16",
|
||||
"MOVSX(16|32|64)rm32",
|
||||
"MOVSX(16|32|64)rm8",
|
||||
"MOVZX(16|32|64)rm16",
|
||||
"MOVZX(16|32|64)rm8",
|
||||
"VBROADCASTSSrm",
|
||||
"(V?)MOVDDUPrm",
|
||||
"(V?)MOVSHDUPrm",
|
||||
"(V?)MOVSLDUPrm",
|
||||
"VPBROADCASTDrm",
|
||||
"VPBROADCASTQrm")>;
|
||||
def: InstRW<[BWWriteResGroup49], (instregex "MOVSX(16|32|64)rm(8|16|32)",
|
||||
"MOVZX(16|32|64)rm(8|16)")>;
|
||||
def: InstRW<[BWWriteResGroup49], (instrs VBROADCASTSSrm,
|
||||
VMOVDDUPrm, MOVDDUPrm,
|
||||
VMOVSHDUPrm, MOVSHDUPrm,
|
||||
VMOVSLDUPrm, MOVSLDUPrm,
|
||||
VPBROADCASTDrm,
|
||||
VPBROADCASTQrm)>;
|
||||
|
||||
def BWWriteResGroup50 : SchedWriteRes<[BWPort1,BWPort5]> {
|
||||
let Latency = 5;
|
||||
@ -964,43 +958,44 @@ def BWWriteResGroup58 : SchedWriteRes<[BWPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup58], (instregex "LD_F(32|64|80)m",
|
||||
"VBROADCASTF128",
|
||||
"VBROADCASTI128",
|
||||
"VBROADCASTSDYrm",
|
||||
"VBROADCASTSSYrm",
|
||||
"VMOVDDUPYrm",
|
||||
"VMOVSHDUPYrm",
|
||||
"VMOVSLDUPYrm",
|
||||
"VPBROADCASTDYrm",
|
||||
"VPBROADCASTQYrm")>;
|
||||
def: InstRW<[BWWriteResGroup58], (instregex "LD_F(32|64|80)m")>;
|
||||
def: InstRW<[BWWriteResGroup58], (instrs VBROADCASTF128,
|
||||
VBROADCASTI128,
|
||||
VBROADCASTSDYrm,
|
||||
VBROADCASTSSYrm,
|
||||
VMOVDDUPYrm,
|
||||
VMOVSHDUPYrm,
|
||||
VMOVSLDUPYrm,
|
||||
VPBROADCASTDYrm,
|
||||
VPBROADCASTQYrm)>;
|
||||
|
||||
def BWWriteResGroup59 : SchedWriteRes<[BWPort0,BWPort23]> {
|
||||
let Latency = 6;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup59], (instregex "(V?)CVTPS2PDrm",
|
||||
"(V?)CVTSS2SDrm",
|
||||
"VPSLLVQrm",
|
||||
"VPSRLVQrm")>;
|
||||
def: InstRW<[BWWriteResGroup59], (instrs CVTPS2PDrm, VCVTPS2PDrm,
|
||||
CVTSS2SDrm, VCVTSS2SDrm,
|
||||
VPSLLVQrm,
|
||||
VPSRLVQrm)>;
|
||||
|
||||
def BWWriteResGroup60 : SchedWriteRes<[BWPort1,BWPort5]> {
|
||||
let Latency = 6;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup60], (instregex "VCVTDQ2PDYrr",
|
||||
"VCVTPD2PSYrr",
|
||||
"VCVT(T?)PD2DQYrr")>;
|
||||
def: InstRW<[BWWriteResGroup60], (instrs VCVTDQ2PDYrr,
|
||||
VCVTPD2PSYrr,
|
||||
VCVTPD2DQYrr,
|
||||
VCVTTPD2DQYrr)>;
|
||||
|
||||
def BWWriteResGroup62 : SchedWriteRes<[BWPort6,BWPort23]> {
|
||||
let Latency = 6;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup62], (instregex "FARJMP64",
|
||||
"JMP(16|32|64)m")>;
|
||||
def: InstRW<[BWWriteResGroup62], (instrs FARJMP64)>;
|
||||
def: InstRW<[BWWriteResGroup62], (instregex "JMP(16|32|64)m")>;
|
||||
|
||||
def BWWriteResGroup63 : SchedWriteRes<[BWPort23,BWPort06]> {
|
||||
let Latency = 6;
|
||||
@ -1025,9 +1020,9 @@ def BWWriteResGroup65 : SchedWriteRes<[BWPort23,BWPort015]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup65], (instregex "VINSERTF128rm",
|
||||
"VINSERTI128rm",
|
||||
"VPBLENDDrmi")>;
|
||||
def: InstRW<[BWWriteResGroup65], (instrs VINSERTF128rm,
|
||||
VINSERTI128rm,
|
||||
VPBLENDDrmi)>;
|
||||
|
||||
def BWWriteResGroup66 : SchedWriteRes<[BWPort23,BWPort0156]> {
|
||||
let Latency = 6;
|
||||
@ -1076,8 +1071,8 @@ def BWWriteResGroup73 : SchedWriteRes<[BWPort0,BWPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup73], (instregex "VPSLLVQYrm",
|
||||
"VPSRLVQYrm")>;
|
||||
def: InstRW<[BWWriteResGroup73], (instrs VPSLLVQYrm,
|
||||
VPSRLVQYrm)>;
|
||||
|
||||
def BWWriteResGroup74 : SchedWriteRes<[BWPort1,BWPort23]> {
|
||||
let Latency = 7;
|
||||
@ -1091,16 +1086,16 @@ def BWWriteResGroup77 : SchedWriteRes<[BWPort23,BWPort015]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup77], (instregex "VPBLENDDYrmi")>;
|
||||
def: InstRW<[BWWriteResGroup77], (instrs VPBLENDDYrmi)>;
|
||||
|
||||
def BWWriteResGroup79 : SchedWriteRes<[BWPort5,BWPort23]> {
|
||||
let Latency = 7;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup79], (instregex "MMX_PACKSSDWirm",
|
||||
"MMX_PACKSSWBirm",
|
||||
"MMX_PACKUSWBirm")>;
|
||||
def: InstRW<[BWWriteResGroup79], (instrs MMX_PACKSSDWirm,
|
||||
MMX_PACKSSWBirm,
|
||||
MMX_PACKUSWBirm)>;
|
||||
|
||||
def BWWriteResGroup80 : SchedWriteRes<[BWPort23,BWPort0156]> {
|
||||
let Latency = 7;
|
||||
@ -1144,8 +1139,8 @@ def BWWriteResGroup89 : SchedWriteRes<[BWPort4,BWPort6,BWPort23,BWPort237,BWPort
|
||||
let NumMicroOps = 5;
|
||||
let ResourceCycles = [1,1,1,1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup89], (instregex "CALL(16|32|64)m",
|
||||
"FARCALL64")>;
|
||||
def: InstRW<[BWWriteResGroup89], (instregex "CALL(16|32|64)m")>;
|
||||
def: InstRW<[BWWriteResGroup89], (instrs FARCALL64)>;
|
||||
|
||||
def BWWriteResGroup90 : SchedWriteRes<[BWPort6,BWPort06,BWPort15,BWPort0156]> {
|
||||
let Latency = 7;
|
||||
@ -1159,10 +1154,10 @@ def BWWriteResGroup91 : SchedWriteRes<[BWPort1,BWPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup91], (instregex "MMX_CVTPI2PSirm",
|
||||
"PDEP(32|64)rm",
|
||||
"PEXT(32|64)rm",
|
||||
"(V?)CVTDQ2PSrm")>;
|
||||
def: InstRW<[BWWriteResGroup91], (instrs MMX_CVTPI2PSirm,
|
||||
CVTDQ2PSrm,
|
||||
VCVTDQ2PSrm)>;
|
||||
def: InstRW<[BWWriteResGroup91], (instregex "P(DEP|EXT)(32|64)rm")>;
|
||||
|
||||
def BWWriteResGroup91_16 : SchedWriteRes<[BWPort1, BWPort0156, BWPort23]> {
|
||||
let Latency = 8;
|
||||
@ -1183,13 +1178,13 @@ def BWWriteResGroup92 : SchedWriteRes<[BWPort5,BWPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup92], (instregex "VPMOVSXBDYrm",
|
||||
"VPMOVSXBQYrm",
|
||||
"VPMOVSXBWYrm",
|
||||
"VPMOVSXDQYrm",
|
||||
"VPMOVSXWDYrm",
|
||||
"VPMOVSXWQYrm",
|
||||
"VPMOVZXWDYrm")>;
|
||||
def: InstRW<[BWWriteResGroup92], (instrs VPMOVSXBDYrm,
|
||||
VPMOVSXBQYrm,
|
||||
VPMOVSXBWYrm,
|
||||
VPMOVSXDQYrm,
|
||||
VPMOVSXWDYrm,
|
||||
VPMOVSXWQYrm,
|
||||
VPMOVZXWDYrm)>;
|
||||
|
||||
def BWWriteResGroup97 : SchedWriteRes<[BWPort23,BWPort237,BWPort06,BWPort0156]> {
|
||||
let Latency = 8;
|
||||
@ -1231,9 +1226,9 @@ def BWWriteResGroup101 : SchedWriteRes<[BWPort1,BWPort23]> {
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup101], (instregex "(ADD|SUB|SUBR)_F(32|64)m",
|
||||
"ILD_F(16|32|64)m",
|
||||
"VCVTPS2DQYrm",
|
||||
"VCVTTPS2DQYrm")>;
|
||||
"ILD_F(16|32|64)m")>;
|
||||
def: InstRW<[BWWriteResGroup101], (instrs VCVTPS2DQYrm,
|
||||
VCVTTPS2DQYrm)>;
|
||||
|
||||
def BWWriteResGroup105 : SchedWriteRes<[BWPort0,BWPort1,BWPort23]> {
|
||||
let Latency = 9;
|
||||
@ -1251,18 +1246,19 @@ def BWWriteResGroup106 : SchedWriteRes<[BWPort0,BWPort5,BWPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup106], (instregex "VCVTPS2PDYrm")>;
|
||||
def: InstRW<[BWWriteResGroup106], (instrs VCVTPS2PDYrm)>;
|
||||
|
||||
def BWWriteResGroup107 : SchedWriteRes<[BWPort1,BWPort5,BWPort23]> {
|
||||
let Latency = 9;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup107], (instrs IMUL64m, MUL64m, MULX64rm)>;
|
||||
def: InstRW<[BWWriteResGroup107], (instregex "CVTPD2PSrm",
|
||||
"CVT(T?)PD2DQrm",
|
||||
"MMX_CVTPI2PDirm",
|
||||
"MMX_CVT(T?)PD2PIirm",
|
||||
def: InstRW<[BWWriteResGroup107], (instrs IMUL64m, MUL64m, MULX64rm,
|
||||
CVTPD2PSrm,
|
||||
CVTPD2DQrm,
|
||||
CVTTPD2DQrm,
|
||||
MMX_CVTPI2PDirm)>;
|
||||
def: InstRW<[BWWriteResGroup107], (instregex "MMX_CVT(T?)PD2PIirm",
|
||||
"(V?)CVTDQ2PDrm",
|
||||
"(V?)CVTSD2SSrm")>;
|
||||
|
||||
@ -1329,15 +1325,15 @@ def BWWriteResGroup123 : SchedWriteRes<[BWPort0,BWPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup123], (instregex "MUL_F(32|64)m",
|
||||
"VPCMPGTQYrm")>;
|
||||
def: InstRW<[BWWriteResGroup123], (instregex "MUL_F(32|64)m")>;
|
||||
def: InstRW<[BWWriteResGroup123], (instrs VPCMPGTQYrm)>;
|
||||
|
||||
def BWWriteResGroup128 : SchedWriteRes<[BWPort1,BWPort5,BWPort23]> {
|
||||
let Latency = 11;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup128], (instregex "VCVTDQ2PDYrm")>;
|
||||
def: InstRW<[BWWriteResGroup128], (instrs VCVTDQ2PDYrm)>;
|
||||
|
||||
def BWWriteResGroup131 : SchedWriteRes<[BWPort1,BWPort06,BWPort0156]> {
|
||||
let Latency = 11;
|
||||
@ -1352,7 +1348,7 @@ def BWWriteResGroup132 : SchedWriteRes<[BWPort1,BWPort06,BWPort15,BWPort0156]> {
|
||||
let NumMicroOps = 9;
|
||||
let ResourceCycles = [1,4,1,3];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup132], (instregex "RCL8rCL")>;
|
||||
def: InstRW<[BWWriteResGroup132], (instrs RCL8rCL)>;
|
||||
|
||||
def BWWriteResGroup133 : SchedWriteRes<[BWPort06,BWPort0156]> {
|
||||
let Latency = 11;
|
||||
@ -1395,7 +1391,7 @@ def BWWriteResGroup145 : SchedWriteRes<[BWPort1,BWPort06,BWPort15,BWPort0156]> {
|
||||
let NumMicroOps = 10;
|
||||
let ResourceCycles = [2,3,1,4];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup145], (instregex "RCR8rCL")>;
|
||||
def: InstRW<[BWWriteResGroup145], (instrs RCR8rCL)>;
|
||||
|
||||
def BWWriteResGroup146 : SchedWriteRes<[BWPort0,BWPort1,BWPort6,BWPort0156]> {
|
||||
let Latency = 14;
|
||||
@ -1494,7 +1490,7 @@ def BWWriteResGroup172 : SchedWriteRes<[BWPort6,BWPort23,BWPort0156]> {
|
||||
let NumMicroOps = 18;
|
||||
let ResourceCycles = [1,1,16];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup172], (instregex "POPF64")>;
|
||||
def: InstRW<[BWWriteResGroup172], (instrs POPF64)>;
|
||||
|
||||
def BWWriteResGroup176 : SchedWriteRes<[BWPort6,BWPort23,BWPort0156]> {
|
||||
let Latency = 23;
|
||||
|
@ -621,7 +621,7 @@ def HWWriteDiv8 : SchedWriteRes<[HWPort0, HWPort1, HWPort5, HWPort6]> {
|
||||
let Latency = 22;
|
||||
let NumMicroOps = 9;
|
||||
}
|
||||
def : InstRW<[HWWriteDiv8], (instregex "DIV8r")>;
|
||||
def : InstRW<[HWWriteDiv8], (instrs DIV8r)>;
|
||||
|
||||
// IDIV.
|
||||
// r8.
|
||||
@ -629,7 +629,7 @@ def HWWriteIDiv8 : SchedWriteRes<[HWPort0, HWPort1, HWPort5, HWPort6]> {
|
||||
let Latency = 23;
|
||||
let NumMicroOps = 9;
|
||||
}
|
||||
def : InstRW<[HWWriteIDiv8], (instregex "IDIV8r")>;
|
||||
def : InstRW<[HWWriteIDiv8], (instrs IDIV8r)>;
|
||||
|
||||
// BT.
|
||||
// m,r.
|
||||
@ -712,7 +712,7 @@ def : InstRW<[HWWriteRDRAND], (instregex "RDRAND(16|32|64)r")>;
|
||||
|
||||
// FLD.
|
||||
// m80.
|
||||
def : InstRW<[HWWriteP01], (instregex "LD_Frr")>;
|
||||
def : InstRW<[HWWriteP01], (instrs LD_Frr)>;
|
||||
|
||||
// FBLD.
|
||||
// m80.
|
||||
@ -720,7 +720,7 @@ def HWWriteFBLD : SchedWriteRes<[]> {
|
||||
let Latency = 47;
|
||||
let NumMicroOps = 43;
|
||||
}
|
||||
def : InstRW<[HWWriteFBLD], (instregex "FBLDm")>;
|
||||
def : InstRW<[HWWriteFBLD], (instrs FBLDm)>;
|
||||
|
||||
// FST(P).
|
||||
// r.
|
||||
@ -733,13 +733,13 @@ def : InstRW<[HWWriteP01], (instregex "FFREE")>;
|
||||
def HWWriteFNSAVE : SchedWriteRes<[]> {
|
||||
let NumMicroOps = 147;
|
||||
}
|
||||
def : InstRW<[HWWriteFNSAVE], (instregex "FSAVEm")>;
|
||||
def : InstRW<[HWWriteFNSAVE], (instrs FSAVEm)>;
|
||||
|
||||
// FRSTOR.
|
||||
def HWWriteFRSTOR : SchedWriteRes<[]> {
|
||||
let NumMicroOps = 90;
|
||||
}
|
||||
def : InstRW<[HWWriteFRSTOR], (instregex "FRSTORm")>;
|
||||
def : InstRW<[HWWriteFRSTOR], (instrs FRSTORm)>;
|
||||
|
||||
//-- Arithmetic instructions --//
|
||||
|
||||
@ -813,8 +813,8 @@ def HWWriteResGroup0 : SchedWriteRes<[HWPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup0], (instregex "VBROADCASTSSrm",
|
||||
"(V?)MOVSHDUPrm",
|
||||
def: InstRW<[HWWriteResGroup0], (instrs VBROADCASTSSrm)>;
|
||||
def: InstRW<[HWWriteResGroup0], (instregex "(V?)MOVSHDUPrm",
|
||||
"(V?)MOVSLDUPrm",
|
||||
"VPBROADCAST(D|Q)rm")>;
|
||||
|
||||
@ -823,14 +823,14 @@ def HWWriteResGroup0_1 : SchedWriteRes<[HWPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup0_1], (instrs VBROADCASTF128,
|
||||
VBROADCASTI128,
|
||||
VBROADCASTSDYrm,
|
||||
VBROADCASTSSYrm,
|
||||
VMOVDDUPYrm,
|
||||
VMOVSHDUPYrm,
|
||||
VMOVSLDUPYrm)>;
|
||||
def: InstRW<[HWWriteResGroup0_1], (instregex "LD_F(32|64|80)m",
|
||||
"VBROADCASTF128",
|
||||
"VBROADCASTI128",
|
||||
"VBROADCASTSDYrm",
|
||||
"VBROADCASTSSYrm",
|
||||
"VMOVDDUPYrm",
|
||||
"VMOVSHDUPYrm",
|
||||
"VMOVSLDUPYrm",
|
||||
"VPBROADCAST(D|Q)Yrm")>;
|
||||
|
||||
def HWWriteResGroup0_2 : SchedWriteRes<[HWPort23]> {
|
||||
@ -838,11 +838,8 @@ def HWWriteResGroup0_2 : SchedWriteRes<[HWPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup0_2], (instregex "MOVSX(16|32|64)rm16",
|
||||
"MOVSX(16|32|64)rm32",
|
||||
"MOVSX(16|32|64)rm8",
|
||||
"MOVZX(16|32|64)rm16",
|
||||
"MOVZX(16|32|64)rm8",
|
||||
def: InstRW<[HWWriteResGroup0_2], (instregex "MOVSX(16|32|64)rm(8|16|32)",
|
||||
"MOVZX(16|32|64)rm(8|16)",
|
||||
"(V?)MOVDDUPrm")>;
|
||||
|
||||
def HWWriteResGroup1 : SchedWriteRes<[HWPort4,HWPort237]> {
|
||||
@ -850,9 +847,8 @@ def HWWriteResGroup1 : SchedWriteRes<[HWPort4,HWPort237]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup1], (instregex "FBSTPm",
|
||||
"ST_FP(32|64|80)m",
|
||||
"VMPTRSTm")>;
|
||||
def: InstRW<[HWWriteResGroup1], (instrs FBSTPm, VMPTRSTm)>;
|
||||
def: InstRW<[HWWriteResGroup1], (instregex "ST_FP(32|64|80)m")>;
|
||||
|
||||
def HWWriteResGroup2 : SchedWriteRes<[HWPort0]> {
|
||||
let Latency = 1;
|
||||
@ -875,7 +871,7 @@ def HWWriteResGroup4 : SchedWriteRes<[HWPort5]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup4], (instregex "MMX_MOVQ2DQrr")>;
|
||||
def: InstRW<[HWWriteResGroup4], (instrs MMX_MOVQ2DQrr)>;
|
||||
|
||||
def HWWriteResGroup5 : SchedWriteRes<[HWPort6]> {
|
||||
let Latency = 1;
|
||||
@ -921,12 +917,12 @@ def HWWriteResGroup10 : SchedWriteRes<[HWPort0156]> {
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup10], (instrs CBW, CWDE, CDQE,
|
||||
CMC, STC)>;
|
||||
def: InstRW<[HWWriteResGroup10], (instregex "SGDT64m",
|
||||
"SIDT64m",
|
||||
"SMSW16m",
|
||||
"STRm",
|
||||
"SYSCALL")>;
|
||||
CMC, STC,
|
||||
SGDT64m,
|
||||
SIDT64m,
|
||||
SMSW16m,
|
||||
STRm,
|
||||
SYSCALL)>;
|
||||
|
||||
def HWWriteResGroup11 : SchedWriteRes<[HWPort0,HWPort23]> {
|
||||
let Latency = 6;
|
||||
@ -940,26 +936,23 @@ def HWWriteResGroup11_1 : SchedWriteRes<[HWPort0,HWPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup11_1], (instregex "(V?)CVTSS2SDrm",
|
||||
"VPSLLVQrm",
|
||||
"VPSRLVQrm")>;
|
||||
def: InstRW<[HWWriteResGroup11_1], (instrs VPSLLVQrm, VPSRLVQrm)>;
|
||||
def: InstRW<[HWWriteResGroup11_1], (instregex "(V?)CVTSS2SDrm")>;
|
||||
|
||||
def HWWriteResGroup11_2 : SchedWriteRes<[HWPort0,HWPort23]> {
|
||||
let Latency = 8;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup11_2], (instregex "VPSLLVQYrm",
|
||||
"VPSRLVQYrm")>;
|
||||
def: InstRW<[HWWriteResGroup11_2], (instrs VPSLLVQYrm, VPSRLVQYrm)>;
|
||||
|
||||
def HWWriteResGroup12 : SchedWriteRes<[HWPort1,HWPort23]> {
|
||||
let Latency = 8;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup12], (instregex "MMX_CVTPI2PSirm",
|
||||
"PDEP(32|64)rm",
|
||||
"PEXT(32|64)rm")>;
|
||||
def: InstRW<[HWWriteResGroup12], (instrs MMX_CVTPI2PSirm)>;
|
||||
def: InstRW<[HWWriteResGroup12], (instregex "P(DEP|EXT)(32|64)rm")>;
|
||||
|
||||
def HWWriteResGroup12_1 : SchedWriteRes<[HWPort1,HWPort0156,HWPort23]> {
|
||||
let Latency = 8;
|
||||
@ -992,17 +985,17 @@ def HWWriteResGroup13_1 : SchedWriteRes<[HWPort5,HWPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup13_1], (instregex "VPMOVSXBDYrm",
|
||||
"VPMOVSXBQYrm",
|
||||
"VPMOVSXWQYrm")>;
|
||||
def: InstRW<[HWWriteResGroup13_1], (instrs VPMOVSXBDYrm,
|
||||
VPMOVSXBQYrm,
|
||||
VPMOVSXWQYrm)>;
|
||||
|
||||
def HWWriteResGroup14 : SchedWriteRes<[HWPort6,HWPort23]> {
|
||||
let Latency = 6;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup14], (instregex "FARJMP64",
|
||||
"JMP(16|32|64)m")>;
|
||||
def: InstRW<[HWWriteResGroup14], (instrs FARJMP64)>;
|
||||
def: InstRW<[HWWriteResGroup14], (instregex "JMP(16|32|64)m")>;
|
||||
|
||||
def HWWriteResGroup15 : SchedWriteRes<[HWPort23,HWPort06]> {
|
||||
let Latency = 6;
|
||||
@ -1027,16 +1020,16 @@ def HWWriteResGroup17 : SchedWriteRes<[HWPort23,HWPort015]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup17], (instregex "VINSERTF128rm",
|
||||
"VINSERTI128rm",
|
||||
"VPBLENDDrmi")>;
|
||||
def: InstRW<[HWWriteResGroup17], (instrs VINSERTF128rm,
|
||||
VINSERTI128rm,
|
||||
VPBLENDDrmi)>;
|
||||
|
||||
def HWWriteResGroup17_2 : SchedWriteRes<[HWPort23,HWPort015]> {
|
||||
let Latency = 8;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup17_2], (instregex "VPBLENDDYrmi")>;
|
||||
def: InstRW<[HWWriteResGroup17_2], (instrs VPBLENDDYrmi)>;
|
||||
|
||||
def HWWriteResGroup18 : SchedWriteRes<[HWPort23,HWPort0156]> {
|
||||
let Latency = 6;
|
||||
@ -1079,10 +1072,9 @@ def HWWriteResGroup24 : SchedWriteRes<[HWPort4,HWPort237,HWPort0156]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup24], (instrs PUSH16r, PUSH32r, PUSH64r,
|
||||
def: InstRW<[HWWriteResGroup24], (instrs PUSH16r, PUSH32r, PUSH64r, PUSH64i8,
|
||||
STOSB, STOSL, STOSQ, STOSW)>;
|
||||
def: InstRW<[HWWriteResGroup24], (instregex "PUSH(16|32|64)rmr",
|
||||
"PUSH64i8")>;
|
||||
def: InstRW<[HWWriteResGroup24], (instregex "PUSH(16|32|64)rmr")>;
|
||||
|
||||
def HWWriteResGroup25 : SchedWriteRes<[HWPort4,HWPort23,HWPort237,HWPort06]> {
|
||||
let Latency = 7;
|
||||
@ -1149,7 +1141,7 @@ def HWWriteResGroup33 : SchedWriteRes<[HWPort01,HWPort015]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup33], (instregex "MMX_MOVDQ2Qrr")>;
|
||||
def: InstRW<[HWWriteResGroup33], (instrs MMX_MOVDQ2Qrr)>;
|
||||
|
||||
def HWWriteResGroup35 : SchedWriteRes<[HWPort06,HWPort0156]> {
|
||||
let Latency = 2;
|
||||
@ -1164,9 +1156,9 @@ def HWWriteResGroup36_2 : SchedWriteRes<[HWPort5,HWPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup36_2], (instregex "MMX_PACKSSDWirm",
|
||||
"MMX_PACKSSWBirm",
|
||||
"MMX_PACKUSWBirm")>;
|
||||
def: InstRW<[HWWriteResGroup36_2], (instrs MMX_PACKSSDWirm,
|
||||
MMX_PACKSSWBirm,
|
||||
MMX_PACKUSWBirm)>;
|
||||
|
||||
def HWWriteResGroup37 : SchedWriteRes<[HWPort23,HWPort0156]> {
|
||||
let Latency = 7;
|
||||
@ -1225,17 +1217,16 @@ def HWWriteResGroup48 : SchedWriteRes<[HWPort4,HWPort6,HWPort23,HWPort237,HWPort
|
||||
let NumMicroOps = 5;
|
||||
let ResourceCycles = [1,1,1,1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup48], (instregex "CALL(16|32|64)m",
|
||||
"FARCALL64")>;
|
||||
def: InstRW<[HWWriteResGroup48], (instregex "CALL(16|32|64)m")>;
|
||||
def: InstRW<[HWWriteResGroup48], (instrs FARCALL64)>;
|
||||
|
||||
def HWWriteResGroup50 : SchedWriteRes<[HWPort1]> {
|
||||
let Latency = 3;
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup50], (instregex "MMX_CVTPI2PSirr",
|
||||
"PDEP(32|64)rr",
|
||||
"PEXT(32|64)rr",
|
||||
def: InstRW<[HWWriteResGroup50], (instrs MMX_CVTPI2PSirr)>;
|
||||
def: InstRW<[HWWriteResGroup50], (instregex "P(DEP|EXT)(32|64)rr",
|
||||
"(V?)CVTDQ2PS(Y?)rr")>;
|
||||
|
||||
def HWWriteResGroup50_16i : SchedWriteRes<[HWPort1, HWPort0156]> {
|
||||
@ -1266,29 +1257,29 @@ def HWWriteResGroup52_1 : SchedWriteRes<[HWPort1,HWPort23]> {
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup52_1], (instregex "(ADD|SUB|SUBR)_F(32|64)m",
|
||||
"ILD_F(16|32|64)m",
|
||||
"VCVTDQ2PSYrm",
|
||||
"VCVTPS2DQYrm",
|
||||
"VCVTTPS2DQYrm")>;
|
||||
"ILD_F(16|32|64)m")>;
|
||||
def: InstRW<[HWWriteResGroup52_1], (instrs VCVTDQ2PSYrm,
|
||||
VCVTPS2DQYrm,
|
||||
VCVTTPS2DQYrm)>;
|
||||
|
||||
def HWWriteResGroup53_1 : SchedWriteRes<[HWPort5,HWPort23]> {
|
||||
let Latency = 9;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup53_1], (instregex "VPMOVSXBWYrm",
|
||||
"VPMOVSXDQYrm",
|
||||
"VPMOVSXWDYrm",
|
||||
"VPMOVZXWDYrm")>;
|
||||
def: InstRW<[HWWriteResGroup53_1], (instrs VPMOVSXBWYrm,
|
||||
VPMOVSXDQYrm,
|
||||
VPMOVSXWDYrm,
|
||||
VPMOVZXWDYrm)>;
|
||||
|
||||
def HWWriteResGroup57 : SchedWriteRes<[HWPort5,HWPort0156]> {
|
||||
let Latency = 3;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup57], (instregex "MMX_PACKSSDWirr",
|
||||
"MMX_PACKSSWBirr",
|
||||
"MMX_PACKUSWBirr")>;
|
||||
def: InstRW<[HWWriteResGroup57], (instrs MMX_PACKSSDWirr,
|
||||
MMX_PACKSSWBirr,
|
||||
MMX_PACKUSWBirr)>;
|
||||
|
||||
def HWWriteResGroup58 : SchedWriteRes<[HWPort6,HWPort0156]> {
|
||||
let Latency = 3;
|
||||
@ -1378,7 +1369,7 @@ def HWWriteResGroup71 : SchedWriteRes<[HWPort0,HWPort5]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup71], (instregex "VCVTPS2PDYrr")>;
|
||||
def: InstRW<[HWWriteResGroup71], (instrs VCVTPS2PDYrr)>;
|
||||
|
||||
def HWWriteResGroup72 : SchedWriteRes<[HWPort0,HWPort0156]> {
|
||||
let Latency = 4;
|
||||
@ -1392,10 +1383,12 @@ def HWWriteResGroup73 : SchedWriteRes<[HWPort1,HWPort5]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup73], (instregex "MMX_CVTPI2PDirr",
|
||||
"MMX_CVT(T?)PD2PIirr",
|
||||
"MMX_CVT(T?)PS2PIirr",
|
||||
"(V?)CVTDQ2PDrr",
|
||||
def: InstRW<[HWWriteResGroup73], (instrs MMX_CVTPI2PDirr,
|
||||
MMX_CVTPD2PIirr,
|
||||
MMX_CVTPS2PIirr,
|
||||
MMX_CVTTPD2PIirr,
|
||||
MMX_CVTTPS2PIirr)>;
|
||||
def: InstRW<[HWWriteResGroup73], (instregex "(V?)CVTDQ2PDrr",
|
||||
"(V?)CVTPD2PSrr",
|
||||
"(V?)CVTSD2SSrr",
|
||||
"(V?)CVTSI(64)?2SDrr",
|
||||
@ -1439,25 +1432,29 @@ def HWWriteResGroup77 : SchedWriteRes<[HWPort0,HWPort5,HWPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup77], (instregex "VCVTPS2PDYrm")>;
|
||||
def: InstRW<[HWWriteResGroup77], (instrs VCVTPS2PDYrm)>;
|
||||
|
||||
def HWWriteResGroup78 : SchedWriteRes<[HWPort1,HWPort5,HWPort23]> {
|
||||
let Latency = 10;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup78], (instregex "CVTPD2PSrm",
|
||||
"CVT(T?)PD2DQrm",
|
||||
"MMX_CVT(T?)PD2PIirm",
|
||||
"(V?)CVTDQ2PDrm")>;
|
||||
def: InstRW<[HWWriteResGroup78], (instrs CVTPD2PSrm,
|
||||
CVTPD2DQrm,
|
||||
CVTTPD2DQrm,
|
||||
MMX_CVTPD2PIirm,
|
||||
MMX_CVTTPD2PIirm,
|
||||
CVTDQ2PDrm,
|
||||
VCVTDQ2PDrm)>;
|
||||
|
||||
def HWWriteResGroup78_1 : SchedWriteRes<[HWPort1,HWPort5,HWPort23]> {
|
||||
let Latency = 9;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup78_1], (instregex "MMX_CVTPI2PDirm",
|
||||
"(V?)CVTSD2SSrm")>;
|
||||
def: InstRW<[HWWriteResGroup78_1], (instrs MMX_CVTPI2PDirm,
|
||||
CVTSD2SSrm,
|
||||
VCVTSD2SSrm)>;
|
||||
|
||||
def HWWriteResGroup79 : SchedWriteRes<[HWPort1,HWPort6,HWPort23]> {
|
||||
let Latency = 9;
|
||||
@ -1529,8 +1526,8 @@ def HWWriteResGroup91_3 : SchedWriteRes<[HWPort0,HWPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup91_3], (instregex "MUL_F(32|64)m",
|
||||
"VPCMPGTQYrm")>;
|
||||
def: InstRW<[HWWriteResGroup91_3], (instregex "MUL_F(32|64)m")>;
|
||||
def: InstRW<[HWWriteResGroup91_3], (instrs VPCMPGTQYrm)>;
|
||||
|
||||
def HWWriteResGroup93 : SchedWriteRes<[HWPort1,HWPort5]> {
|
||||
let Latency = 5;
|
||||
@ -1593,9 +1590,10 @@ def HWWriteResGroup102 : SchedWriteRes<[HWPort1,HWPort5]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup102], (instregex "VCVTDQ2PDYrr",
|
||||
"VCVTPD2PSYrr",
|
||||
"VCVT(T?)PD2DQYrr")>;
|
||||
def: InstRW<[HWWriteResGroup102], (instrs VCVTDQ2PDYrr,
|
||||
VCVTPD2PSYrr,
|
||||
VCVTPD2DQYrr,
|
||||
VCVTTPD2DQYrr)>;
|
||||
|
||||
def HWWriteResGroup103 : SchedWriteRes<[HWPort1,HWPort23]> {
|
||||
let Latency = 13;
|
||||
@ -1609,7 +1607,7 @@ def HWWriteResGroup104 : SchedWriteRes<[HWPort1,HWPort5,HWPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup104], (instregex "VCVTDQ2PDYrm")>;
|
||||
def: InstRW<[HWWriteResGroup104], (instrs VCVTDQ2PDYrm)>;
|
||||
|
||||
def HWWriteResGroup107 : SchedWriteRes<[HWPort1,HWPort6,HWPort06,HWPort0156]> {
|
||||
let Latency = 6;
|
||||
@ -1659,7 +1657,7 @@ def HWWriteResGroup130 : SchedWriteRes<[HWPort1,HWPort06,HWPort15,HWPort0156]> {
|
||||
let NumMicroOps = 9;
|
||||
let ResourceCycles = [1,4,1,3];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup130], (instregex "RCL8rCL")>;
|
||||
def: InstRW<[HWWriteResGroup130], (instrs RCL8rCL)>;
|
||||
|
||||
def HWWriteResGroup131 : SchedWriteRes<[HWPort06,HWPort0156]> {
|
||||
let Latency = 11;
|
||||
@ -1687,14 +1685,14 @@ def HWWriteResGroup142 : SchedWriteRes<[HWPort1,HWPort06,HWPort15,HWPort0156]> {
|
||||
let NumMicroOps = 10;
|
||||
let ResourceCycles = [2,3,1,4];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup142], (instregex "RCR8rCL")>;
|
||||
def: InstRW<[HWWriteResGroup142], (instrs RCR8rCL)>;
|
||||
|
||||
def HWWriteResGroup143 : SchedWriteRes<[HWPort23,HWPort0156]> {
|
||||
let Latency = 19;
|
||||
let NumMicroOps = 15;
|
||||
let ResourceCycles = [1,14];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup143], (instregex "POPF16")>;
|
||||
def: InstRW<[HWWriteResGroup143], (instrs POPF16)>;
|
||||
|
||||
def HWWriteResGroup144 : SchedWriteRes<[HWPort4,HWPort5,HWPort6,HWPort23,HWPort237,HWPort06,HWPort0156]> {
|
||||
let Latency = 21;
|
||||
|
@ -578,10 +578,14 @@ def SBWriteResGroup5 : SchedWriteRes<[SBPort15]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup5], (instregex "MMX_PABS(B|D|W)rr",
|
||||
"MMX_PADDQirr",
|
||||
"MMX_PALIGNRrri",
|
||||
"MMX_PSIGN(B|D|W)rr")>;
|
||||
def: InstRW<[SBWriteResGroup5], (instrs MMX_PABSBrr,
|
||||
MMX_PABSDrr,
|
||||
MMX_PABSWrr,
|
||||
MMX_PADDQirr,
|
||||
MMX_PALIGNRrri,
|
||||
MMX_PSIGNBrr,
|
||||
MMX_PSIGNDrr,
|
||||
MMX_PSIGNWrr)>;
|
||||
|
||||
def SBWriteResGroup9 : SchedWriteRes<[SBPort05]> {
|
||||
let Latency = 2;
|
||||
@ -607,10 +611,7 @@ def SBWriteResGroup12 : SchedWriteRes<[SBPort0,SBPort1]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup12], (instregex "(V?)COMISDrr",
|
||||
"(V?)COMISSrr",
|
||||
"(V?)UCOMISDrr",
|
||||
"(V?)UCOMISSrr")>;
|
||||
def: InstRW<[SBWriteResGroup12], (instregex "(V?)(U?)COMI(SD|SS)rr")>;
|
||||
|
||||
def SBWriteResGroup15 : SchedWriteRes<[SBPort0,SBPort015]> {
|
||||
let Latency = 2;
|
||||
@ -625,15 +626,15 @@ def SBWriteResGroup18 : SchedWriteRes<[SBPort5,SBPort015]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup18], (instrs JCXZ, JECXZ, JRCXZ)>;
|
||||
def: InstRW<[SBWriteResGroup18], (instregex "MMX_MOVDQ2Qrr")>;
|
||||
def: InstRW<[SBWriteResGroup18], (instrs JCXZ, JECXZ, JRCXZ,
|
||||
MMX_MOVDQ2Qrr)>;
|
||||
|
||||
def SBWriteResGroup21 : SchedWriteRes<[SBPort1]> {
|
||||
let Latency = 3;
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup21], (instregex "PUSHFS64")>;
|
||||
def: InstRW<[SBWriteResGroup21], (instrs PUSHFS64)>;
|
||||
|
||||
def SBWriteResGroup21_16i : SchedWriteRes<[SBPort1, SBPort015]> {
|
||||
let Latency = 4;
|
||||
@ -700,7 +701,7 @@ def SBWriteResGroup29 : SchedWriteRes<[SBPort1,SBPort015]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup29], (instregex "MOV64sr")>;
|
||||
def: InstRW<[SBWriteResGroup29], (instrs MOV64sr)>;
|
||||
|
||||
def SBWriteResGroup29_2 : SchedWriteRes<[SBPort5,SBPort015]> {
|
||||
let Latency = 4;
|
||||
@ -743,8 +744,8 @@ def SBWriteResGroup35_2 : SchedWriteRes<[SBPort1,SBPort4,SBPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup35_2], (instregex "ISTT_FP(16|32|64)m",
|
||||
"PUSHGS64")>;
|
||||
def: InstRW<[SBWriteResGroup35_2], (instrs PUSHGS64)>;
|
||||
def: InstRW<[SBWriteResGroup35_2], (instregex "ISTT_FP(16|32|64)m")>;
|
||||
|
||||
def SBWriteResGroup36 : SchedWriteRes<[SBPort4,SBPort5,SBPort23]> {
|
||||
let Latency = 5;
|
||||
@ -810,9 +811,9 @@ def SBWriteResGroup48 : SchedWriteRes<[SBPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup48], (instregex "MMX_MOVD64from64rm",
|
||||
"POP(16|32|64)r",
|
||||
"VBROADCASTSSrm",
|
||||
def: InstRW<[SBWriteResGroup48], (instrs MMX_MOVD64from64rm,
|
||||
VBROADCASTSSrm)>;
|
||||
def: InstRW<[SBWriteResGroup48], (instregex "POP(16|32|64)r",
|
||||
"(V?)MOV64toPQIrm",
|
||||
"(V?)MOVDDUPrm",
|
||||
"(V?)MOVDI2PDIrm",
|
||||
@ -827,7 +828,7 @@ def SBWriteResGroup49 : SchedWriteRes<[SBPort5,SBPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup49], (instregex "MOV16sm")>;
|
||||
def: InstRW<[SBWriteResGroup49], (instrs MOV16sm)>;
|
||||
|
||||
def SBWriteResGroup50 : SchedWriteRes<[SBPort23,SBPort05]> {
|
||||
let Latency = 6;
|
||||
@ -841,9 +842,13 @@ def SBWriteResGroup51 : SchedWriteRes<[SBPort23,SBPort15]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup51], (instregex "MMX_PABS(B|D|W)rm",
|
||||
"MMX_PALIGNRrmi",
|
||||
"MMX_PSIGN(B|D|W)rm")>;
|
||||
def: InstRW<[SBWriteResGroup51], (instrs MMX_PABSBrm,
|
||||
MMX_PABSDrm,
|
||||
MMX_PABSWrm,
|
||||
MMX_PALIGNRrmi,
|
||||
MMX_PSIGNBrm,
|
||||
MMX_PSIGNDrm,
|
||||
MMX_PSIGNWrm)>;
|
||||
|
||||
def SBWriteResGroup52 : SchedWriteRes<[SBPort23,SBPort015]> {
|
||||
let Latency = 6;
|
||||
@ -865,11 +870,11 @@ def SBWriteResGroup54 : SchedWriteRes<[SBPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup54], (instregex "VBROADCASTSDYrm",
|
||||
"VBROADCASTSSYrm",
|
||||
"VMOVDDUPYrm",
|
||||
"VMOVSHDUPYrm",
|
||||
"VMOVSLDUPYrm")>;
|
||||
def: InstRW<[SBWriteResGroup54], (instrs VBROADCASTSDYrm,
|
||||
VBROADCASTSSYrm,
|
||||
VMOVDDUPYrm,
|
||||
VMOVSHDUPYrm,
|
||||
VMOVSLDUPYrm)>;
|
||||
|
||||
def SBWriteResGroup58 : SchedWriteRes<[SBPort23,SBPort05]> {
|
||||
let Latency = 7;
|
||||
@ -883,14 +888,14 @@ def SBWriteResGroup59 : SchedWriteRes<[SBPort23,SBPort15]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup59], (instregex "MMX_PADDQirm")>;
|
||||
def: InstRW<[SBWriteResGroup59], (instrs MMX_PADDQirm)>;
|
||||
|
||||
def SBWriteResGroup62 : SchedWriteRes<[SBPort5,SBPort23]> {
|
||||
let Latency = 7;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2,1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup62], (instregex "VER(R|W)m")>;
|
||||
def: InstRW<[SBWriteResGroup62], (instrs VERRm, VERWm)>;
|
||||
|
||||
def SBWriteResGroup63 : SchedWriteRes<[SBPort23,SBPort015]> {
|
||||
let Latency = 7;
|
||||
@ -1000,8 +1005,7 @@ def SBWriteResGroup93 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup93], (instregex "CVT(T?)SD2SI(64)?rm",
|
||||
"CVT(T?)SS2SI(64)?rm")>;
|
||||
def: InstRW<[SBWriteResGroup93], (instregex "CVT(T?)(SD|SS)2SI(64)?rm")>;
|
||||
|
||||
def SBWriteResGroup93_1 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
|
||||
let Latency = 9;
|
||||
@ -1077,10 +1081,7 @@ def SBWriteResGroup100 : SchedWriteRes<[SBPort4,SBPort5,SBPort23,SBPort05,SBPort
|
||||
let NumMicroOps = 6;
|
||||
let ResourceCycles = [1,1,2,1,1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup100], (instregex "BT(16|32|64)mr",
|
||||
"BTC(16|32|64)mr",
|
||||
"BTR(16|32|64)mr",
|
||||
"BTS(16|32|64)mr")>;
|
||||
def: InstRW<[SBWriteResGroup100], (instregex "BT(C|R|S)?(16|32|64)mr")>;
|
||||
|
||||
def SBWriteResGroup101 : SchedWriteRes<[SBPort1,SBPort23]> {
|
||||
let Latency = 10;
|
||||
|
@ -633,36 +633,35 @@ def SKLWriteResGroup10 : SchedWriteRes<[SKLPort0156]> {
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup10], (instrs CBW, CWDE, CDQE,
|
||||
CMC, STC)>;
|
||||
def: InstRW<[SKLWriteResGroup10], (instregex "SGDT64m",
|
||||
"SIDT64m",
|
||||
"SMSW16m",
|
||||
"STRm",
|
||||
"SYSCALL")>;
|
||||
CMC, STC,
|
||||
SGDT64m,
|
||||
SIDT64m,
|
||||
SMSW16m,
|
||||
STRm,
|
||||
SYSCALL)>;
|
||||
|
||||
def SKLWriteResGroup11 : SchedWriteRes<[SKLPort4,SKLPort237]> {
|
||||
let Latency = 1;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup11], (instregex "FBSTPm",
|
||||
"ST_FP(32|64|80)m",
|
||||
"VMPTRSTm")>;
|
||||
def: InstRW<[SKLWriteResGroup11], (instrs FBSTPm, VMPTRSTm)>;
|
||||
def: InstRW<[SKLWriteResGroup11], (instregex "ST_FP(32|64|80)m")>;
|
||||
|
||||
def SKLWriteResGroup13 : SchedWriteRes<[SKLPort5]> {
|
||||
let Latency = 2;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [2];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup13], (instregex "MMX_MOVQ2DQrr")>;
|
||||
def: InstRW<[SKLWriteResGroup13], (instrs MMX_MOVQ2DQrr)>;
|
||||
|
||||
def SKLWriteResGroup14 : SchedWriteRes<[SKLPort05]> {
|
||||
let Latency = 2;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [2];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup14], (instrs FDECSTP)>;
|
||||
def: InstRW<[SKLWriteResGroup14], (instregex "MMX_MOVDQ2Qrr")>;
|
||||
def: InstRW<[SKLWriteResGroup14], (instrs FDECSTP,
|
||||
MMX_MOVDQ2Qrr)>;
|
||||
|
||||
def SKLWriteResGroup15 : SchedWriteRes<[SKLPort06]> {
|
||||
let Latency = 2;
|
||||
@ -701,11 +700,10 @@ def SKLWriteResGroup23 : SchedWriteRes<[SKLPort06,SKLPort0156]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup23], (instrs CWD)>;
|
||||
def: InstRW<[SKLWriteResGroup23], (instrs JCXZ, JECXZ, JRCXZ)>;
|
||||
def: InstRW<[SKLWriteResGroup23], (instregex "ADC8i8",
|
||||
"ADC8ri",
|
||||
"SBB8i8",
|
||||
def: InstRW<[SKLWriteResGroup23], (instrs CWD,
|
||||
JCXZ, JECXZ, JRCXZ,
|
||||
ADC8i8, SBB8i8)>;
|
||||
def: InstRW<[SKLWriteResGroup23], (instregex "ADC8ri",
|
||||
"SBB8ri")>;
|
||||
|
||||
def SKLWriteResGroup25 : SchedWriteRes<[SKLPort4,SKLPort6,SKLPort237]> {
|
||||
@ -727,10 +725,9 @@ def SKLWriteResGroup28 : SchedWriteRes<[SKLPort4,SKLPort237,SKLPort0156]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup28], (instrs PUSH16r, PUSH32r, PUSH64r,
|
||||
def: InstRW<[SKLWriteResGroup28], (instrs PUSH16r, PUSH32r, PUSH64r, PUSH64i8,
|
||||
STOSB, STOSL, STOSQ, STOSW)>;
|
||||
def: InstRW<[SKLWriteResGroup28], (instregex "PUSH(16|32|64)rmr",
|
||||
"PUSH64i8")>;
|
||||
def: InstRW<[SKLWriteResGroup28], (instregex "PUSH(16|32|64)rmr")>;
|
||||
|
||||
def SKLWriteResGroup29 : SchedWriteRes<[SKLPort1]> {
|
||||
let Latency = 3;
|
||||
@ -753,8 +750,7 @@ def SKLWriteResGroup30 : SchedWriteRes<[SKLPort5]> {
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup30], (instregex "(ADD|SUB|SUBR)_(FPrST0|FST0r|FrST0)",
|
||||
"VPBROADCASTBrr",
|
||||
"VPBROADCASTWrr",
|
||||
"VPBROADCAST(B|W)rr",
|
||||
"(V?)PCMPGTQ(Y?)rr")>;
|
||||
|
||||
def SKLWriteResGroup32 : SchedWriteRes<[SKLPort0,SKLPort0156]> {
|
||||
@ -795,9 +791,9 @@ def SKLWriteResGroup39 : SchedWriteRes<[SKLPort5,SKLPort0156]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup39], (instregex "MMX_PACKSSDWirr",
|
||||
"MMX_PACKSSWBirr",
|
||||
"MMX_PACKUSWBirr")>;
|
||||
def: InstRW<[SKLWriteResGroup39], (instrs MMX_PACKSSDWirr,
|
||||
MMX_PACKSSWBirr,
|
||||
MMX_PACKUSWBirr)>;
|
||||
|
||||
def SKLWriteResGroup40 : SchedWriteRes<[SKLPort6,SKLPort0156]> {
|
||||
let Latency = 3;
|
||||
@ -919,11 +915,8 @@ def SKLWriteResGroup58 : SchedWriteRes<[SKLPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup58], (instregex "MOVSX(16|32|64)rm16",
|
||||
"MOVSX(16|32|64)rm32",
|
||||
"MOVSX(16|32|64)rm8",
|
||||
"MOVZX(16|32|64)rm16",
|
||||
"MOVZX(16|32|64)rm8",
|
||||
def: InstRW<[SKLWriteResGroup58], (instregex "MOVSX(16|32|64)rm(8|16|32)",
|
||||
"MOVZX(16|32|64)rm(8|16)",
|
||||
"(V?)MOVDDUPrm")>; // TODO: Should this be SKLWriteResGroup67?
|
||||
|
||||
def SKLWriteResGroup59 : SchedWriteRes<[SKLPort0,SKLPort5]> {
|
||||
@ -931,8 +924,9 @@ def SKLWriteResGroup59 : SchedWriteRes<[SKLPort0,SKLPort5]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup59], (instregex "MMX_CVTPI2PDirr",
|
||||
"(V?)CVTDQ2PDrr")>;
|
||||
def: InstRW<[SKLWriteResGroup59], (instrs MMX_CVTPI2PDirr,
|
||||
CVTDQ2PDrr,
|
||||
VCVTDQ2PDrr)>;
|
||||
|
||||
def SKLWriteResGroup60 : SchedWriteRes<[SKLPort5,SKLPort015]> {
|
||||
let Latency = 5;
|
||||
@ -990,44 +984,44 @@ def SKLWriteResGroup67 : SchedWriteRes<[SKLPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup67], (instregex "VBROADCASTSSrm",
|
||||
"(V?)MOVSHDUPrm",
|
||||
"(V?)MOVSLDUPrm",
|
||||
"VPBROADCASTDrm",
|
||||
"VPBROADCASTQrm")>;
|
||||
def: InstRW<[SKLWriteResGroup67], (instrs VBROADCASTSSrm,
|
||||
VPBROADCASTDrm,
|
||||
VPBROADCASTQrm)>;
|
||||
def: InstRW<[SKLWriteResGroup67], (instregex "(V?)MOVSHDUPrm",
|
||||
"(V?)MOVSLDUPrm")>;
|
||||
|
||||
def SKLWriteResGroup68 : SchedWriteRes<[SKLPort0]> {
|
||||
let Latency = 6;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [2];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup68], (instregex "MMX_CVTPI2PSirr")>;
|
||||
def: InstRW<[SKLWriteResGroup68], (instrs MMX_CVTPI2PSirr)>;
|
||||
|
||||
def SKLWriteResGroup69 : SchedWriteRes<[SKLPort0,SKLPort23]> {
|
||||
let Latency = 6;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PADDSBirm",
|
||||
"MMX_PADDSWirm",
|
||||
"MMX_PADDUSBirm",
|
||||
"MMX_PADDUSWirm",
|
||||
"MMX_PAVGBirm",
|
||||
"MMX_PAVGWirm",
|
||||
"MMX_PCMPEQBirm",
|
||||
"MMX_PCMPEQDirm",
|
||||
"MMX_PCMPEQWirm",
|
||||
"MMX_PCMPGTBirm",
|
||||
"MMX_PCMPGTDirm",
|
||||
"MMX_PCMPGTWirm",
|
||||
"MMX_PMAXSWirm",
|
||||
"MMX_PMAXUBirm",
|
||||
"MMX_PMINSWirm",
|
||||
"MMX_PMINUBirm",
|
||||
"MMX_PSUBSBirm",
|
||||
"MMX_PSUBSWirm",
|
||||
"MMX_PSUBUSBirm",
|
||||
"MMX_PSUBUSWirm")>;
|
||||
def: InstRW<[SKLWriteResGroup69], (instrs MMX_PADDSBirm,
|
||||
MMX_PADDSWirm,
|
||||
MMX_PADDUSBirm,
|
||||
MMX_PADDUSWirm,
|
||||
MMX_PAVGBirm,
|
||||
MMX_PAVGWirm,
|
||||
MMX_PCMPEQBirm,
|
||||
MMX_PCMPEQDirm,
|
||||
MMX_PCMPEQWirm,
|
||||
MMX_PCMPGTBirm,
|
||||
MMX_PCMPGTDirm,
|
||||
MMX_PCMPGTWirm,
|
||||
MMX_PMAXSWirm,
|
||||
MMX_PMAXUBirm,
|
||||
MMX_PMINSWirm,
|
||||
MMX_PMINUBirm,
|
||||
MMX_PSUBSBirm,
|
||||
MMX_PSUBSWirm,
|
||||
MMX_PSUBUSBirm,
|
||||
MMX_PSUBUSWirm)>;
|
||||
|
||||
def SKLWriteResGroup70 : SchedWriteRes<[SKLPort0,SKLPort01]> {
|
||||
let Latency = 6;
|
||||
@ -1042,8 +1036,8 @@ def SKLWriteResGroup72 : SchedWriteRes<[SKLPort6,SKLPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup72], (instregex "FARJMP64",
|
||||
"JMP(16|32|64)m")>;
|
||||
def: InstRW<[SKLWriteResGroup72], (instrs FARJMP64)>;
|
||||
def: InstRW<[SKLWriteResGroup72], (instregex "JMP(16|32|64)m")>;
|
||||
|
||||
def SKLWriteResGroup74 : SchedWriteRes<[SKLPort23,SKLPort06]> {
|
||||
let Latency = 6;
|
||||
@ -1117,23 +1111,23 @@ def SKLWriteResGroup85 : SchedWriteRes<[SKLPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup85], (instregex "LD_F(32|64|80)m",
|
||||
"VBROADCASTF128",
|
||||
"VBROADCASTI128",
|
||||
"VBROADCASTSDYrm",
|
||||
"VBROADCASTSSYrm",
|
||||
"VMOVDDUPYrm",
|
||||
"VMOVSHDUPYrm",
|
||||
"VMOVSLDUPYrm",
|
||||
"VPBROADCASTDYrm",
|
||||
"VPBROADCASTQYrm")>;
|
||||
def: InstRW<[SKLWriteResGroup85], (instregex "LD_F(32|64|80)m")>;
|
||||
def: InstRW<[SKLWriteResGroup85], (instrs VBROADCASTF128,
|
||||
VBROADCASTI128,
|
||||
VBROADCASTSDYrm,
|
||||
VBROADCASTSSYrm,
|
||||
VMOVDDUPYrm,
|
||||
VMOVSHDUPYrm,
|
||||
VMOVSLDUPYrm,
|
||||
VPBROADCASTDYrm,
|
||||
VPBROADCASTQYrm)>;
|
||||
|
||||
def SKLWriteResGroup86 : SchedWriteRes<[SKLPort0,SKLPort5]> {
|
||||
let Latency = 7;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup86], (instregex "VCVTDQ2PDYrr")>;
|
||||
def: InstRW<[SKLWriteResGroup86], (instrs VCVTDQ2PDYrr)>;
|
||||
|
||||
def SKLWriteResGroup88 : SchedWriteRes<[SKLPort5,SKLPort23]> {
|
||||
let Latency = 6;
|
||||
@ -1152,19 +1146,20 @@ def SKLWriteResGroup89 : SchedWriteRes<[SKLPort5,SKLPort01]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup89], (instregex "VCVTPD2PSYrr",
|
||||
"VCVTPS2PDYrr",
|
||||
"VCVT(T?)PD2DQYrr")>;
|
||||
def: InstRW<[SKLWriteResGroup89], (instrs VCVTPD2PSYrr,
|
||||
VCVTPS2PDYrr,
|
||||
VCVTPD2DQYrr,
|
||||
VCVTTPD2DQYrr)>;
|
||||
|
||||
def SKLWriteResGroup91 : SchedWriteRes<[SKLPort23,SKLPort015]> {
|
||||
let Latency = 7;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup91], (instregex "(V?)INSERTF128rm",
|
||||
"(V?)INSERTI128rm",
|
||||
"(V?)PADD(B|D|Q|W)rm",
|
||||
"(V?)PBLENDDrmi",
|
||||
def: InstRW<[SKLWriteResGroup91], (instrs VINSERTF128rm,
|
||||
VINSERTI128rm,
|
||||
VPBLENDDrmi)>;
|
||||
def: InstRW<[SKLWriteResGroup91], (instregex "(V?)PADD(B|D|Q|W)rm",
|
||||
"(V?)PSUB(B|D|Q|W)rm")>;
|
||||
|
||||
def SKLWriteResGroup92 : SchedWriteRes<[SKLPort5,SKLPort23]> {
|
||||
@ -1172,9 +1167,9 @@ def SKLWriteResGroup92 : SchedWriteRes<[SKLPort5,SKLPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup92], (instregex "MMX_PACKSSDWirm",
|
||||
"MMX_PACKSSWBirm",
|
||||
"MMX_PACKUSWBirm")>;
|
||||
def: InstRW<[SKLWriteResGroup92], (instrs MMX_PACKSSDWirm,
|
||||
MMX_PACKSSWBirm,
|
||||
MMX_PACKUSWBirm)>;
|
||||
|
||||
def SKLWriteResGroup94 : SchedWriteRes<[SKLPort23,SKLPort0156]> {
|
||||
let Latency = 7;
|
||||
@ -1225,8 +1220,8 @@ def SKLWriteResGroup102 : SchedWriteRes<[SKLPort4,SKLPort6,SKLPort23,SKLPort237,
|
||||
let NumMicroOps = 5;
|
||||
let ResourceCycles = [1,1,1,1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup102], (instregex "CALL(16|32|64)m",
|
||||
"FARCALL64")>;
|
||||
def: InstRW<[SKLWriteResGroup102], (instregex "CALL(16|32|64)m")>;
|
||||
def: InstRW<[SKLWriteResGroup102], (instrs FARCALL64)>;
|
||||
|
||||
def SKLWriteResGroup103 : SchedWriteRes<[SKLPort6,SKLPort06,SKLPort15,SKLPort0156]> {
|
||||
let Latency = 7;
|
||||
@ -1262,20 +1257,20 @@ def SKLWriteResGroup108 : SchedWriteRes<[SKLPort5,SKLPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup108], (instregex "FCOM(P?)(32|64)m",
|
||||
"VPBROADCASTBYrm",
|
||||
"VPBROADCASTWYrm",
|
||||
"VPMOVSXBDYrm",
|
||||
"VPMOVSXBQYrm",
|
||||
"VPMOVSXWQYrm")>;
|
||||
def: InstRW<[SKLWriteResGroup108], (instregex "FCOM(P?)(32|64)m")>;
|
||||
def: InstRW<[SKLWriteResGroup108], (instrs VPBROADCASTBYrm,
|
||||
VPBROADCASTWYrm,
|
||||
VPMOVSXBDYrm,
|
||||
VPMOVSXBQYrm,
|
||||
VPMOVSXWQYrm)>;
|
||||
|
||||
def SKLWriteResGroup110 : SchedWriteRes<[SKLPort23,SKLPort015]> {
|
||||
let Latency = 8;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup110], (instrs VPBLENDDYrmi)>;
|
||||
def: InstRW<[SKLWriteResGroup110], (instregex "VPADD(B|D|Q|W)Yrm",
|
||||
"VPBLENDDYrmi",
|
||||
"VPSUB(B|D|Q|W)Yrm")>;
|
||||
|
||||
def SKLWriteResGroup112 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
|
||||
@ -1323,18 +1318,19 @@ def SKLWriteResGroup120 : SchedWriteRes<[SKLPort0,SKLPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup120], (instregex "MMX_CVTPI2PSirm")>;
|
||||
def: InstRW<[SKLWriteResGroup120], (instrs MMX_CVTPI2PSirm)>;
|
||||
|
||||
def SKLWriteResGroup121 : SchedWriteRes<[SKLPort5,SKLPort23]> {
|
||||
let Latency = 9;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup121], (instregex "(V?)PCMPGTQrm",
|
||||
"VPMOVSXBWYrm",
|
||||
"VPMOVSXDQYrm",
|
||||
"VPMOVSXWDYrm",
|
||||
"VPMOVZXWDYrm")>;
|
||||
def: InstRW<[SKLWriteResGroup121], (instrs PCMPGTQrm,
|
||||
VPCMPGTQrm,
|
||||
VPMOVSXBWYrm,
|
||||
VPMOVSXDQYrm,
|
||||
VPMOVSXWDYrm,
|
||||
VPMOVZXWDYrm)>;
|
||||
|
||||
def SKLWriteResGroup123 : SchedWriteRes<[SKLPort23,SKLPort01]> {
|
||||
let Latency = 9;
|
||||
@ -1373,8 +1369,8 @@ def SKLWriteResGroup133 : SchedWriteRes<[SKLPort5,SKLPort23]> {
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup133], (instregex "(ADD|SUB|SUBR)_F(32|64)m",
|
||||
"ILD_F(16|32|64)m",
|
||||
"VPCMPGTQYrm")>;
|
||||
"ILD_F(16|32|64)m")>;
|
||||
def: InstRW<[SKLWriteResGroup133], (instrs VPCMPGTQYrm)>;
|
||||
|
||||
def SKLWriteResGroup134 : SchedWriteRes<[SKLPort01,SKLPort23]> {
|
||||
let Latency = 10;
|
||||
@ -1391,7 +1387,7 @@ def SKLWriteResGroup138 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup138], (instregex "MMX_CVTPI2PDirm")>;
|
||||
def: InstRW<[SKLWriteResGroup138], (instrs MMX_CVTPI2PDirm)>;
|
||||
|
||||
def SKLWriteResGroup139 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort01]> {
|
||||
let Latency = 10;
|
||||
@ -1405,8 +1401,8 @@ def SKLWriteResGroup140 : SchedWriteRes<[SKLPort5,SKLPort01,SKLPort23]> {
|
||||
let NumMicroOps = 4;
|
||||
let ResourceCycles = [2,1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup140], (instregex "VPHADDSWYrm",
|
||||
"VPHSUBSWYrm")>;
|
||||
def: InstRW<[SKLWriteResGroup140], (instrs VPHADDSWYrm,
|
||||
VPHSUBSWYrm)>;
|
||||
|
||||
def SKLWriteResGroup142 : SchedWriteRes<[SKLPort1,SKLPort23,SKLPort06,SKLPort0156]> {
|
||||
let Latency = 9;
|
||||
@ -1441,9 +1437,10 @@ def SKLWriteResGroup147 : SchedWriteRes<[SKLPort01,SKLPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup147], (instregex "VCVTDQ2PSYrm",
|
||||
"VCVTPS2PDYrm",
|
||||
"VCVT(T?)PS2DQYrm")>;
|
||||
def: InstRW<[SKLWriteResGroup147], (instrs VCVTDQ2PSYrm,
|
||||
VCVTPS2PDYrm,
|
||||
VCVTPS2DQYrm,
|
||||
VCVTTPS2DQYrm)>;
|
||||
|
||||
def SKLWriteResGroup149 : SchedWriteRes<[SKLPort5,SKLPort23]> {
|
||||
let Latency = 11;
|
||||
@ -1474,9 +1471,11 @@ def SKLWriteResGroup152 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort01]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup152], (instregex "CVTPD2PSrm",
|
||||
"CVT(T?)PD2DQrm",
|
||||
"MMX_CVT(T?)PD2PIirm")>;
|
||||
def: InstRW<[SKLWriteResGroup152], (instrs CVTPD2PSrm,
|
||||
CVTPD2DQrm,
|
||||
CVTTPD2DQrm,
|
||||
MMX_CVTPD2PIirm,
|
||||
MMX_CVTTPD2PIirm)>;
|
||||
|
||||
def SKLWriteResGroup154 : SchedWriteRes<[SKLPort1,SKLPort06,SKLPort0156]> {
|
||||
let Latency = 11;
|
||||
@ -1491,7 +1490,7 @@ def SKLWriteResGroup155 : SchedWriteRes<[SKLPort1,SKLPort06,SKLPort15,SKLPort015
|
||||
let NumMicroOps = 9;
|
||||
let ResourceCycles = [1,5,1,2];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup155], (instregex "RCL8rCL")>;
|
||||
def: InstRW<[SKLWriteResGroup155], (instrs RCL8rCL)>;
|
||||
|
||||
def SKLWriteResGroup156 : SchedWriteRes<[SKLPort06,SKLPort0156]> {
|
||||
let Latency = 11;
|
||||
@ -1519,7 +1518,7 @@ def SKLWriteResGroup163 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup163], (instregex "VCVTDQ2PDYrm")>;
|
||||
def: InstRW<[SKLWriteResGroup163], (instrs VCVTDQ2PDYrm)>;
|
||||
|
||||
def SKLWriteResGroup166 : SchedWriteRes<[SKLPort0,SKLFPDivider]> {
|
||||
let Latency = 14;
|
||||
@ -1548,7 +1547,7 @@ def SKLWriteResGroup170 : SchedWriteRes<[SKLPort1,SKLPort06,SKLPort15,SKLPort015
|
||||
let NumMicroOps = 10;
|
||||
let ResourceCycles = [2,4,1,3];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup170], (instregex "RCR8rCL")>;
|
||||
def: InstRW<[SKLWriteResGroup170], (instrs RCR8rCL)>;
|
||||
|
||||
def SKLWriteResGroup171 : SchedWriteRes<[SKLPort0]> {
|
||||
let Latency = 15;
|
||||
|
@ -656,37 +656,36 @@ def SKXWriteResGroup10 : SchedWriteRes<[SKXPort0156]> {
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup10], (instrs CBW, CWDE, CDQE,
|
||||
CMC, STC)>;
|
||||
def: InstRW<[SKXWriteResGroup10], (instregex "SGDT64m",
|
||||
"SIDT64m",
|
||||
"SMSW16m",
|
||||
"STRm",
|
||||
"SYSCALL")>;
|
||||
CMC, STC,
|
||||
SGDT64m,
|
||||
SIDT64m,
|
||||
SMSW16m,
|
||||
STRm,
|
||||
SYSCALL)>;
|
||||
|
||||
def SKXWriteResGroup11 : SchedWriteRes<[SKXPort4,SKXPort237]> {
|
||||
let Latency = 1;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup11], (instregex "FBSTPm",
|
||||
"KMOV(B|D|Q|W)mk",
|
||||
"ST_FP(32|64|80)m",
|
||||
"VMPTRSTm")>;
|
||||
def: InstRW<[SKXWriteResGroup11], (instrs FBSTPm, VMPTRSTm)>;
|
||||
def: InstRW<[SKXWriteResGroup11], (instregex "KMOV(B|D|Q|W)mk",
|
||||
"ST_FP(32|64|80)m")>;
|
||||
|
||||
def SKXWriteResGroup13 : SchedWriteRes<[SKXPort5]> {
|
||||
let Latency = 2;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [2];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup13], (instregex "MMX_MOVQ2DQrr")>;
|
||||
def: InstRW<[SKXWriteResGroup13], (instrs MMX_MOVQ2DQrr)>;
|
||||
|
||||
def SKXWriteResGroup14 : SchedWriteRes<[SKXPort05]> {
|
||||
let Latency = 2;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [2];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup14], (instrs FDECSTP)>;
|
||||
def: InstRW<[SKXWriteResGroup14], (instregex "MMX_MOVDQ2Qrr")>;
|
||||
def: InstRW<[SKXWriteResGroup14], (instrs FDECSTP,
|
||||
MMX_MOVDQ2Qrr)>;
|
||||
|
||||
def SKXWriteResGroup15 : SchedWriteRes<[SKXPort06]> {
|
||||
let Latency = 2;
|
||||
@ -725,11 +724,10 @@ def SKXWriteResGroup23 : SchedWriteRes<[SKXPort06,SKXPort0156]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup23], (instrs CWD)>;
|
||||
def: InstRW<[SKXWriteResGroup23], (instrs JCXZ, JECXZ, JRCXZ)>;
|
||||
def: InstRW<[SKXWriteResGroup23], (instregex "ADC8i8",
|
||||
"ADC8ri",
|
||||
"SBB8i8",
|
||||
def: InstRW<[SKXWriteResGroup23], (instrs CWD,
|
||||
JCXZ, JECXZ, JRCXZ,
|
||||
ADC8i8, SBB8i8)>;
|
||||
def: InstRW<[SKXWriteResGroup23], (instregex "ADC8ri",
|
||||
"SBB8ri")>;
|
||||
|
||||
def SKXWriteResGroup25 : SchedWriteRes<[SKXPort4,SKXPort6,SKXPort237]> {
|
||||
@ -751,10 +749,9 @@ def SKXWriteResGroup28 : SchedWriteRes<[SKXPort4,SKXPort237,SKXPort0156]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup28], (instrs PUSH16r, PUSH32r, PUSH64r,
|
||||
def: InstRW<[SKXWriteResGroup28], (instrs PUSH16r, PUSH32r, PUSH64r, PUSH64i8,
|
||||
STOSB, STOSL, STOSQ, STOSW)>;
|
||||
def: InstRW<[SKXWriteResGroup28], (instregex "PUSH(16|32|64)rmr",
|
||||
"PUSH64i8")>;
|
||||
def: InstRW<[SKXWriteResGroup28], (instregex "PUSH(16|32|64)rmr")>;
|
||||
|
||||
def SKXWriteResGroup29 : SchedWriteRes<[SKXPort4,SKXPort237,SKXPort15]> {
|
||||
let Latency = 2;
|
||||
@ -793,26 +790,21 @@ def SKXWriteResGroup32 : SchedWriteRes<[SKXPort5]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup32], (instrs VPSADBWZrr)>; // TODO: 512-bit ops require ports 0/1 to be joined.
|
||||
def: InstRW<[SKXWriteResGroup32], (instregex "(ADD|SUB|SUBR)_(FPrST0|FST0r|FrST0)",
|
||||
"KADD(B|D|Q|W)rr",
|
||||
"KSHIFTL(B|D|Q|W)ri",
|
||||
"KSHIFTR(B|D|Q|W)ri",
|
||||
"KUNPCKBWrr",
|
||||
"KUNPCKDQrr",
|
||||
"KUNPCKWDrr",
|
||||
"KUNPCK(BW|DQ|WD)rr",
|
||||
"VALIGND(Z|Z128|Z256)rri",
|
||||
"VALIGNQ(Z|Z128|Z256)rri",
|
||||
"VCMPPD(Z|Z128|Z256)rri",
|
||||
"VCMPPS(Z|Z128|Z256)rri",
|
||||
"VCMPSDZrr",
|
||||
"VCMPSSZrr",
|
||||
"VCMP(SD|SS)Zrr",
|
||||
"VDBPSADBWZrri", // TODO: 512-bit ops require ports 0/1 to be joined.
|
||||
"VFPCLASSPD(Z|Z128|Z256)rr",
|
||||
"VFPCLASSPS(Z|Z128|Z256)rr",
|
||||
"VFPCLASSSDZrr",
|
||||
"VFPCLASSSSZrr",
|
||||
"VPBROADCASTBrr",
|
||||
"VPBROADCASTWrr",
|
||||
"VFPCLASS(PD|PS)(Z|Z128|Z256)rr",
|
||||
"VFPCLASS(SD|SS)Zrr",
|
||||
"VPBROADCAST(B|W)rr",
|
||||
"VPCMPB(Z|Z128|Z256)rri",
|
||||
"VPCMPD(Z|Z128|Z256)rri",
|
||||
"VPCMPEQ(B|D|Q|W)(Z|Z128|Z256)rr",
|
||||
@ -822,7 +814,6 @@ def: InstRW<[SKXWriteResGroup32], (instregex "(ADD|SUB|SUBR)_(FPrST0|FST0r|FrST0
|
||||
"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.
|
||||
"VPTEST(N?)M(B|D|Q|W)(Z|Z128|Z256)rr")>;
|
||||
|
||||
def SKXWriteResGroup34 : SchedWriteRes<[SKXPort0,SKXPort0156]> {
|
||||
@ -862,9 +853,9 @@ def SKXWriteResGroup41 : SchedWriteRes<[SKXPort5,SKXPort0156]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup41], (instregex "MMX_PACKSSDWirr",
|
||||
"MMX_PACKSSWBirr",
|
||||
"MMX_PACKUSWBirr")>;
|
||||
def: InstRW<[SKXWriteResGroup41], (instrs MMX_PACKSSDWirr,
|
||||
MMX_PACKSSWBirr,
|
||||
MMX_PACKUSWBirr)>;
|
||||
|
||||
def SKXWriteResGroup42 : SchedWriteRes<[SKXPort6,SKXPort0156]> {
|
||||
let Latency = 3;
|
||||
@ -1037,11 +1028,8 @@ def SKXWriteResGroup58 : SchedWriteRes<[SKXPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup58], (instregex "MOVSX(16|32|64)rm16",
|
||||
"MOVSX(16|32|64)rm32",
|
||||
"MOVSX(16|32|64)rm8",
|
||||
"MOVZX(16|32|64)rm16",
|
||||
"MOVZX(16|32|64)rm8",
|
||||
def: InstRW<[SKXWriteResGroup58], (instregex "MOVSX(16|32|64)rm(8|16|32)",
|
||||
"MOVZX(16|32|64)rm(8|16)",
|
||||
"(V?)MOVDDUPrm")>; // TODO: Should this be SKXWriteResGroup71?
|
||||
|
||||
def SKXWriteResGroup61 : SchedWriteRes<[SKXPort5,SKXPort015]> {
|
||||
@ -1157,19 +1145,21 @@ def SKXWriteResGroup71 : SchedWriteRes<[SKXPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup71], (instregex "VBROADCASTSSrm",
|
||||
"(V?)MOVSHDUPrm",
|
||||
"(V?)MOVSLDUPrm",
|
||||
"VPBROADCASTDrm",
|
||||
"VPBROADCASTQrm")>;
|
||||
def: InstRW<[SKXWriteResGroup71], (instrs VBROADCASTSSrm,
|
||||
VPBROADCASTDrm,
|
||||
VPBROADCASTQrm,
|
||||
VMOVSHDUPrm,
|
||||
VMOVSLDUPrm,
|
||||
MOVSHDUPrm,
|
||||
MOVSLDUPrm)>;
|
||||
|
||||
def SKXWriteResGroup72 : SchedWriteRes<[SKXPort5]> {
|
||||
let Latency = 6;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [2];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup72], (instregex "MMX_CVTPI2PSirr",
|
||||
"VCOMPRESSPD(Z|Z128|Z256)rr",
|
||||
def: InstRW<[SKXWriteResGroup72], (instrs MMX_CVTPI2PSirr)>;
|
||||
def: InstRW<[SKXWriteResGroup72], (instregex "VCOMPRESSPD(Z|Z128|Z256)rr",
|
||||
"VCOMPRESSPS(Z|Z128|Z256)rr",
|
||||
"VPCOMPRESSD(Z|Z128|Z256)rr",
|
||||
"VPCOMPRESSQ(Z|Z128|Z256)rr",
|
||||
@ -1180,34 +1170,34 @@ def SKXWriteResGroup73 : SchedWriteRes<[SKXPort0,SKXPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup73], (instregex "MMX_PADDSBirm",
|
||||
"MMX_PADDSWirm",
|
||||
"MMX_PADDUSBirm",
|
||||
"MMX_PADDUSWirm",
|
||||
"MMX_PAVGBirm",
|
||||
"MMX_PAVGWirm",
|
||||
"MMX_PCMPEQBirm",
|
||||
"MMX_PCMPEQDirm",
|
||||
"MMX_PCMPEQWirm",
|
||||
"MMX_PCMPGTBirm",
|
||||
"MMX_PCMPGTDirm",
|
||||
"MMX_PCMPGTWirm",
|
||||
"MMX_PMAXSWirm",
|
||||
"MMX_PMAXUBirm",
|
||||
"MMX_PMINSWirm",
|
||||
"MMX_PMINUBirm",
|
||||
"MMX_PSUBSBirm",
|
||||
"MMX_PSUBSWirm",
|
||||
"MMX_PSUBUSBirm",
|
||||
"MMX_PSUBUSWirm")>;
|
||||
def: InstRW<[SKXWriteResGroup73], (instrs MMX_PADDSBirm,
|
||||
MMX_PADDSWirm,
|
||||
MMX_PADDUSBirm,
|
||||
MMX_PADDUSWirm,
|
||||
MMX_PAVGBirm,
|
||||
MMX_PAVGWirm,
|
||||
MMX_PCMPEQBirm,
|
||||
MMX_PCMPEQDirm,
|
||||
MMX_PCMPEQWirm,
|
||||
MMX_PCMPGTBirm,
|
||||
MMX_PCMPGTDirm,
|
||||
MMX_PCMPGTWirm,
|
||||
MMX_PMAXSWirm,
|
||||
MMX_PMAXUBirm,
|
||||
MMX_PMINSWirm,
|
||||
MMX_PMINUBirm,
|
||||
MMX_PSUBSBirm,
|
||||
MMX_PSUBSWirm,
|
||||
MMX_PSUBUSBirm,
|
||||
MMX_PSUBUSWirm)>;
|
||||
|
||||
def SKXWriteResGroup76 : SchedWriteRes<[SKXPort6,SKXPort23]> {
|
||||
let Latency = 6;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup76], (instregex "FARJMP64",
|
||||
"JMP(16|32|64)m")>;
|
||||
def: InstRW<[SKXWriteResGroup76], (instrs FARJMP64)>;
|
||||
def: InstRW<[SKXWriteResGroup76], (instregex "JMP(16|32|64)m")>;
|
||||
|
||||
def SKXWriteResGroup78 : SchedWriteRes<[SKXPort23,SKXPort06]> {
|
||||
let Latency = 6;
|
||||
@ -1232,8 +1222,8 @@ def SKXWriteResGroup80 : SchedWriteRes<[SKXPort23,SKXPort015]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup80], (instregex "VMOV(64to|QI2)PQIZrm(b?)",
|
||||
"VMOVDI2PDIZrm(b?)")>;
|
||||
def: InstRW<[SKXWriteResGroup80], (instregex "VMOV(64to|QI2)PQIZrm(b?)")>;
|
||||
def: InstRW<[SKXWriteResGroup80], (instrs VMOVDI2PDIZrm)>;
|
||||
|
||||
def SKXWriteResGroup81 : SchedWriteRes<[SKXPort23,SKXPort0156]> {
|
||||
let Latency = 6;
|
||||
@ -1291,23 +1281,23 @@ def SKXWriteResGroup89 : SchedWriteRes<[SKXPort23]> {
|
||||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup89], (instregex "LD_F(32|64|80)m",
|
||||
"VBROADCASTF128",
|
||||
"VBROADCASTI128",
|
||||
"VBROADCASTSDYrm",
|
||||
"VBROADCASTSSYrm",
|
||||
"VMOVDDUPYrm",
|
||||
"VMOVSHDUPYrm",
|
||||
"VMOVSLDUPYrm",
|
||||
"VPBROADCASTDYrm",
|
||||
"VPBROADCASTQYrm")>;
|
||||
def: InstRW<[SKXWriteResGroup89], (instregex "LD_F(32|64|80)m")>;
|
||||
def: InstRW<[SKXWriteResGroup89], (instrs VBROADCASTF128,
|
||||
VBROADCASTI128,
|
||||
VBROADCASTSDYrm,
|
||||
VBROADCASTSSYrm,
|
||||
VMOVDDUPYrm,
|
||||
VMOVSHDUPYrm,
|
||||
VMOVSLDUPYrm,
|
||||
VPBROADCASTDYrm,
|
||||
VPBROADCASTQYrm)>;
|
||||
|
||||
def SKXWriteResGroup90 : SchedWriteRes<[SKXPort01,SKXPort5]> {
|
||||
let Latency = 7;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup90], (instregex "VCVTDQ2PDYrr")>;
|
||||
def: InstRW<[SKXWriteResGroup90], (instrs VCVTDQ2PDYrr)>;
|
||||
|
||||
def SKXWriteResGroup92 : SchedWriteRes<[SKXPort5,SKXPort23]> {
|
||||
let Latency = 7;
|
||||
@ -1374,12 +1364,13 @@ def SKXWriteResGroup95 : SchedWriteRes<[SKXPort23,SKXPort015]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup95], (instrs VMOVNTDQAZ128rm,
|
||||
VPBLENDDrmi)>;
|
||||
def: InstRW<[SKXWriteResGroup95], (instregex "VBLENDMPDZ128rm(b?)",
|
||||
"VBLENDMPSZ128rm(b?)",
|
||||
"VBROADCASTI32X2Z128m(b?)",
|
||||
"VBROADCASTSSZ128m(b?)",
|
||||
"VINSERTF128rm",
|
||||
"VINSERTI128rm",
|
||||
"VINSERT(F|I)128rm",
|
||||
"VMOVAPDZ128rm(b?)",
|
||||
"VMOVAPSZ128rm(b?)",
|
||||
"VMOVDDUPZ128rm(b?)",
|
||||
@ -1389,14 +1380,12 @@ def: InstRW<[SKXWriteResGroup95], (instregex "VBLENDMPDZ128rm(b?)",
|
||||
"VMOVDQU32Z128rm(b?)",
|
||||
"VMOVDQU64Z128rm(b?)",
|
||||
"VMOVDQU8Z128rm(b?)",
|
||||
"VMOVNTDQAZ128rm(b?)",
|
||||
"VMOVSHDUPZ128rm(b?)",
|
||||
"VMOVSLDUPZ128rm(b?)",
|
||||
"VMOVUPDZ128rm(b?)",
|
||||
"VMOVUPSZ128rm(b?)",
|
||||
"VPADD(B|D|Q|W)Z128rm(b?)",
|
||||
"(V?)PADD(B|D|Q|W)rm",
|
||||
"VPBLENDDrmi",
|
||||
"VPBLENDM(B|D|Q|W)Z128rm(b?)",
|
||||
"VPBROADCASTDZ128m(b?)",
|
||||
"VPBROADCASTQZ128m(b?)",
|
||||
@ -1410,9 +1399,9 @@ def SKXWriteResGroup96 : SchedWriteRes<[SKXPort5,SKXPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup96], (instregex "MMX_PACKSSDWirm",
|
||||
"MMX_PACKSSWBirm",
|
||||
"MMX_PACKUSWBirm")>;
|
||||
def: InstRW<[SKXWriteResGroup96], (instrs MMX_PACKSSDWirm,
|
||||
MMX_PACKSSWBirm,
|
||||
MMX_PACKUSWBirm)>;
|
||||
|
||||
def SKXWriteResGroup97 : SchedWriteRes<[SKXPort5,SKXPort015]> {
|
||||
let Latency = 7;
|
||||
@ -1495,8 +1484,8 @@ def SKXWriteResGroup109 : SchedWriteRes<[SKXPort4,SKXPort6,SKXPort23,SKXPort237,
|
||||
let NumMicroOps = 5;
|
||||
let ResourceCycles = [1,1,1,1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup109], (instregex "CALL(16|32|64)m",
|
||||
"FARCALL64")>;
|
||||
def: InstRW<[SKXWriteResGroup109], (instregex "CALL(16|32|64)m")>;
|
||||
def: InstRW<[SKXWriteResGroup109], (instrs FARCALL64)>;
|
||||
|
||||
def SKXWriteResGroup110 : SchedWriteRes<[SKXPort0,SKXPort4,SKXPort237,SKXPort0156]> {
|
||||
let Latency = 7;
|
||||
@ -1571,19 +1560,21 @@ def SKXWriteResGroup119 : SchedWriteRes<[SKXPort5,SKXPort23]> {
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup119], (instregex "FCOM(P?)(32|64)m",
|
||||
"VFPCLASSSDZrm(b?)",
|
||||
"VPBROADCASTBYrm",
|
||||
"VPBROADCASTB(Z|Z256)m(b?)",
|
||||
"VPBROADCASTWYrm",
|
||||
"VPBROADCASTW(Z|Z256)m(b?)",
|
||||
"VPMOVSXBDYrm",
|
||||
"VPMOVSXBQYrm",
|
||||
"VPMOVSXWQYrm")>;
|
||||
"VPBROADCASTW(Z|Z256)m(b?)")>;
|
||||
def: InstRW<[SKXWriteResGroup119], (instrs VPBROADCASTBYrm,
|
||||
VPBROADCASTWYrm,
|
||||
VPMOVSXBDYrm,
|
||||
VPMOVSXBQYrm,
|
||||
VPMOVSXWQYrm)>;
|
||||
|
||||
def SKXWriteResGroup121 : SchedWriteRes<[SKXPort23,SKXPort015]> {
|
||||
let Latency = 8;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup121], (instrs VMOVNTDQAZ256rm,
|
||||
VPBLENDDYrmi)>;
|
||||
def: InstRW<[SKXWriteResGroup121], (instregex "VBLENDMPD(Z|Z256)rm(b?)",
|
||||
"VBLENDMPS(Z|Z256)rm(b?)",
|
||||
"VBROADCASTF32X2Z256m(b?)",
|
||||
@ -1621,14 +1612,12 @@ def: InstRW<[SKXWriteResGroup121], (instregex "VBLENDMPD(Z|Z256)rm(b?)",
|
||||
"VMOVDQU32(Z|Z256)rm(b?)",
|
||||
"VMOVDQU64(Z|Z256)rm(b?)",
|
||||
"VMOVDQU8(Z|Z256)rm(b?)",
|
||||
"VMOVNTDQAZ256rm(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",
|
||||
"VPBLENDM(B|D|Q|W)(Z|Z256)rm(b?)",
|
||||
"VPBROADCASTD(Z|Z256)m(b?)",
|
||||
"VPBROADCASTQ(Z|Z256)m(b?)",
|
||||
@ -1715,19 +1704,20 @@ def SKXWriteResGroup135 : SchedWriteRes<[SKXPort0,SKXPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup135], (instregex "MMX_CVTPI2PSirm")>;
|
||||
def: InstRW<[SKXWriteResGroup135], (instrs MMX_CVTPI2PSirm)>;
|
||||
|
||||
def SKXWriteResGroup136 : SchedWriteRes<[SKXPort5,SKXPort23]> {
|
||||
let Latency = 9;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup136], (instregex "VALIGNDZ128rm(b?)i",
|
||||
"VALIGNQZ128rm(b?)i",
|
||||
"VCMPPDZ128rm(b?)i",
|
||||
"VCMPPSZ128rm(b?)i",
|
||||
"VCMPSDZrm",
|
||||
"VCMPSSZrm",
|
||||
def: InstRW<[SKXWriteResGroup136], (instrs VPMOVSXBWYrm,
|
||||
VPMOVSXDQYrm,
|
||||
VPMOVSXWDYrm,
|
||||
VPMOVZXWDYrm)>;
|
||||
def: InstRW<[SKXWriteResGroup136], (instregex "VALIGN(D|Q)Z128rm(b?)i",
|
||||
"VCMP(PD|PS)Z128rm(b?)i",
|
||||
"VCMP(SD|SS)Zrm",
|
||||
"VFPCLASSSSZrm(b?)",
|
||||
"VPCMPBZ128rmi(b?)",
|
||||
"VPCMPDZ128rmi(b?)",
|
||||
@ -1751,18 +1741,14 @@ def: InstRW<[SKXWriteResGroup136], (instregex "VALIGNDZ128rm(b?)i",
|
||||
"VPMINUQZ128rm(b?)",
|
||||
"VPMOVSXBDZ128rm(b?)",
|
||||
"VPMOVSXBQZ128rm(b?)",
|
||||
"VPMOVSXBWYrm",
|
||||
"VPMOVSXBWZ128rm(b?)",
|
||||
"VPMOVSXDQYrm",
|
||||
"VPMOVSXDQZ128rm(b?)",
|
||||
"VPMOVSXWDYrm",
|
||||
"VPMOVSXWDZ128rm(b?)",
|
||||
"VPMOVSXWQZ128rm(b?)",
|
||||
"VPMOVZXBDZ128rm(b?)",
|
||||
"VPMOVZXBQZ128rm(b?)",
|
||||
"VPMOVZXBWZ128rm(b?)",
|
||||
"VPMOVZXDQZ128rm(b?)",
|
||||
"VPMOVZXWDYrm",
|
||||
"VPMOVZXWDZ128rm(b?)",
|
||||
"VPMOVZXWQZ128rm(b?)",
|
||||
"VPTESTMBZ128rm(b?)",
|
||||
@ -1810,6 +1796,7 @@ def SKXWriteResGroup148 : SchedWriteRes<[SKXPort5,SKXPort23]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup148], (instrs VPCMPGTQYrm)>;
|
||||
def: InstRW<[SKXWriteResGroup148], (instregex "(ADD|SUB|SUBR)_F(32|64)m",
|
||||
"ILD_F(16|32|64)m",
|
||||
"VALIGND(Z|Z256)rm(b?)i",
|
||||
@ -1824,7 +1811,6 @@ def: InstRW<[SKXWriteResGroup148], (instregex "(ADD|SUB|SUBR)_F(32|64)m",
|
||||
"VPCMPEQW(Z|Z256)rm(b?)",
|
||||
"VPCMPGTB(Z|Z256)rm(b?)",
|
||||
"VPCMPGTD(Z|Z256)rm(b?)",
|
||||
"VPCMPGTQYrm",
|
||||
"VPCMPGTQ(Z|Z256)rm(b?)",
|
||||
"VPCMPGTW(Z|Z256)rm(b?)",
|
||||
"VPCMPQ(Z|Z256)rmi(b?)",
|
||||
@ -1895,8 +1881,8 @@ def SKXWriteResGroup154 : SchedWriteRes<[SKXPort5,SKXPort01,SKXPort23]> {
|
||||
let NumMicroOps = 4;
|
||||
let ResourceCycles = [2,1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup154], (instregex "VPHADDSWYrm",
|
||||
"VPHSUBSWYrm")>;
|
||||
def: InstRW<[SKXWriteResGroup154], (instrs VPHADDSWYrm,
|
||||
VPHSUBSWYrm)>;
|
||||
|
||||
def SKXWriteResGroup156 : SchedWriteRes<[SKXPort1,SKXPort23,SKXPort06,SKXPort0156]> {
|
||||
let Latency = 9;
|
||||
@ -1931,11 +1917,10 @@ def SKXWriteResGroup161 : SchedWriteRes<[SKXPort23,SKXPort015]> {
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup161], (instregex "VCVTDQ2PD(Z|Z256)rm(b?)",
|
||||
"VCVTDQ2PSYrm",
|
||||
"VCVTDQ2PS(Z|Z256)rm(b?)",
|
||||
def: InstRW<[SKXWriteResGroup161], (instrs VCVTDQ2PSYrm,
|
||||
VCVTPS2PDYrm)>;
|
||||
def: InstRW<[SKXWriteResGroup161], (instregex "VCVTDQ2(PD|PS)(Z|Z256)rm(b?)",
|
||||
"VCVTPH2PS(Z|Z256)rm(b?)",
|
||||
"VCVTPS2PDYrm",
|
||||
"VCVTPS2PD(Z|Z256)rm(b?)",
|
||||
"VCVTQQ2PD(Z|Z256)rm(b?)",
|
||||
"VCVTQQ2PSZ256rm(b?)",
|
||||
@ -1946,8 +1931,7 @@ def: InstRW<[SKXWriteResGroup161], (instregex "VCVTDQ2PD(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?)",
|
||||
"VCVTUDQ2(PD|PS)(Z|Z256)rm(b?)",
|
||||
"VCVTUQQ2PD(Z|Z256)rm(b?)",
|
||||
"VCVTUQQ2PSZ256rm(b?)")>;
|
||||
|
||||
@ -1981,9 +1965,11 @@ def SKXWriteResGroup166 : SchedWriteRes<[SKXPort5,SKXPort23,SKXPort015]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup166], (instregex "CVTPD2PSrm",
|
||||
"CVT(T?)PD2DQrm",
|
||||
"MMX_CVT(T?)PD2PIirm")>;
|
||||
def: InstRW<[SKXWriteResGroup166], (instrs CVTPD2PSrm,
|
||||
CVTPD2DQrm,
|
||||
CVTTPD2DQrm,
|
||||
MMX_CVTPD2PIirm,
|
||||
MMX_CVTTPD2PIirm)>;
|
||||
|
||||
def SKXWriteResGroup167 : SchedWriteRes<[SKXPort5,SKXPort23,SKXPort015]> {
|
||||
let Latency = 11;
|
||||
@ -2005,7 +1991,7 @@ def SKXWriteResGroup170 : SchedWriteRes<[SKXPort1,SKXPort06,SKXPort15,SKXPort015
|
||||
let NumMicroOps = 9;
|
||||
let ResourceCycles = [1,5,1,2];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup170], (instregex "RCL8rCL")>;
|
||||
def: InstRW<[SKXWriteResGroup170], (instrs RCL8rCL)>;
|
||||
|
||||
def SKXWriteResGroup171 : SchedWriteRes<[SKXPort06,SKXPort0156]> {
|
||||
let Latency = 11;
|
||||
@ -2072,7 +2058,7 @@ def SKXWriteResGroup181 : SchedWriteRes<[SKXPort0,SKXPort5,SKXPort23]> {
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup181], (instregex "VCVTDQ2PDYrm")>;
|
||||
def: InstRW<[SKXWriteResGroup181], (instrs VCVTDQ2PDYrm)>;
|
||||
|
||||
def SKXWriteResGroup183 : SchedWriteRes<[SKXPort5,SKXPort23,SKXPort015]> {
|
||||
let Latency = 13;
|
||||
@ -2132,7 +2118,7 @@ def SKXWriteResGroup190 : SchedWriteRes<[SKXPort1,SKXPort06,SKXPort15,SKXPort015
|
||||
let NumMicroOps = 10;
|
||||
let ResourceCycles = [2,4,1,3];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup190], (instregex "RCR8rCL")>;
|
||||
def: InstRW<[SKXWriteResGroup190], (instrs RCR8rCL)>;
|
||||
|
||||
def SKXWriteResGroup191 : SchedWriteRes<[SKXPort0]> {
|
||||
let Latency = 15;
|
||||
|
@ -493,7 +493,7 @@ def : SchedAlias<WriteSTMXCSR, ZnWriteMicrocoded>;
|
||||
//-- Move instructions --//
|
||||
// MOV.
|
||||
// r16,m.
|
||||
def : InstRW<[WriteALULd, ReadAfterLd], (instregex "MOV16rm")>;
|
||||
def : InstRW<[WriteALULd, ReadAfterLd], (instrs MOV16rm)>;
|
||||
|
||||
// MOVSX, MOVZX.
|
||||
// r,m.
|
||||
@ -515,7 +515,7 @@ def ZnWritePop16r : SchedWriteRes<[ZnAGU]>{
|
||||
let Latency = 5;
|
||||
let NumMicroOps = 2;
|
||||
}
|
||||
def : InstRW<[ZnWritePop16r], (instregex "POP16rmm")>;
|
||||
def : InstRW<[ZnWritePop16r], (instrs POP16rmm)>;
|
||||
def : InstRW<[WriteMicrocoded], (instregex "POPF(16|32)")>;
|
||||
def : InstRW<[WriteMicrocoded], (instregex "POPA(16|32)")>;
|
||||
|
||||
@ -778,7 +778,7 @@ def : InstRW<[WriteMicrocoded], (instrs RDPMC)>;
|
||||
def : InstRW<[WriteMicrocoded], (instregex "RDRAND(16|32|64)r")>;
|
||||
|
||||
// XGETBV.
|
||||
def : InstRW<[WriteMicrocoded], (instregex "XGETBV")>;
|
||||
def : InstRW<[WriteMicrocoded], (instrs XGETBV)>;
|
||||
|
||||
//-- String instructions --//
|
||||
// CMPS.
|
||||
@ -816,16 +816,16 @@ def ZnWriteSTr: SchedWriteRes<[ZnFPU23]> {
|
||||
|
||||
// LD_F.
|
||||
// r.
|
||||
def : InstRW<[ZnWriteFLDr], (instregex "LD_Frr")>;
|
||||
def : InstRW<[ZnWriteFLDr], (instrs LD_Frr)>;
|
||||
|
||||
// m.
|
||||
def ZnWriteLD_F80m : SchedWriteRes<[ZnAGU, ZnFPU13]> {
|
||||
let NumMicroOps = 2;
|
||||
}
|
||||
def : InstRW<[ZnWriteLD_F80m], (instregex "LD_F80m")>;
|
||||
def : InstRW<[ZnWriteLD_F80m], (instrs LD_F80m)>;
|
||||
|
||||
// FBLD.
|
||||
def : InstRW<[WriteMicrocoded], (instregex "FBLDm")>;
|
||||
def : InstRW<[WriteMicrocoded], (instrs FBLDm)>;
|
||||
|
||||
// FST(P).
|
||||
// r.
|
||||
@ -835,11 +835,11 @@ def : InstRW<[ZnWriteSTr], (instregex "ST_(F|FP)rr")>;
|
||||
def ZnWriteST_FP80m : SchedWriteRes<[ZnAGU, ZnFPU23]> {
|
||||
let Latency = 5;
|
||||
}
|
||||
def : InstRW<[ZnWriteST_FP80m], (instregex "ST_FP80m")>;
|
||||
def : InstRW<[ZnWriteST_FP80m], (instrs ST_FP80m)>;
|
||||
|
||||
// FBSTP.
|
||||
// m80.
|
||||
def : InstRW<[WriteMicrocoded], (instregex "FBSTPm")>;
|
||||
def : InstRW<[WriteMicrocoded], (instrs FBSTPm)>;
|
||||
|
||||
def ZnWriteFXCH : SchedWriteRes<[ZnFPU]>;
|
||||
|
||||
@ -896,10 +896,10 @@ def : InstRW<[ZnWriteFPU3], (instrs FINCSTP, FDECSTP)>;
|
||||
def : InstRW<[ZnWriteFPU3], (instregex "FFREE")>;
|
||||
|
||||
// FNSAVE.
|
||||
def : InstRW<[WriteMicrocoded], (instregex "FSAVEm")>;
|
||||
def : InstRW<[WriteMicrocoded], (instrs FSAVEm)>;
|
||||
|
||||
// FRSTOR.
|
||||
def : InstRW<[WriteMicrocoded], (instregex "FRSTORm")>;
|
||||
def : InstRW<[WriteMicrocoded], (instrs FRSTORm)>;
|
||||
|
||||
//-- Arithmetic instructions --//
|
||||
|
||||
@ -1396,46 +1396,46 @@ def : InstRW<[ZnWriteSHA1MSG1Ld], (instregex "SHA(1|256)MSG1rm")>;
|
||||
// SHA1MSG2
|
||||
// x,x.
|
||||
def ZnWriteSHA1MSG2r : SchedWriteRes<[ZnFPU12]> ;
|
||||
def : InstRW<[ZnWriteSHA1MSG2r], (instregex "SHA1MSG2rr")>;
|
||||
def : InstRW<[ZnWriteSHA1MSG2r], (instrs SHA1MSG2rr)>;
|
||||
// x,m.
|
||||
def ZnWriteSHA1MSG2Ld : SchedWriteRes<[ZnAGU, ZnFPU12]> {
|
||||
let Latency = 8;
|
||||
}
|
||||
def : InstRW<[ZnWriteSHA1MSG2Ld], (instregex "SHA1MSG2rm")>;
|
||||
def : InstRW<[ZnWriteSHA1MSG2Ld], (instrs SHA1MSG2rm)>;
|
||||
|
||||
// SHA1NEXTE
|
||||
// x,x.
|
||||
def ZnWriteSHA1NEXTEr : SchedWriteRes<[ZnFPU1]> ;
|
||||
def : InstRW<[ZnWriteSHA1NEXTEr], (instregex "SHA1NEXTErr")>;
|
||||
def : InstRW<[ZnWriteSHA1NEXTEr], (instrs SHA1NEXTErr)>;
|
||||
// x,m.
|
||||
def ZnWriteSHA1NEXTELd : SchedWriteRes<[ZnAGU, ZnFPU1]> {
|
||||
let Latency = 8;
|
||||
}
|
||||
def : InstRW<[ZnWriteSHA1NEXTELd], (instregex "SHA1NEXTErm")>;
|
||||
def : InstRW<[ZnWriteSHA1NEXTELd], (instrs SHA1NEXTErm)>;
|
||||
|
||||
// SHA1RNDS4
|
||||
// x,x.
|
||||
def ZnWriteSHA1RNDS4r : SchedWriteRes<[ZnFPU1]> {
|
||||
let Latency = 6;
|
||||
}
|
||||
def : InstRW<[ZnWriteSHA1RNDS4r], (instregex "SHA1RNDS4rr")>;
|
||||
def : InstRW<[ZnWriteSHA1RNDS4r], (instrs SHA1RNDS4rri)>;
|
||||
// x,m.
|
||||
def ZnWriteSHA1RNDS4Ld : SchedWriteRes<[ZnAGU, ZnFPU1]> {
|
||||
let Latency = 13;
|
||||
}
|
||||
def : InstRW<[ZnWriteSHA1RNDS4Ld], (instregex "SHA1RNDS4rm")>;
|
||||
def : InstRW<[ZnWriteSHA1RNDS4Ld], (instrs SHA1RNDS4rmi)>;
|
||||
|
||||
// SHA256RNDS2
|
||||
// x,x.
|
||||
def ZnWriteSHA256RNDS2r : SchedWriteRes<[ZnFPU1]> {
|
||||
let Latency = 4;
|
||||
}
|
||||
def : InstRW<[ZnWriteSHA256RNDS2r], (instregex "SHA256RNDS2rr")>;
|
||||
def : InstRW<[ZnWriteSHA256RNDS2r], (instrs SHA256RNDS2rr)>;
|
||||
// x,m.
|
||||
def ZnWriteSHA256RNDS2Ld : SchedWriteRes<[ZnAGU, ZnFPU1]> {
|
||||
let Latency = 11;
|
||||
}
|
||||
def : InstRW<[ZnWriteSHA256RNDS2Ld], (instregex "SHA256RNDS2rm")>;
|
||||
def : InstRW<[ZnWriteSHA256RNDS2Ld], (instrs SHA256RNDS2rm)>;
|
||||
|
||||
//-- Arithmetic instructions --//
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user