From 8616bd417f7aa1cbd1ace96662b86837c3b73bbf Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Wed, 5 Feb 2020 11:36:36 +0000 Subject: [PATCH] [X86] Fix missing load latencies (PR36894) We weren't account for load latencies in the SSE42/AES/CLMUL schedule classes --- llvm/lib/Target/X86/X86SchedSandyBridge.td | 8 ++++---- llvm/test/tools/llvm-mca/X86/Generic/resources-aes.s | 2 +- llvm/test/tools/llvm-mca/X86/Generic/resources-avx1.s | 8 ++++---- llvm/test/tools/llvm-mca/X86/Generic/resources-pclmul.s | 2 +- llvm/test/tools/llvm-mca/X86/Generic/resources-sse42.s | 4 ++-- llvm/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s | 2 +- llvm/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s | 8 ++++---- llvm/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s | 2 +- llvm/test/tools/llvm-mca/X86/SandyBridge/resources-pclmul.s | 2 +- llvm/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s | 4 ++-- 10 files changed, 21 insertions(+), 21 deletions(-) diff --git a/llvm/lib/Target/X86/X86SchedSandyBridge.td b/llvm/lib/Target/X86/X86SchedSandyBridge.td index fb1a35b..cadb06a 100644 --- a/llvm/lib/Target/X86/X86SchedSandyBridge.td +++ b/llvm/lib/Target/X86/X86SchedSandyBridge.td @@ -482,7 +482,7 @@ def : WriteRes { let ResourceCycles = [8]; } def : WriteRes { - let Latency = 11; + let Latency = 17; let ResourceCycles = [7, 1]; } @@ -504,7 +504,7 @@ def : WriteRes { let ResourceCycles = [8]; } def : WriteRes { - let Latency = 4; + let Latency = 10; let ResourceCycles = [7, 1]; } @@ -542,7 +542,7 @@ def : WriteRes { let ResourceCycles = [11]; } def : WriteRes { - let Latency = 8; + let Latency = 14; let ResourceCycles = [10, 1]; } @@ -552,7 +552,7 @@ def : WriteRes { let ResourceCycles = [18]; } def : WriteRes { - 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 5720f20..1debfd6 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 7d01c23..9d66e40 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 12f879b..4862216 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 935c5e3..9e78500 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 4083492a..fccb941 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 c9f50af4..d4132e2 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 9cdd829..8a853e6 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 9cdd829..8a853e6 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 62aa037..04e5bab 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 -- 2.7.4