forked from OSchip/llvm-project
[X86] Merge more instregex single matches to reduce InstrRW compile time.
llvm-svn: 331143
This commit is contained in:
parent
684a719270
commit
d5ada498db
|
@ -450,9 +450,8 @@ def BWWriteResGroup9 : SchedWriteRes<[BWPort0156]> {
|
|||
let NumMicroOps = 1;
|
||||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup9], (instregex "LAHF", // TODO: This doesnt match Agner's data
|
||||
"NOOP",
|
||||
"SAHF", // TODO: This doesn't match Agner's data
|
||||
def: InstRW<[BWWriteResGroup9], (instrs LAHF, SAHF)>; // TODO: This doesnt match Agner's data
|
||||
def: InstRW<[BWWriteResGroup9], (instregex "NOOP",
|
||||
"SGDT64m",
|
||||
"SIDT64m",
|
||||
"SMSW16m",
|
||||
|
@ -884,7 +883,7 @@ def BWWriteResGroup54 : SchedWriteRes<[BWPort6,BWPort0156]> {
|
|||
let NumMicroOps = 5;
|
||||
let ResourceCycles = [1,4];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup54], (instregex "PAUSE")>;
|
||||
def: InstRW<[BWWriteResGroup54], (instrs PAUSE)>;
|
||||
|
||||
def BWWriteResGroup55 : SchedWriteRes<[BWPort06,BWPort0156]> {
|
||||
let Latency = 5;
|
||||
|
@ -1197,24 +1196,15 @@ def BWWriteResGroup81 : SchedWriteRes<[BWPort0,BWPort5,BWPort23]> {
|
|||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [1,1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup81], (instregex "PSLLDrm",
|
||||
"PSLLQrm",
|
||||
"PSLLWrm",
|
||||
"PSRADrm",
|
||||
"PSRAWrm",
|
||||
"PSRLDrm",
|
||||
"PSRLQrm",
|
||||
"PSRLWrm",
|
||||
"PTESTrm",
|
||||
"VPSLLDrm",
|
||||
"VPSLLQrm",
|
||||
"VPSLLWrm",
|
||||
"VPSRADrm",
|
||||
"VPSRAWrm",
|
||||
"VPSRLDrm",
|
||||
"VPSRLQrm",
|
||||
"VPSRLWrm",
|
||||
"VPTESTrm")>;
|
||||
def: InstRW<[BWWriteResGroup81], (instregex "(V?)PSLLDrm",
|
||||
"(V?)PSLLQrm",
|
||||
"(V?)PSLLWrm",
|
||||
"(V?)PSRADrm",
|
||||
"(V?)PSRAWrm",
|
||||
"(V?)PSRLDrm",
|
||||
"(V?)PSRLQrm",
|
||||
"(V?)PSRLWrm",
|
||||
"(V?)PTESTrm")>;
|
||||
|
||||
def BWWriteResGroup82 : SchedWriteRes<[BWPort0,BWPort01,BWPort23]> {
|
||||
let Latency = 7;
|
||||
|
|
|
@ -450,7 +450,7 @@ def : InstRW<[HWWriteBOUND], (instregex "BOUNDS(16|32)rm")>;
|
|||
def HWWriteINTO : SchedWriteRes<[]> {
|
||||
let NumMicroOps = 4;
|
||||
}
|
||||
def : InstRW<[HWWriteINTO], (instregex "INTO")>;
|
||||
def : InstRW<[HWWriteINTO], (instrs INTO)>;
|
||||
|
||||
//-- String instructions --//
|
||||
|
||||
|
@ -1941,7 +1941,7 @@ def HWWriteResGroup99 : SchedWriteRes<[HWPort6,HWPort0156]> {
|
|||
let NumMicroOps = 5;
|
||||
let ResourceCycles = [1,4];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup99], (instregex "PAUSE")>;
|
||||
def: InstRW<[HWWriteResGroup99], (instrs PAUSE)>;
|
||||
|
||||
def HWWriteResGroup100 : SchedWriteRes<[HWPort06,HWPort0156]> {
|
||||
let Latency = 5;
|
||||
|
|
|
@ -375,6 +375,7 @@ def SBWriteResGroup4 : SchedWriteRes<[SBPort05]> {
|
|||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup4], (instrs CDQ, CQO)>;
|
||||
def: InstRW<[SBWriteResGroup4], (instrs LAHF, SAHF)>;
|
||||
def: InstRW<[SBWriteResGroup4], (instregex "BT(16|32|64)ri8",
|
||||
"BT(16|32|64)rr",
|
||||
"BTC(16|32|64)ri8",
|
||||
|
@ -383,8 +384,6 @@ def: InstRW<[SBWriteResGroup4], (instregex "BT(16|32|64)ri8",
|
|||
"BTR(16|32|64)rr",
|
||||
"BTS(16|32|64)ri8",
|
||||
"BTS(16|32|64)rr",
|
||||
"LAHF",
|
||||
"SAHF",
|
||||
"VMOVDQA(Y?)rr",
|
||||
"VMOVDQU(Y?)rr")>;
|
||||
|
||||
|
@ -712,7 +711,7 @@ def SBWriteResGroup29_2 : SchedWriteRes<[SBPort5,SBPort015]> {
|
|||
let NumMicroOps = 4;
|
||||
let ResourceCycles = [1,3];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroup29_2], (instregex "PAUSE")>;
|
||||
def: InstRW<[SBWriteResGroup29_2], (instrs PAUSE)>;
|
||||
|
||||
def SBWriteResGroup29_3 : SchedWriteRes<[SBPort05,SBPort015]> {
|
||||
let Latency = 4;
|
||||
|
|
|
@ -532,11 +532,10 @@ def SKLWriteResGroup10 : SchedWriteRes<[SKLPort0156]> {
|
|||
let ResourceCycles = [1];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup10], (instrs CBW, CWDE, CDQE)>;
|
||||
def: InstRW<[SKLWriteResGroup10], (instrs LAHF, SAHF)>; // TODO: This doesn't match Agner's data
|
||||
def: InstRW<[SKLWriteResGroup10], (instregex "CLC",
|
||||
"CMC",
|
||||
"LAHF", // TODO: This doesn't match Agner's data
|
||||
"NOOP",
|
||||
"SAHF", // TODO: This doesn't match Agner's data
|
||||
"SGDT64m",
|
||||
"SIDT64m",
|
||||
"SMSW16m",
|
||||
|
@ -978,7 +977,7 @@ def SKLWriteResGroup55 : SchedWriteRes<[SKLPort6,SKLPort0156]> {
|
|||
let NumMicroOps = 4;
|
||||
let ResourceCycles = [1,3];
|
||||
}
|
||||
def: InstRW<[SKLWriteResGroup55], (instregex "PAUSE")>;
|
||||
def: InstRW<[SKLWriteResGroup55], (instrs PAUSE)>;
|
||||
|
||||
def SKLWriteResGroup56 : SchedWriteRes<[SKLPort015,SKLPort0156]> {
|
||||
let Latency = 4;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -361,14 +361,14 @@ def ZnWritePushA : SchedWriteRes<[ZnAGU]> {
|
|||
def : InstRW<[ZnWritePushA], (instregex "PUSHA(16|32)")>;
|
||||
|
||||
//LAHF
|
||||
def : InstRW<[WriteMicrocoded], (instregex "LAHF")>;
|
||||
def : InstRW<[WriteMicrocoded], (instrs LAHF)>;
|
||||
|
||||
// SAHF.
|
||||
def ZnWriteSAHF : SchedWriteRes<[ZnALU]> {
|
||||
let Latency = 2;
|
||||
let NumMicroOps = 2;
|
||||
}
|
||||
def : InstRW<[ZnWriteSAHF], (instregex "SAHF")>;
|
||||
def : InstRW<[ZnWriteSAHF], (instrs SAHF)>;
|
||||
|
||||
// BSWAP.
|
||||
def ZnWriteBSwap : SchedWriteRes<[ZnALU]> {
|
||||
|
@ -513,7 +513,7 @@ def ZnWriteJCXZ : SchedWriteRes<[ZnALU03]>;
|
|||
def : InstRW<[ZnWriteJCXZ], (instrs JCXZ, JECXZ, JRCXZ)>;
|
||||
|
||||
// INTO
|
||||
def : InstRW<[WriteMicrocoded], (instregex "INTO")>;
|
||||
def : InstRW<[WriteMicrocoded], (instrs INTO)>;
|
||||
|
||||
// LOOP.
|
||||
def ZnWriteLOOP : SchedWriteRes<[ZnALU03]>;
|
||||
|
@ -634,7 +634,7 @@ def ZnWriteLEAVE : SchedWriteRes<[ZnALU, ZnAGU]> {
|
|||
def : InstRW<[ZnWriteLEAVE], (instregex "LEAVE")>;
|
||||
|
||||
// PAUSE.
|
||||
def : InstRW<[WriteMicrocoded], (instregex "PAUSE")>;
|
||||
def : InstRW<[WriteMicrocoded], (instrs PAUSE)>;
|
||||
|
||||
// RDTSC.
|
||||
def : InstRW<[WriteMicrocoded], (instregex "RDTSC")>;
|
||||
|
@ -1308,7 +1308,7 @@ def : InstRW<[ZnWriteCVTPS2PIr], (instregex "MMX_CVT(T?)PS2PIirr")>;
|
|||
|
||||
// CVTPI2PD.
|
||||
// x,mm.
|
||||
def : InstRW<[ZnWriteCVTPS2PDr], (instregex "MMX_CVT(T?)PI2PDirr")>;
|
||||
def : InstRW<[ZnWriteCVTPS2PDr], (instregex "MMX_CVTPI2PDirr")>;
|
||||
|
||||
// CVT(T)PD2PI.
|
||||
// mm,x.
|
||||
|
|
Loading…
Reference in New Issue