[X86] Fix missing load latencies (PR36894)
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 5 Feb 2020 11:36:36 +0000 (11:36 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 5 Feb 2020 11:53:16 +0000 (11:53 +0000)
We weren't account for load latencies in the SSE42/AES/CLMUL schedule classes

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

index fb1a35b..cadb06a 100644 (file)
@@ -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];
 }
 
index 5720f20..1debfd6 100644 (file)
@@ -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          3.33    *                   aeskeygenassist        $22, (%rax), %xmm2
+# CHECK-NEXT:  1      14    3.33    *                   aeskeygenassist        $22, (%rax), %xmm2
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - SBDivider
index 7d01c23..9d66e40 100644 (file)
@@ -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          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          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
index 12f879b..4862216 100644 (file)
@@ -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
index 935c5e3..9e78500 100644 (file)
@@ -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          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
index 4083492..fccb941 100644 (file)
@@ -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          3.33    *                   aeskeygenassist        $22, (%rax), %xmm2
+# CHECK-NEXT:  1      14    3.33    *                   aeskeygenassist        $22, (%rax), %xmm2
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - SBDivider
index c9f50af..d4132e2 100644 (file)
@@ -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          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          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
index 9cdd829..8a853e6 100644 (file)
@@ -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
index 9cdd829..8a853e6 100644 (file)
@@ -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
index 62aa037..04e5bab 100644 (file)
@@ -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          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