[llvm] f25a2a3 - [X86] Fix missing load latencies (PR36894)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 4 10:18:53 PST 2020
Author: Simon Pilgrim
Date: 2020-02-04T18:18:29Z
New Revision: f25a2a3de5b504c54bbf273bfcbbda6345646890
URL: https://github.com/llvm/llvm-project/commit/f25a2a3de5b504c54bbf273bfcbbda6345646890
DIFF: https://github.com/llvm/llvm-project/commit/f25a2a3de5b504c54bbf273bfcbbda6345646890.diff
LOG: [X86] Fix missing load latencies (PR36894)
We weren't account for load latencies in the SSE42/AES/CLMUL schedule classes
Added:
Modified:
llvm/lib/Target/X86/X86ScheduleSLM.td
llvm/test/tools/llvm-mca/X86/SLM/resources-aes.s
llvm/test/tools/llvm-mca/X86/SLM/resources-pclmul.s
llvm/test/tools/llvm-mca/X86/SLM/resources-sse42.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ScheduleSLM.td b/llvm/lib/Target/X86/X86ScheduleSLM.td
index eca794c48d83..bedbbbc5f978 100644
--- a/llvm/lib/Target/X86/X86ScheduleSLM.td
+++ b/llvm/lib/Target/X86/X86ScheduleSLM.td
@@ -391,44 +391,15 @@ defm : X86WriteResPairUnsupported<WritePHAddZ>;
// String instructions.
// Packed Compare Implicit Length Strings, Return Mask
-def : WriteRes<WritePCmpIStrM, [SLM_FPC_RSV0]> {
- let Latency = 13;
- let ResourceCycles = [13];
-}
-def : WriteRes<WritePCmpIStrMLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> {
- let Latency = 13;
- let ResourceCycles = [13, 1];
-}
+defm : SLMWriteResPair<WritePCmpIStrM, [SLM_FPC_RSV0], 13, [13]>;
// Packed Compare Explicit Length Strings, Return Mask
-def : WriteRes<WritePCmpEStrM, [SLM_FPC_RSV0]> {
- let Latency = 17;
- let ResourceCycles = [17];
-}
-def : WriteRes<WritePCmpEStrMLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> {
- let Latency = 17;
- let ResourceCycles = [17, 1];
-}
-
+defm : SLMWriteResPair<WritePCmpEStrM, [SLM_FPC_RSV0], 17, [17]>;
// Packed Compare Implicit Length Strings, Return Index
-def : WriteRes<WritePCmpIStrI, [SLM_FPC_RSV0]> {
- let Latency = 17;
- let ResourceCycles = [17];
-}
-def : WriteRes<WritePCmpIStrILd, [SLM_FPC_RSV0, SLM_MEC_RSV]> {
- let Latency = 17;
- let ResourceCycles = [17, 1];
-}
+defm : SLMWriteResPair<WritePCmpIStrI, [SLM_FPC_RSV0], 17, [17]>;
// Packed Compare Explicit Length Strings, Return Index
-def : WriteRes<WritePCmpEStrI, [SLM_FPC_RSV0]> {
- let Latency = 21;
- let ResourceCycles = [21];
-}
-def : WriteRes<WritePCmpEStrILd, [SLM_FPC_RSV0, SLM_MEC_RSV]> {
- let Latency = 21;
- let ResourceCycles = [21, 1];
-}
+defm : SLMWriteResPair<WritePCmpEStrI, [SLM_FPC_RSV0], 21, [21]>;
// MOVMSK Instructions.
def : WriteRes<WriteFMOVMSK, [SLM_FPC_RSV1]> { let Latency = 4; }
@@ -437,42 +408,12 @@ def : WriteRes<WriteVecMOVMSKY, [SLM_FPC_RSV1]> { let Latency = 4; }
def : WriteRes<WriteMMXMOVMSK, [SLM_FPC_RSV1]> { let Latency = 4; }
// AES Instructions.
-def : WriteRes<WriteAESDecEnc, [SLM_FPC_RSV0]> {
- let Latency = 8;
- let ResourceCycles = [5];
-}
-def : WriteRes<WriteAESDecEncLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> {
- let Latency = 8;
- let ResourceCycles = [5, 1];
-}
-
-def : WriteRes<WriteAESIMC, [SLM_FPC_RSV0]> {
- let Latency = 8;
- let ResourceCycles = [5];
-}
-def : WriteRes<WriteAESIMCLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> {
- let Latency = 8;
- let ResourceCycles = [5, 1];
-}
-
-def : WriteRes<WriteAESKeyGen, [SLM_FPC_RSV0]> {
- let Latency = 8;
- let ResourceCycles = [5];
-}
-def : WriteRes<WriteAESKeyGenLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> {
- let Latency = 8;
- let ResourceCycles = [5, 1];
-}
+defm : SLMWriteResPair<WriteAESDecEnc, [SLM_FPC_RSV0], 8, [5]>;
+defm : SLMWriteResPair<WriteAESIMC, [SLM_FPC_RSV0], 8, [5]>;
+defm : SLMWriteResPair<WriteAESKeyGen, [SLM_FPC_RSV0], 8, [5]>;
// Carry-less multiplication instructions.
-def : WriteRes<WriteCLMul, [SLM_FPC_RSV0]> {
- let Latency = 10;
- let ResourceCycles = [10];
-}
-def : WriteRes<WriteCLMulLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> {
- let Latency = 10;
- let ResourceCycles = [10, 1];
-}
+defm : SLMWriteResPair<WriteCLMul, [SLM_FPC_RSV0], 10, [10]>;
def : WriteRes<WriteSystem, [SLM_FPC_RSV0]> { let Latency = 100; }
def : WriteRes<WriteMicrocoded, [SLM_FPC_RSV0]> { let Latency = 100; }
diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-aes.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-aes.s
index ae60a08fa7ec..144b94259047 100644
--- a/llvm/test/tools/llvm-mca/X86/SLM/resources-aes.s
+++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-aes.s
@@ -29,17 +29,17 @@ aeskeygenassist $22, (%rax), %xmm2
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 8 5.00 aesdec %xmm0, %xmm2
-# CHECK-NEXT: 1 8 5.00 * aesdec (%rax), %xmm2
+# CHECK-NEXT: 1 11 5.00 * aesdec (%rax), %xmm2
# CHECK-NEXT: 1 8 5.00 aesdeclast %xmm0, %xmm2
-# CHECK-NEXT: 1 8 5.00 * aesdeclast (%rax), %xmm2
+# CHECK-NEXT: 1 11 5.00 * aesdeclast (%rax), %xmm2
# CHECK-NEXT: 1 8 5.00 aesenc %xmm0, %xmm2
-# CHECK-NEXT: 1 8 5.00 * aesenc (%rax), %xmm2
+# CHECK-NEXT: 1 11 5.00 * aesenc (%rax), %xmm2
# CHECK-NEXT: 1 8 5.00 aesenclast %xmm0, %xmm2
-# CHECK-NEXT: 1 8 5.00 * aesenclast (%rax), %xmm2
+# CHECK-NEXT: 1 11 5.00 * aesenclast (%rax), %xmm2
# CHECK-NEXT: 1 8 5.00 aesimc %xmm0, %xmm2
-# CHECK-NEXT: 1 8 5.00 * aesimc (%rax), %xmm2
+# CHECK-NEXT: 1 11 5.00 * aesimc (%rax), %xmm2
# CHECK-NEXT: 1 8 5.00 aeskeygenassist $22, %xmm0, %xmm2
-# CHECK-NEXT: 1 8 5.00 * aeskeygenassist $22, (%rax), %xmm2
+# CHECK-NEXT: 1 11 5.00 * aeskeygenassist $22, (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - SLMDivider
diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-pclmul.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-pclmul.s
index 92373db39134..37327cfa1eb6 100644
--- a/llvm/test/tools/llvm-mca/X86/SLM/resources-pclmul.s
+++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-pclmul.s
@@ -14,7 +14,7 @@ pclmulqdq $11, (%rax), %xmm2
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 10 10.00 pclmulqdq $11, %xmm0, %xmm2
-# CHECK-NEXT: 1 10 10.00 * pclmulqdq $11, (%rax), %xmm2
+# CHECK-NEXT: 1 13 10.00 * pclmulqdq $11, (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - SLMDivider
diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse42.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse42.s
index 6354ad47dc41..39a6e9520972 100644
--- a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse42.s
+++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse42.s
@@ -51,13 +51,13 @@ pcmpgtq (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 crc32q %rax, %rcx
# CHECK-NEXT: 1 6 1.00 * crc32q (%rax), %rcx
# CHECK-NEXT: 1 21 21.00 pcmpestri $1, %xmm0, %xmm2
-# CHECK-NEXT: 1 21 21.00 * pcmpestri $1, (%rax), %xmm2
+# CHECK-NEXT: 1 24 21.00 * pcmpestri $1, (%rax), %xmm2
# CHECK-NEXT: 1 17 17.00 pcmpestrm $1, %xmm0, %xmm2
-# CHECK-NEXT: 1 17 17.00 * pcmpestrm $1, (%rax), %xmm2
+# CHECK-NEXT: 1 20 17.00 * pcmpestrm $1, (%rax), %xmm2
# CHECK-NEXT: 1 17 17.00 pcmpistri $1, %xmm0, %xmm2
-# CHECK-NEXT: 1 17 17.00 * pcmpistri $1, (%rax), %xmm2
+# CHECK-NEXT: 1 20 17.00 * pcmpistri $1, (%rax), %xmm2
# CHECK-NEXT: 1 13 13.00 pcmpistrm $1, %xmm0, %xmm2
-# CHECK-NEXT: 1 13 13.00 * pcmpistrm $1, (%rax), %xmm2
+# CHECK-NEXT: 1 16 13.00 * pcmpistrm $1, (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 pcmpgtq %xmm0, %xmm2
# CHECK-NEXT: 1 4 1.00 * pcmpgtq (%rax), %xmm2
More information about the llvm-commits
mailing list