[llvm] da2366d - [X86] Replace unnecessary SKL conversion overrides with better base class defs
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 12 02:24:11 PST 2022
Author: Simon Pilgrim
Date: 2022-11-12T10:23:58Z
New Revision: da2366d5322ec2c5b95056e0b48c3bc6fcee02bc
URL: https://github.com/llvm/llvm-project/commit/da2366d5322ec2c5b95056e0b48c3bc6fcee02bc
DIFF: https://github.com/llvm/llvm-project/commit/da2366d5322ec2c5b95056e0b48c3bc6fcee02bc.diff
LOG: [X86] Replace unnecessary SKL conversion overrides with better base class defs
Split various conversion instructions that use different scheduler pipes for the reg-reg and reg-mem variants (and not an additional Port23 uop for memory folding) - declare the classes separately instead of using the SKLWriteResPair helper
Added:
Modified:
llvm/lib/Target/X86/X86SchedSkylakeClient.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td
index 42b81eb9005e..bb3f3cfa0cb6 100644
--- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td
+++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td
@@ -442,27 +442,30 @@ def : WriteRes<WriteVecExtractSt, [SKLPort4,SKLPort5,SKLPort237]> {
}
// Conversion between integer and float.
-defm : SKLWriteResPair<WriteCvtSS2I, [SKLPort1], 3>;
-defm : SKLWriteResPair<WriteCvtPS2I, [SKLPort1], 3>;
-defm : SKLWriteResPair<WriteCvtPS2IY, [SKLPort1], 3>;
+defm : SKLWriteResPair<WriteCvtSS2I, [SKLPort0,SKLPort01], 6, [1,1], 2, 5>;
+defm : SKLWriteResPair<WriteCvtPS2I, [SKLPort01], 4, [1], 1, 6>;
+defm : SKLWriteResPair<WriteCvtPS2IY, [SKLPort01], 4, [1], 1, 7>;
defm : X86WriteResPairUnsupported<WriteCvtPS2IZ>;
-defm : SKLWriteResPair<WriteCvtSD2I, [SKLPort1], 3>;
+defm : SKLWriteResPair<WriteCvtSD2I, [SKLPort0,SKLPort01], 6, [1,1], 2, 5>;
defm : SKLWriteResPair<WriteCvtPD2I, [SKLPort1], 3>;
defm : SKLWriteResPair<WriteCvtPD2IY, [SKLPort1], 3>;
defm : X86WriteResPairUnsupported<WriteCvtPD2IZ>;
defm : SKLWriteResPair<WriteCvtI2SS, [SKLPort1], 4>;
-defm : SKLWriteResPair<WriteCvtI2PS, [SKLPort1], 4>;
-defm : SKLWriteResPair<WriteCvtI2PSY, [SKLPort1], 4>;
+defm : SKLWriteResPair<WriteCvtI2PS, [SKLPort01], 4, [1], 1, 6>;
+defm : SKLWriteResPair<WriteCvtI2PSY, [SKLPort01], 4, [1], 1, 7>;
defm : X86WriteResPairUnsupported<WriteCvtI2PSZ>;
defm : SKLWriteResPair<WriteCvtI2SD, [SKLPort1], 4>;
defm : SKLWriteResPair<WriteCvtI2PD, [SKLPort0,SKLPort5], 5, [1,1], 2, 6>;
defm : SKLWriteResPair<WriteCvtI2PDY, [SKLPort0,SKLPort5], 7, [1,1], 2, 6>;
defm : X86WriteResPairUnsupported<WriteCvtI2PDZ>;
-defm : SKLWriteResPair<WriteCvtSS2SD, [SKLPort1], 3>;
-defm : SKLWriteResPair<WriteCvtPS2PD, [SKLPort1], 3>;
-defm : SKLWriteResPair<WriteCvtPS2PDY, [SKLPort1], 3>;
+defm : X86WriteRes<WriteCvtSS2SD, [SKLPort5,SKLPort01], 5, [1,1], 2>;
+defm : X86WriteRes<WriteCvtSS2SDLd, [SKLPort23,SKLPort01], 10, [1,1], 2>;
+defm : X86WriteRes<WriteCvtPS2PD, [SKLPort5,SKLPort01], 5, [1,1], 2>;
+defm : X86WriteRes<WriteCvtPS2PDLd, [SKLPort23,SKLPort01], 9, [1,1], 2>;
+defm : X86WriteRes<WriteCvtPS2PDY, [SKLPort5,SKLPort01], 7, [1,1], 2>;
+defm : X86WriteRes<WriteCvtPS2PDYLd, [SKLPort23,SKLPort01], 11, [1,1], 2>;
defm : X86WriteResPairUnsupported<WriteCvtPS2PDZ>;
defm : SKLWriteResPair<WriteCvtSD2SS, [SKLPort5,SKLPort01], 5, [1,1], 2, 5>;
defm : SKLWriteResPair<WriteCvtPD2PS, [SKLPort5,SKLPort01], 5, [1,1], 2, 6>;
@@ -884,14 +887,6 @@ def SKLWriteResGroup47 : SchedWriteRes<[SKLPort0]> {
}
def: InstRW<[SKLWriteResGroup47], (instregex "MUL_(FPrST0|FST0r|FrST0)")>;
-def SKLWriteResGroup48 : SchedWriteRes<[SKLPort01]> {
- let Latency = 4;
- let NumMicroOps = 1;
- let ResourceCycles = [1];
-}
-def: InstRW<[SKLWriteResGroup48], (instregex "(V?)CVTDQ2PS(Y?)rr",
- "(V?)CVT(T?)PS2DQ(Y?)rr")>;
-
def SKLWriteResGroup53 : SchedWriteRes<[SKLPort4,SKLPort5,SKLPort237]> {
let Latency = 4;
let NumMicroOps = 3;
@@ -936,11 +931,9 @@ def SKLWriteResGroup60 : SchedWriteRes<[SKLPort5,SKLPort01]> {
def: InstRW<[SKLWriteResGroup60], (instregex "MMX_CVT(T?)PD2PIrr",
"MMX_CVT(T?)PS2PIrr",
"(V?)CVT(T?)PD2DQrr",
- "(V?)CVTPS2PDrr",
"(V?)CVTSI642SDrr",
"(V?)CVTSI2SDrr",
- "(V?)CVTSI2SSrr",
- "(V?)CVTSS2SDrr")>;
+ "(V?)CVTSI2SSrr")>;
def SKLWriteResGroup61 : SchedWriteRes<[SKLPort1,SKLPort6,SKLPort06]> {
let Latency = 5;
@@ -1008,14 +1001,6 @@ def: InstRW<[SKLWriteResGroup69], (instrs MMX_PADDSBrm,
MMX_PSUBUSBrm,
MMX_PSUBUSWrm)>;
-def SKLWriteResGroup70 : SchedWriteRes<[SKLPort0,SKLPort01]> {
- let Latency = 6;
- let NumMicroOps = 2;
- let ResourceCycles = [1,1];
-}
-def: InstRW<[SKLWriteResGroup70], (instregex "(V?)CVT(T?)SS2SIrr",
- "(V?)CVT(T?)SD2SI(64)?rr")>;
-
def SKLWriteResGroup72 : SchedWriteRes<[SKLPort6,SKLPort23]> {
let Latency = 6;
let NumMicroOps = 2;
@@ -1111,8 +1096,7 @@ def SKLWriteResGroup89 : SchedWriteRes<[SKLPort5,SKLPort01]> {
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup89], (instrs VCVTPS2PDYrr,
- VCVTPD2DQYrr,
+def: InstRW<[SKLWriteResGroup89], (instrs VCVTPD2DQYrr,
VCVTTPD2DQYrr)>;
def SKLWriteResGroup91 : SchedWriteRes<[SKLPort23,SKLPort015]> {
@@ -1290,8 +1274,7 @@ def SKLWriteResGroup123 : SchedWriteRes<[SKLPort23,SKLPort01]> {
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[SKLWriteResGroup123], (instregex "MMX_CVT(T?)PS2PIrm",
- "(V?)CVTPS2PDrm")>;
+def: InstRW<[SKLWriteResGroup123], (instregex "MMX_CVT(T?)PS2PIrm")>;
def SKLWriteResGroup128 : SchedWriteRes<[SKLPort5,SKLPort01,SKLPort23]> {
let Latency = 9;
@@ -1318,16 +1301,6 @@ def: InstRW<[SKLWriteResGroup133], (instregex "(ADD|SUB|SUBR)_F(32|64)m",
"ILD_F(16|32|64)m")>;
def: InstRW<[SKLWriteResGroup133], (instrs VPCMPGTQYrm)>;
-def SKLWriteResGroup134 : SchedWriteRes<[SKLPort01,SKLPort23]> {
- let Latency = 10;
- let NumMicroOps = 2;
- let ResourceCycles = [1,1];
-}
-def: InstRW<[SKLWriteResGroup134], (instregex "(V?)CVTDQ2PSrm",
- "(V?)CVTPS2DQrm",
- "(V?)CVTSS2SDrm",
- "(V?)CVTTPS2DQrm")>;
-
def SKLWriteResGroup138 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
let Latency = 10;
let NumMicroOps = 3;
@@ -1357,16 +1330,6 @@ def SKLWriteResGroup146 : SchedWriteRes<[SKLPort0,SKLPort23]> {
}
def: InstRW<[SKLWriteResGroup146], (instregex "MUL_F(32|64)m")>;
-def SKLWriteResGroup147 : SchedWriteRes<[SKLPort01,SKLPort23]> {
- let Latency = 11;
- let NumMicroOps = 2;
- let ResourceCycles = [1,1];
-}
-def: InstRW<[SKLWriteResGroup147], (instrs VCVTDQ2PSYrm,
- VCVTPS2PDYrm,
- VCVTPS2DQYrm,
- VCVTTPS2DQYrm)>;
-
def SKLWriteResGroup149 : SchedWriteRes<[SKLPort5,SKLPort23]> {
let Latency = 11;
let NumMicroOps = 3;
@@ -1374,14 +1337,6 @@ def SKLWriteResGroup149 : SchedWriteRes<[SKLPort5,SKLPort23]> {
}
def: InstRW<[SKLWriteResGroup149], (instregex "FICOM(P?)(16|32)m")>;
-def SKLWriteResGroup151 : SchedWriteRes<[SKLPort0,SKLPort23,SKLPort01]> {
- let Latency = 11;
- let NumMicroOps = 3;
- let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SKLWriteResGroup151], (instregex "(V?)CVT(T?)SD2SI(64)?rm",
- "(V?)CVT(T?)SS2SI(64)?rm")>;
-
def SKLWriteResGroup152 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort01]> {
let Latency = 11;
let NumMicroOps = 3;
More information about the llvm-commits
mailing list