[llvm] 8616bd4 - [X86] Fix missing load latencies (PR36894)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 5 03:53:34 PST 2020


Author: Simon Pilgrim
Date: 2020-02-05T11:53:16Z
New Revision: 8616bd417f7aa1cbd1ace96662b86837c3b73bbf

URL: https://github.com/llvm/llvm-project/commit/8616bd417f7aa1cbd1ace96662b86837c3b73bbf
DIFF: https://github.com/llvm/llvm-project/commit/8616bd417f7aa1cbd1ace96662b86837c3b73bbf.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/X86SchedSandyBridge.td
    llvm/test/tools/llvm-mca/X86/Generic/resources-aes.s
    llvm/test/tools/llvm-mca/X86/Generic/resources-avx1.s
    llvm/test/tools/llvm-mca/X86/Generic/resources-pclmul.s
    llvm/test/tools/llvm-mca/X86/Generic/resources-sse42.s
    llvm/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s
    llvm/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s
    llvm/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s
    llvm/test/tools/llvm-mca/X86/SandyBridge/resources-pclmul.s
    llvm/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86SchedSandyBridge.td b/llvm/lib/Target/X86/X86SchedSandyBridge.td
index fb1a35b48db1..cadb06a9fe8b 100644
--- a/llvm/lib/Target/X86/X86SchedSandyBridge.td
+++ b/llvm/lib/Target/X86/X86SchedSandyBridge.td
@@ -482,7 +482,7 @@ def : WriteRes<WritePCmpEStrM, [SBPort015]> {
   let ResourceCycles = [8];
 }
 def : WriteRes<WritePCmpEStrMLd, [SBPort015, SBPort23]> {
-  let Latency = 11;
+  let Latency = 17;
   let ResourceCycles = [7, 1];
 }
 
@@ -504,7 +504,7 @@ def : WriteRes<WritePCmpEStrI, [SBPort015]> {
   let ResourceCycles = [8];
 }
 def : WriteRes<WritePCmpEStrILd, [SBPort015, SBPort23]> {
-  let Latency = 4;
+  let Latency = 10;
   let ResourceCycles = [7, 1];
 }
 
@@ -542,7 +542,7 @@ def : WriteRes<WriteAESKeyGen, [SBPort015]> {
   let ResourceCycles = [11];
 }
 def : WriteRes<WriteAESKeyGenLd, [SBPort015, SBPort23]> {
-  let Latency = 8;
+  let Latency = 14;
   let ResourceCycles = [10, 1];
 }
 
@@ -552,7 +552,7 @@ def : WriteRes<WriteCLMul, [SBPort015]> {
   let ResourceCycles = [18];
 }
 def : WriteRes<WriteCLMulLd, [SBPort015, SBPort23]> {
-  let Latency = 14;
+  let Latency = 20;
   let ResourceCycles = [17, 1];
 }
 

diff  --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-aes.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-aes.s
index 5720f208ecbc..1debfd65efc1 100644
--- a/llvm/test/tools/llvm-mca/X86/Generic/resources-aes.s
+++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-aes.s
@@ -39,7 +39,7 @@ aeskeygenassist $22, (%rax), %xmm2
 # CHECK-NEXT:  2      12    2.00                        aesimc	%xmm0, %xmm2
 # CHECK-NEXT:  3      18    2.00    *                   aesimc	(%rax), %xmm2
 # CHECK-NEXT:  1      8     3.67                        aeskeygenassist	$22, %xmm0, %xmm2
-# CHECK-NEXT:  1      8     3.33    *                   aeskeygenassist	$22, (%rax), %xmm2
+# CHECK-NEXT:  1      14    3.33    *                   aeskeygenassist	$22, (%rax), %xmm2
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - SBDivider

diff  --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-avx1.s
index 7d01c23baa51..9d66e40a868e 100644
--- a/llvm/test/tools/llvm-mca/X86/Generic/resources-avx1.s
+++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-avx1.s
@@ -1061,7 +1061,7 @@ vzeroupper
 # CHECK-NEXT:  2      12    2.00                        vaesimc	%xmm0, %xmm2
 # CHECK-NEXT:  3      18    2.00    *                   vaesimc	(%rax), %xmm2
 # CHECK-NEXT:  1      8     3.67                        vaeskeygenassist	$22, %xmm0, %xmm2
