summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2018-04-21 12:15:42 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2018-04-21 12:15:42 +0000
commit02fc375a22ad5057a6c8ae16557e1054de99c82e (patch)
tree992512aebe6678268c220c8215ad736e9e758567
parent26178d4336d28bcddc56bd1582a993a74d9a25c6 (diff)
downloadbcm5719-llvm-02fc375a22ad5057a6c8ae16557e1054de99c82e.tar.gz
bcm5719-llvm-02fc375a22ad5057a6c8ae16557e1054de99c82e.zip
[X86] Strip unnecessary MMX instruction instrw overrides from scheduler models.
llvm-svn: 330503
-rwxr-xr-xllvm/lib/Target/X86/X86SchedBroadwell.td55
-rw-r--r--llvm/lib/Target/X86/X86SchedHaswell.td59
-rw-r--r--llvm/lib/Target/X86/X86SchedSkylakeClient.td30
-rwxr-xr-xllvm/lib/Target/X86/X86SchedSkylakeServer.td30
-rw-r--r--llvm/lib/Target/X86/X86ScheduleAtom.td10
-rw-r--r--llvm/lib/Target/X86/X86ScheduleZnver1.td6
6 files changed, 9 insertions, 181 deletions
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td
index e9215ad28ba..e658bfe3758 100755
--- a/llvm/lib/Target/X86/X86SchedBroadwell.td
+++ b/llvm/lib/Target/X86/X86SchedBroadwell.td
@@ -322,22 +322,6 @@ def BWWriteResGroup1 : SchedWriteRes<[BWPort0]> {
}
def: InstRW<[BWWriteResGroup1], (instregex "MMX_MOVD64from64rr",
"MMX_MOVD64grr",
- "MMX_PSLLDri",
- "MMX_PSLLDrr",
- "MMX_PSLLQri",
- "MMX_PSLLQrr",
- "MMX_PSLLWri",
- "MMX_PSLLWrr",
- "MMX_PSRADri",
- "MMX_PSRADrr",
- "MMX_PSRAWri",
- "MMX_PSRAWrr",
- "MMX_PSRLDri",
- "MMX_PSRLDrr",
- "MMX_PSRLQri",
- "MMX_PSRLQrr",
- "MMX_PSRLWri",
- "MMX_PSRLWrr",
"(V?)MOVPDI2DIrr",
"(V?)MOVPQIto64rr",
"(V?)PSLLD(Y?)ri",
@@ -371,14 +355,6 @@ def BWWriteResGroup3 : SchedWriteRes<[BWPort5]> {
def: InstRW<[BWWriteResGroup3], (instregex "MMX_MOVD64rr",
"MMX_MOVD64to64rr",
"MMX_MOVQ2DQrr",
- "MMX_PALIGNRrri",
- "MMX_PSHUFWri",
- "MMX_PUNPCKHBWirr",
- "MMX_PUNPCKHDQirr",
- "MMX_PUNPCKHWDirr",
- "MMX_PUNPCKLBWirr",
- "MMX_PUNPCKLDQirr",
- "MMX_PUNPCKLWDirr",
"VBROADCASTSSrr",
"(V?)INSERTPSrr",
"(V?)MOV64toPQIrr",
@@ -482,19 +458,6 @@ def: InstRW<[BWWriteResGroup7], (instregex "ANDN(32|64)rr",
"BLSMSK(32|64)rr",
"BLSR(32|64)rr",
"LEA(16|32|64)(_32)?r",
- "MMX_PABS(B|D|W)rr",
- "MMX_PADD(B|D|Q|W)irr",
- "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_PSIGN(B|D|W)rr",
- "MMX_PSUB(B|D|Q|W)irr",
- "MMX_PSUBS(B|W)irr",
- "MMX_PSUBUS(B|W)irr",
"(V?)PABSB(Y?)rr",
"(V?)PABSD(Y?)rr",
"(V?)PABSW(Y?)rr",
@@ -1012,14 +975,7 @@ def BWWriteResGroup47 : SchedWriteRes<[BWPort0]> {
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[BWWriteResGroup47], (instregex "MMX_PMADDUBSWrr",
- "MMX_PMADDWDirr",
- "MMX_PMULHRSWrr",
- "MMX_PMULHUWirr",
- "MMX_PMULHWirr",
- "MMX_PMULLWirr",
- "MMX_PMULUDQirr",
- "(V?)PCMPGTQ(Y?)rr",
+def: InstRW<[BWWriteResGroup47], (instregex "(V?)PCMPGTQ(Y?)rr",
"(V?)PHMINPOSUWrr",
"(V?)PMADDUBSW(Y?)rr",
"(V?)PMADDWD(Y?)rr",
@@ -1039,10 +995,7 @@ def BWWriteResGroup49 : SchedWriteRes<[BWPort23]> {
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[BWWriteResGroup49], (instregex "MMX_MOVD64rm",
- "MMX_MOVD64to64rm",
- "MMX_MOVQ64rm",
- "MOVSX(16|32|64)rm16",
+def: InstRW<[BWWriteResGroup49], (instregex "MOVSX(16|32|64)rm16",
"MOVSX(16|32|64)rm32",
"MOVSX(16|32|64)rm8",
"MOVZX(16|32|64)rm16",
@@ -1204,7 +1157,6 @@ def BWWriteResGroup61 : SchedWriteRes<[BWPort5,BWPort23]> {
def: InstRW<[BWWriteResGroup61], (instregex "MMX_PALIGNRrmi",
"MMX_PINSRWrm",
"MMX_PSHUFBrm",
- "MMX_PSHUFWmi",
"MMX_PUNPCKHBWirm",
"MMX_PUNPCKHDQirm",
"MMX_PUNPCKHWDirm",
@@ -1289,7 +1241,6 @@ def: InstRW<[BWWriteResGroup64], (instregex "ANDN(32|64)rm",
"BLSI(32|64)rm",
"BLSMSK(32|64)rm",
"BLSR(32|64)rm",
- "MMX_PABS(B|D|W)rm",
"MMX_PADD(B|D|Q|W)irm",
"MMX_PADDS(B|W)irm",
"MMX_PADDUS(B|W)irm",
@@ -1668,8 +1619,6 @@ def BWWriteResGroup91 : SchedWriteRes<[BWPort1,BWPort23]> {
let ResourceCycles = [1,1];
}
def: InstRW<[BWWriteResGroup91], (instregex "MMX_CVTPI2PSirm",
- "MMX_CVTPS2PIirm",
- "MMX_CVTTPS2PIirm",
"PDEP(32|64)rm",
"PEXT(32|64)rm",
"(V?)ADDPDrm",
diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td
index 0bc81166682..56df7e446f9 100644
--- a/llvm/lib/Target/X86/X86SchedHaswell.td
+++ b/llvm/lib/Target/X86/X86SchedHaswell.td
@@ -613,10 +613,7 @@ def HWWriteResGroup0_2 : SchedWriteRes<[HWPort23]> {
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[HWWriteResGroup0_2], (instregex "MMX_MOVD64rm",
- "MMX_MOVD64to64rm",
- "MMX_MOVQ64rm",
- "MOVSX(16|32|64)rm16",
+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",
@@ -676,22 +673,6 @@ def HWWriteResGroup2 : SchedWriteRes<[HWPort0]> {
}
def: InstRW<[HWWriteResGroup2], (instregex "MMX_MOVD64from64rr",
"MMX_MOVD64grr",
- "MMX_PSLLDri",
- "MMX_PSLLDrr",
- "MMX_PSLLQri",
- "MMX_PSLLQrr",
- "MMX_PSLLWri",
- "MMX_PSLLWrr",
- "MMX_PSRADri",
- "MMX_PSRADrr",
- "MMX_PSRAWri",
- "MMX_PSRAWrr",
- "MMX_PSRLDri",
- "MMX_PSRLDrr",
- "MMX_PSRLQri",
- "MMX_PSRLQrr",
- "MMX_PSRLWri",
- "MMX_PSRLWrr",
"(V?)MOVPDI2DIrr",
"(V?)MOVPQIto64rr",
"(V?)PSLLD(Y?)ri",
@@ -725,14 +706,6 @@ def HWWriteResGroup4 : SchedWriteRes<[HWPort5]> {
def: InstRW<[HWWriteResGroup4], (instregex "MMX_MOVD64rr",
"MMX_MOVD64to64rr",
"MMX_MOVQ2DQrr",
- "MMX_PALIGNRrri",
- "MMX_PSHUFWri",
- "MMX_PUNPCKHBWirr",
- "MMX_PUNPCKHDQirr",
- "MMX_PUNPCKHWDirr",
- "MMX_PUNPCKLBWirr",
- "MMX_PUNPCKLDQirr",
- "MMX_PUNPCKLWDirr",
"VBROADCASTSSrr",
"(V?)INSERTPSrr",
"(V?)MOV64toPQIrr",
@@ -840,19 +813,6 @@ def: InstRW<[HWWriteResGroup8], (instregex "ANDN(32|64)rr",
"BLSMSK(32|64)rr",
"BLSR(32|64)rr",
"LEA(16|32|64)(_32)?r",
- "MMX_PABS(B|D|W)rr",
- "MMX_PADD(B|D|Q|W)irr",
- "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_PSIGN(B|D|W)rr",
- "MMX_PSUB(B|D|Q|W)irr",
- "MMX_PSUBS(B|W)irr",
- "MMX_PSUBUS(B|W)irr",
"(V?)PABSB(Y?)rr",
"(V?)PABSD(Y?)rr",
"(V?)PABSW(Y?)rr",
@@ -903,10 +863,6 @@ def HWWriteResGroup9 : SchedWriteRes<[HWPort015]> {
let ResourceCycles = [1];
}
def: InstRW<[HWWriteResGroup9], (instregex "MMX_MOVQ64rr",
- "MMX_PANDNirr",
- "MMX_PANDirr",
- "MMX_PORirr",
- "MMX_PXORirr",
"(V?)BLENDPD(Y?)rri",
"(V?)BLENDPS(Y?)rri",
"(V?)MOVDQA(Y?)rr",
@@ -990,8 +946,6 @@ def: InstRW<[HWWriteResGroup12], (instregex "FCOM32m",
"FCOMP32m",
"FCOMP64m",
"MMX_CVTPI2PSirm",
- "MMX_CVTPS2PIirm",
- "MMX_CVTTPS2PIirm",
"PDEP(32|64)rm",
"PEXT(32|64)rm",
"(V?)ADDSDrm",
@@ -1108,7 +1062,6 @@ def HWWriteResGroup13_2 : SchedWriteRes<[HWPort5,HWPort23]> {
def: InstRW<[HWWriteResGroup13_2], (instregex "MMX_PALIGNRrmi",
"MMX_PINSRWrm",
"MMX_PSHUFBrm",
- "MMX_PSHUFWmi",
"MMX_PUNPCKHBWirm",
"MMX_PUNPCKHDQirm",
"MMX_PUNPCKHWDirm",
@@ -1164,7 +1117,6 @@ def: InstRW<[HWWriteResGroup16], (instregex "ANDN(32|64)rm",
"BLSI(32|64)rm",
"BLSMSK(32|64)rm",
"BLSR(32|64)rm",
- "MMX_PABS(B|D|W)rm",
"MMX_PADD(B|D|Q|W)irm",
"MMX_PADDS(B|W)irm",
"MMX_PADDUS(B|W)irm",
@@ -2173,14 +2125,7 @@ def HWWriteResGroup89 : SchedWriteRes<[HWPort0]> {
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[HWWriteResGroup89], (instregex "MMX_PMADDUBSWrr",
- "MMX_PMADDWDirr",
- "MMX_PMULHRSWrr",
- "MMX_PMULHUWirr",
- "MMX_PMULHWirr",
- "MMX_PMULLWirr",
- "MMX_PMULUDQirr",
- "(V?)PCMPGTQ(Y?)rr",
+def: InstRW<[HWWriteResGroup89], (instregex "(V?)PCMPGTQ(Y?)rr",
"(V?)PHMINPOSUWrr",
"(V?)PMADDUBSW(Y?)rr",
"(V?)PMADDWD(Y?)rr",
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td
index 72d15a36d8a..80803336167 100644
--- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td
+++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td
@@ -342,22 +342,6 @@ def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PADDSBirr",
"MMX_PMAXUBirr",
"MMX_PMINSWirr",
"MMX_PMINUBirr",
- "MMX_PSLLDri",
- "MMX_PSLLDrr",
- "MMX_PSLLQri",
- "MMX_PSLLQrr",
- "MMX_PSLLWri",
- "MMX_PSLLWrr",
- "MMX_PSRADri",
- "MMX_PSRADrr",
- "MMX_PSRAWri",
- "MMX_PSRAWrr",
- "MMX_PSRLDri",
- "MMX_PSRLDrr",
- "MMX_PSRLQri",
- "MMX_PSRLQrr",
- "MMX_PSRLWri",
- "MMX_PSRLWrr",
"MMX_PSUBSBirr",
"MMX_PSUBSWirr",
"MMX_PSUBUSBirr",
@@ -372,14 +356,6 @@ def: InstRW<[SKLWriteResGroup3], (instregex "COMP_FST0r",
"COM_FST0r",
"MMX_MOVD64rr",
"MMX_MOVD64to64rr",
- "MMX_PALIGNRrri",
- "MMX_PSHUFWri",
- "MMX_PUNPCKHBWirr",
- "MMX_PUNPCKHDQirr",
- "MMX_PUNPCKHWDirr",
- "MMX_PUNPCKLBWirr",
- "MMX_PUNPCKLDQirr",
- "MMX_PUNPCKLWDirr",
"UCOM_FPr",
"UCOM_Fr",
"VBROADCASTSSrr",
@@ -1134,10 +1110,7 @@ def SKLWriteResGroup58 : SchedWriteRes<[SKLPort23]> {
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKLWriteResGroup58], (instregex "MMX_MOVD64rm",
- "MMX_MOVD64to64rm",
- "MMX_MOVQ64rm",
- "MOVSX(16|32|64)rm16",
+def: InstRW<[SKLWriteResGroup58], (instregex "MOVSX(16|32|64)rm16",
"MOVSX(16|32|64)rm32",
"MOVSX(16|32|64)rm8",
"MOVZX(16|32|64)rm16",
@@ -1298,7 +1271,6 @@ def SKLWriteResGroup71 : SchedWriteRes<[SKLPort5,SKLPort23]> {
def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PALIGNRrmi",
"MMX_PINSRWrm",
"MMX_PSHUFBrm",
- "MMX_PSHUFWmi",
"MMX_PUNPCKHBWirm",
"MMX_PUNPCKHDQirm",
"MMX_PUNPCKHWDirm",
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeServer.td b/llvm/lib/Target/X86/X86SchedSkylakeServer.td
index aa2a8b24870..b19ed0efd0a 100755
--- a/llvm/lib/Target/X86/X86SchedSkylakeServer.td
+++ b/llvm/lib/Target/X86/X86SchedSkylakeServer.td
@@ -370,22 +370,6 @@ def: InstRW<[SKXWriteResGroup1], (instregex "KANDBrr",
"MMX_PMAXUBirr",
"MMX_PMINSWirr",
"MMX_PMINUBirr",
- "MMX_PSLLDri",
- "MMX_PSLLDrr",
- "MMX_PSLLQri",
- "MMX_PSLLQrr",
- "MMX_PSLLWri",
- "MMX_PSLLWrr",
- "MMX_PSRADri",
- "MMX_PSRADrr",
- "MMX_PSRAWri",
- "MMX_PSRAWrr",
- "MMX_PSRLDri",
- "MMX_PSRLDrr",
- "MMX_PSRLQri",
- "MMX_PSRLQrr",
- "MMX_PSRLWri",
- "MMX_PSRLWrr",
"MMX_PSUBSBirr",
"MMX_PSUBSWirr",
"MMX_PSUBUSBirr",
@@ -416,14 +400,6 @@ def: InstRW<[SKXWriteResGroup3], (instregex "COMP_FST0r",
"KMOVWkr",
"MMX_MOVD64rr",
"MMX_MOVD64to64rr",
- "MMX_PALIGNRrri",
- "MMX_PSHUFWri",
- "MMX_PUNPCKHBWirr",
- "MMX_PUNPCKHDQirr",
- "MMX_PUNPCKHWDirr",
- "MMX_PUNPCKLBWirr",
- "MMX_PUNPCKLDQirr",
- "MMX_PUNPCKLWDirr",
"MOV64toPQIrr",
"MOVDDUPrr",
"MOVDI2PDIrr",
@@ -2405,10 +2381,7 @@ def SKXWriteResGroup58 : SchedWriteRes<[SKXPort23]> {
let NumMicroOps = 1;
let ResourceCycles = [1];
}
-def: InstRW<[SKXWriteResGroup58], (instregex "MMX_MOVD64rm",
- "MMX_MOVD64to64rm",
- "MMX_MOVQ64rm",
- "MOV64toPQIrm",
+def: InstRW<[SKXWriteResGroup58], (instregex "MOV64toPQIrm",
"MOVDDUPrm",
"MOVDI2PDIrm",
"MOVQI2PQIrm",
@@ -2730,7 +2703,6 @@ def SKXWriteResGroup75 : SchedWriteRes<[SKXPort5,SKXPort23]> {
def: InstRW<[SKXWriteResGroup75], (instregex "MMX_PALIGNRrmi",
"MMX_PINSRWrm",
"MMX_PSHUFBrm",
- "MMX_PSHUFWmi",
"MMX_PUNPCKHBWirm",
"MMX_PUNPCKHDQirm",
"MMX_PUNPCKHWDirm",
diff --git a/llvm/lib/Target/X86/X86ScheduleAtom.td b/llvm/lib/Target/X86/X86ScheduleAtom.td
index 94c88c5258c..48463c066f9 100644
--- a/llvm/lib/Target/X86/X86ScheduleAtom.td
+++ b/llvm/lib/Target/X86/X86ScheduleAtom.td
@@ -303,8 +303,8 @@ def : InstRW<[AtomWrite0_1], (instrs FXAM,
DEC8m, DEC16m, DEC32m, DEC64m,
INC8m, INC16m, INC32m, INC64m,
MOVSX64rr32,
- MMX_MOVD64rr, MMX_MOVD64mr,
- MMX_MOVD64to64rr, MMX_MOVD64to64rm,
+ MMX_MOVD64rr,
+ MMX_MOVD64to64rr,
MMX_PSHUFBrr, MMX_PSHUFBrm,
MOVDI2PDIrr, MOVDI2PDIrm,
MOV64toPQIrr, MOV64toPQIrm,
@@ -315,11 +315,10 @@ def : InstRW<[AtomWrite0_1], (instregex "(ADC|ADD|AND|NEG|NOT|OR|SBB|SUB|XOR)(8|
"(RCL|RCR|ROL|ROR|SAR|SHL|SHR)(8|16|32|64)m",
"MOV(S|Z)X(32|64)(rr|rm)(8|8_NOREX|16)",
"LD_F(P)?(16|32|64)?(m|rr)",
- "MMX_MASKMOVQ(64)?",
"MMX_PAVG(B|W)irm",
"MMX_P(MAX|MIN)(UB|SW)irm",
"MMX_PSIGN(B|D|W)rm")>;
-
+
def AtomWrite0_3 : SchedWriteRes<[AtomPort0]> {
let Latency = 3;
let ResourceCycles = [3];
@@ -396,9 +395,6 @@ def : InstRW<[AtomWrite01_1], (instrs FDECSTP, FFREE, FFREEP, FINCSTP, LD_F0, WA
MOVSSrr, MOVSSrr_REV,
PSLLDQri, PSRLDQri)>;
def : InstRW<[AtomWrite01_1], (instregex "(MMX_)?PS(LL|RA|RL)(D|Q|W)ri",
- "MMX_PAVG(B|W)irr",
- "MMX_P(MAX|MIN)(UB|SW)irr",
- "MMX_PSIGN(B|D|W)rr",
"MMX_PACK(SSDW|SSWB|USWB)irr",
"MMX_PUNPCKH(BW|DQ|WD)irr")>;
diff --git a/llvm/lib/Target/X86/X86ScheduleZnver1.td b/llvm/lib/Target/X86/X86ScheduleZnver1.td
index 1df972f1329..4447f0b3551 100644
--- a/llvm/lib/Target/X86/X86ScheduleZnver1.td
+++ b/llvm/lib/Target/X86/X86ScheduleZnver1.td
@@ -900,12 +900,6 @@ def : InstRW<[ZnWriteFPU], (instregex "MOVDQ(A|U)rr", "VMOVDQ(A|U)rr")>;
// y <- y.
def : InstRW<[ZnWriteFPUY], (instregex "VMOVDQ(A|U)Yrr")>;
-// MOVDQ2Q.
-def : InstRW<[ZnWriteFPU], (instregex "MMX_MOVDQ2Qrr")>;
-
-// MOVQ2DQ.
-def : InstRW<[ZnWriteFPU], (instregex "MMX_MOVQ2DQrr")>;
-
// PACKSSWB/DW.
// mm <- mm.
def ZnWriteFPU12 : SchedWriteRes<[ZnFPU12]> ;
OpenPOWER on IntegriCloud