-# CHECK-NEXT:  1      8     3.33    *                   vaeskeygenassist	$22, (%rax), %xmm2
+# CHECK-NEXT:  1      14    3.33    *                   vaeskeygenassist	$22, (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        vandnpd	%xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     1.00    *                   vandnpd	(%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     1.00                        vandnpd	%ymm0, %ymm1, %ymm2
@@ -1404,7 +1404,7 @@ vzeroupper
 # CHECK-NEXT:  1      1     0.50                        vpblendw	$11, %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpblendw	$11, (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      14    6.00                        vpclmulqdq	$11, %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  1      14    5.67    *                   vpclmulqdq	$11, (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      20    5.67    *                   vpclmulqdq	$11, (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqb	%xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpcmpeqb	(%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqd	%xmm0, %xmm1, %xmm2
@@ -1414,9 +1414,9 @@ vzeroupper
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqw	%xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpcmpeqw	(%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      4     2.67                        vpcmpestri	$1, %xmm0, %xmm2
-# CHECK-NEXT:  1      4     2.33    *                   vpcmpestri	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      10    2.33    *                   vpcmpestri	$1, (%rax), %xmm2
 # CHECK-NEXT:  1      11    2.67                        vpcmpestrm	$1, %xmm0, %xmm2
-# CHECK-NEXT:  1      11    2.33    *                   vpcmpestrm	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      17    2.33    *                   vpcmpestrm	$1, (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpcmpgtb	%xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpcmpgtb	(%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpcmpgtd	%xmm0, %xmm1, %xmm2

diff  --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-pclmul.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-pclmul.s
index 12f879b5fb0f..486221635c9a 100644
--- a/llvm/test/tools/llvm-mca/X86/Generic/resources-pclmul.s
+++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-pclmul.s
@@ -14,7 +14,7 @@ pclmulqdq     $11, (%rax), %xmm2
 
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  1      14    6.00                        pclmulqdq	$11, %xmm0, %xmm2
-# CHECK-NEXT:  1      14    5.67    *                   pclmulqdq	$11, (%rax), %xmm2
+# CHECK-NEXT:  1      20    5.67    *                   pclmulqdq	$11, (%rax), %xmm2
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - SBDivider

diff  --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-sse42.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-sse42.s
index 935c5e3d7f3e..9e78500ea95a 100644
--- a/llvm/test/tools/llvm-mca/X86/Generic/resources-sse42.s
+++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-sse42.s
@@ -51,9 +51,9 @@ pcmpgtq     (%rax), %xmm2
 # CHECK-NEXT:  1      3     1.00                        crc32q	%rax, %rcx
 # CHECK-NEXT:  2      8     1.00    *                   crc32q	(%rax), %rcx
 # CHECK-NEXT:  1      4     2.67                        pcmpestri	$1, %xmm0, %xmm2
-# CHECK-NEXT:  1      4     2.33    *                   pcmpestri	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      10    2.33    *                   pcmpestri	$1, (%rax), %xmm2
 # CHECK-NEXT:  1      11    2.67                        pcmpestrm	$1, %xmm0, %xmm2
-# CHECK-NEXT:  1      11    2.33    *                   pcmpestrm	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      17    2.33    *                   pcmpestrm	$1, (%rax), %xmm2
 # CHECK-NEXT:  3      11    3.00                        pcmpistri	$1, %xmm0, %xmm2
 # CHECK-NEXT:  4      17    3.00    *                   pcmpistri	$1, (%rax), %xmm2
 # CHECK-NEXT:  3      11    3.00                        pcmpistrm	$1, %xmm0, %xmm2

diff  --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s
index 4083492a46d6..fccb9414a74a 100644
--- a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s
+++ b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s
@@ -39,7 +39,7 @@ aeskeygenassist $22, (%rax), %xmm2
 # CHECK-NEXT:  2      12    2.00                        aesimc	%xmm0, %xmm2
 # CHECK-NEXT:  3      18    2.00    *                   aesimc	(%rax), %xmm2
 # CHECK-NEXT:  1      8     3.67                        aeskeygenassist	$22, %xmm0, %xmm2
-# CHECK-NEXT:  1      8     3.33    *                   aeskeygenassist	$22, (%rax), %xmm2
+# CHECK-NEXT:  1      14    3.33    *                   aeskeygenassist	$22, (%rax), %xmm2
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - SBDivider

diff  --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s
index c9f50af487ac..d4132e2ab2f1 100644
--- a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s
+++ b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s
@@ -1061,7 +1061,7 @@ vzeroupper
 # CHECK-NEXT:  2      12    2.00                        vaesimc	%xmm0, %xmm2
 # CHECK-NEXT:  3      18    2.00    *                   vaesimc	(%rax), %xmm2
 # CHECK-NEXT:  1      8     3.67                        vaeskeygenassist	$22, %xmm0, %xmm2
-# CHECK-NEXT:  1      8     3.33    *                   vaeskeygenassist	$22, (%rax), %xmm2
+# CHECK-NEXT:  1      14    3.33    *                   vaeskeygenassist	$22, (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        vandnpd	%xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     1.00    *                   vandnpd	(%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     1.00                        vandnpd	%ymm0, %ymm1, %ymm2
@@ -1404,7 +1404,7 @@ vzeroupper
 # CHECK-NEXT:  1      1     0.50                        vpblendw	$11, %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpblendw	$11, (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      14    6.00                        vpclmulqdq	$11, %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  1      14    5.67    *                   vpclmulqdq	$11, (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      20    5.67    *                   vpclmulqdq	$11, (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqb	%xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpcmpeqb	(%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqd	%xmm0, %xmm1, %xmm2
@@ -1414,9 +1414,9 @@ vzeroupper
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqw	%xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpcmpeqw	(%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      4     2.67                        vpcmpestri	$1, %xmm0, %xmm2
-# CHECK-NEXT:  1      4     2.33    *                   vpcmpestri	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      10    2.33    *                   vpcmpestri	$1, (%rax), %xmm2
 # CHECK-NEXT:  1      11    2.67                        vpcmpestrm	$1, %xmm0, %xmm2
-# CHECK-NEXT:  1      11    2.33    *                   vpcmpestrm	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      17    2.33    *                   vpcmpestrm	$1, (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpcmpgtb	%xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpcmpgtb	(%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpcmpgtd	%xmm0, %xmm1, %xmm2

diff  --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s
index 9cdd8290a4fa..8a853e6b04a6 100644
--- a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s
+++ b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s
@@ -14,7 +14,7 @@ pclmulqdq     $11, (%rax), %xmm2
 
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  1      14    6.00                        pclmulqdq	$11, %xmm0, %xmm2
-# CHECK-NEXT:  1      14    5.67    *                   pclmulqdq	$11, (%rax), %xmm2
+# CHECK-NEXT:  1      20    5.67    *                   pclmulqdq	$11, (%rax), %xmm2
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - SBDivider

diff  --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-pclmul.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-pclmul.s
index 9cdd8290a4fa..8a853e6b04a6 100644
--- a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-pclmul.s
+++ b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-pclmul.s
@@ -14,7 +14,7 @@ pclmulqdq     $11, (%rax), %xmm2
 
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  1      14    6.00                        pclmulqdq	$11, %xmm0, %xmm2
-# CHECK-NEXT:  1      14    5.67    *                   pclmulqdq	$11, (%rax), %xmm2
+# CHECK-NEXT:  1      20    5.67    *                   pclmulqdq	$11, (%rax), %xmm2
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - SBDivider

diff  --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s
index 62aa03755ef8..04e5bab189bb 100644
--- a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s
+++ b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s
@@ -51,9 +51,9 @@ pcmpgtq     (%rax), %xmm2
 # CHECK-NEXT:  1      3     1.00                        crc32q	%rax, %rcx
 # CHECK-NEXT:  2      8     1.00    *                   crc32q	(%rax), %rcx
 # CHECK-NEXT:  1      4     2.67                        pcmpestri	$1, %xmm0, %xmm2
-# CHECK-NEXT:  1      4     2.33    *                   pcmpestri	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      10    2.33    *                   pcmpestri	$1, (%rax), %xmm2
 # CHECK-NEXT:  1      11    2.67                        pcmpestrm	$1, %xmm0, %xmm2
-# CHECK-NEXT:  1      11    2.33    *                   pcmpestrm	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      17    2.33    *                   pcmpestrm	$1, (%rax), %xmm2
 # CHECK-NEXT:  3      11    3.00                        pcmpistri	$1, %xmm0, %xmm2
 # CHECK-NEXT:  4      17    3.00    *                   pcmpistri	$1, (%rax), %xmm2
 # CHECK-NEXT:  3      11    3.00                        pcmpistrm	$1, %xmm0, %xmm2


        


More information about the llvm-commits mailing list