From bf989187c30f37cfb1bb1496c06fe6047ee15202 Mon Sep 17 00:00:00 2001 From: Andrea Di Biagio Date: Mon, 19 Aug 2019 18:20:30 +0000 Subject: [PATCH] [X86] Move scheduling tests for CMPXCHG to the corresponding resources-x86_64.s files. NFC In D66424 it has been requested to move all the new tests added by r369278 into resources-x86_64.s. That is because only the 8b/16 ops should be tested by resources-cmpxchg.s. This partially reverts r369278. llvm-svn: 369288 --- .../tools/llvm-mca/X86/Atom/resources-cmpxchg.s | 41 +--------------------- .../tools/llvm-mca/X86/Atom/resources-x86_64.s | 14 +++++++- .../llvm-mca/X86/Barcelona/resources-cmpxchg.s | 41 +--------------------- .../llvm-mca/X86/Barcelona/resources-x86_64.s | 14 +++++++- .../tools/llvm-mca/X86/BdVer2/resources-cmpxchg.s | 41 +--------------------- .../tools/llvm-mca/X86/BdVer2/resources-x86_64.s | 14 +++++++- .../llvm-mca/X86/Broadwell/resources-cmpxchg.s | 41 +--------------------- .../llvm-mca/X86/Broadwell/resources-x86_64.s | 14 +++++++- .../tools/llvm-mca/X86/BtVer2/resources-cmpxchg.s | 41 +--------------------- .../tools/llvm-mca/X86/BtVer2/resources-x86_64.s | 14 +++++++- .../tools/llvm-mca/X86/Generic/resources-cmpxchg.s | 41 +--------------------- .../tools/llvm-mca/X86/Generic/resources-x86_64.s | 14 +++++++- .../tools/llvm-mca/X86/Haswell/resources-cmpxchg.s | 41 +--------------------- .../tools/llvm-mca/X86/Haswell/resources-x86_64.s | 14 +++++++- .../tools/llvm-mca/X86/SLM/resources-cmpxchg.s | 41 +--------------------- .../test/tools/llvm-mca/X86/SLM/resources-x86_64.s | 14 +++++++- .../llvm-mca/X86/SandyBridge/resources-cmpxchg.s | 41 +--------------------- .../llvm-mca/X86/SandyBridge/resources-x86_64.s | 14 +++++++- .../llvm-mca/X86/SkylakeClient/resources-cmpxchg.s | 41 +--------------------- .../llvm-mca/X86/SkylakeClient/resources-x86_64.s | 14 +++++++- .../llvm-mca/X86/SkylakeServer/resources-cmpxchg.s | 41 +--------------------- .../llvm-mca/X86/SkylakeServer/resources-x86_64.s | 14 +++++++- .../tools/llvm-mca/X86/Znver1/resources-cmpxchg.s | 41 +--------------------- .../tools/llvm-mca/X86/Znver1/resources-x86_64.s | 14 +++++++- 24 files changed, 168 insertions(+), 492 deletions(-) diff --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-cmpxchg.s index d5c9093..966e78a 100644 --- a/llvm/test/tools/llvm-mca/X86/Atom/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 1 22 11.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 1 18 9.00 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 1 22 11.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 1 9 4.50 cmpxchgb %bl, %cl -# CHECK-NEXT: 1 15 7.50 cmpxchgw %bx, %cx -# CHECK-NEXT: 1 15 7.50 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 1 15 7.50 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 1 6 3.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 1 14 7.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 1 14 7.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 1 14 7.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 1 6 3.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 1 14 7.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 1 14 7.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 1 14 7.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - AtomPort0 @@ -53,7 +26,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] -# CHECK-NEXT: 115.00 115.00 +# CHECK-NEXT: 40.00 40.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] Instructions: @@ -61,15 +34,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 11.00 11.00 cmpxchg16b (%rax) # CHECK-NEXT: 9.00 9.00 lock cmpxchg8b (%rax) # CHECK-NEXT: 11.00 11.00 lock cmpxchg16b (%rax) -# CHECK-NEXT: 4.50 4.50 cmpxchgb %bl, %cl -# CHECK-NEXT: 7.50 7.50 cmpxchgw %bx, %cx -# CHECK-NEXT: 7.50 7.50 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 7.50 7.50 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 3.00 3.00 cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 7.00 7.00 cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 7.00 7.00 cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 7.00 7.00 cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 3.00 3.00 lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 7.00 7.00 lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 7.00 7.00 lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 7.00 7.00 lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s index b7bb8e2..894292b 100644 --- a/llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 1 3 1.50 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 1 9 4.50 cmpxchgb %cl, %bl # CHECK-NEXT: 1 6 3.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 1 6 3.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 1 15 7.50 cmpxchgw %cx, %bx # CHECK-NEXT: 1 14 7.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 1 14 7.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 1 15 7.50 cmpxchgl %ecx, %ebx # CHECK-NEXT: 1 14 7.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 1 14 7.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 1 15 7.50 cmpxchgq %rcx, %rbx # CHECK-NEXT: 1 14 7.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 1 14 7.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 1 121 60.50 U cpuid # CHECK-NEXT: 1 1 0.50 decb %dil # CHECK-NEXT: 1 1 1.00 * * decb (%rax) @@ -1685,7 +1693,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] -# CHECK-NEXT: 2690.50 2338.50 +# CHECK-NEXT: 2714.50 2362.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] Instructions: @@ -1898,12 +1906,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 1.50 1.50 cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 4.50 4.50 cmpxchgb %cl, %bl # CHECK-NEXT: 3.00 3.00 cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 3.00 3.00 lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 7.50 7.50 cmpxchgw %cx, %bx # CHECK-NEXT: 7.00 7.00 cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 7.00 7.00 lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 7.50 7.50 cmpxchgl %ecx, %ebx # CHECK-NEXT: 7.00 7.00 cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 7.00 7.00 lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 7.50 7.50 cmpxchgq %rcx, %rbx # CHECK-NEXT: 7.00 7.00 cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 7.00 7.00 lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 60.50 60.50 cpuid # CHECK-NEXT: 0.50 0.50 decb %dil # CHECK-NEXT: 1.00 - decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/Barcelona/resources-cmpxchg.s index 8966e1a..8173c772 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 3 6 1.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 3 6 1.00 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 3 6 1.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 4 5 1.33 cmpxchgb %bl, %cl -# CHECK-NEXT: 4 5 1.33 cmpxchgw %bx, %cx -# CHECK-NEXT: 4 5 1.33 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 4 5 1.33 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 6 8 2.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - SBDivider @@ -59,7 +32,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - - 10.00 8.00 12.00 26.00 12.00 12.00 +# CHECK-NEXT: - - 1.33 1.33 4.00 1.33 4.00 4.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -67,15 +40,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 cmpxchg16b (%rax) # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 lock cmpxchg8b (%rax) # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 lock cmpxchg16b (%rax) -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgb %bl, %cl -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgw %bx, %cx -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgl %ebx, %ecx -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgq %rbx, %rcx -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x86_64.s index 194e257..8bf04e2 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 5 8 1.00 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 4 5 1.33 cmpxchgb %cl, %bl # CHECK-NEXT: 6 8 2.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 4 5 1.33 cmpxchgw %cx, %bx # CHECK-NEXT: 6 8 2.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 4 5 1.33 cmpxchgl %ecx, %ebx # CHECK-NEXT: 6 8 2.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 4 5 1.33 cmpxchgq %rcx, %rbx # CHECK-NEXT: 6 8 2.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 1 100 0.33 U cpuid # CHECK-NEXT: 1 1 0.33 decb %dil # CHECK-NEXT: 3 7 1.00 * * decb (%rax) @@ -1691,7 +1699,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: 160.00 - 596.50 238.00 230.00 596.50 324.50 324.50 +# CHECK-NEXT: 160.00 - 597.83 239.33 234.00 605.83 328.50 328.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -1904,12 +1912,16 @@ xorq (%rax), %rdi # CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgb %cl, %bl # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgb %cl, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgw %cx, %bx # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgw %cx, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgl %ecx, %ebx # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgq %rcx, %rbx # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - cpuid # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - decb %dil # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/BdVer2/resources-cmpxchg.s index b135bc4..fb72e5f 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 22 3 69.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 18 3 26.00 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 22 3 69.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 3 3 3.00 cmpxchgb %bl, %cl -# CHECK-NEXT: 5 3 3.00 cmpxchgw %bx, %cx -# CHECK-NEXT: 5 3 3.00 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 5 3 3.00 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 5 3 23.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 3 21.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 3 21.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 3 21.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 5 3 23.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 3 21.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 3 21.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 3 21.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0.0] - PdAGLU01 @@ -74,7 +47,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] -# CHECK-NEXT: - - - - - - 374.00 - - - - - - - - - - - - - - - - +# CHECK-NEXT: - - - - - - 190.00 - - - - - - - - - - - - - - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] Instructions: @@ -82,15 +55,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: - - - - - - 69.00 - - - - - - - - - - - - - - - - cmpxchg16b (%rax) # CHECK-NEXT: - - - - - - 26.00 - - - - - - - - - - - - - - - - lock cmpxchg8b (%rax) # CHECK-NEXT: - - - - - - 69.00 - - - - - - - - - - - - - - - - lock cmpxchg16b (%rax) -# CHECK-NEXT: - - - - - - 3.00 - - - - - - - - - - - - - - - - cmpxchgb %bl, %cl -# CHECK-NEXT: - - - - - - 3.00 - - - - - - - - - - - - - - - - cmpxchgw %bx, %cx -# CHECK-NEXT: - - - - - - 3.00 - - - - - - - - - - - - - - - - cmpxchgl %ebx, %ecx -# CHECK-NEXT: - - - - - - 3.00 - - - - - - - - - - - - - - - - cmpxchgq %rbx, %rcx -# CHECK-NEXT: - - - - - - 23.00 - - - - - - - - - - - - - - - - cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: - - - - - - 23.00 - - - - - - - - - - - - - - - - lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x86_64.s index 0711fd7..d3c1d9a 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 1 100 0.50 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 3 3 3.00 cmpxchgb %cl, %bl # CHECK-NEXT: 5 3 23.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 5 3 23.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 5 3 3.00 cmpxchgw %cx, %bx # CHECK-NEXT: 6 3 21.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 6 3 21.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 5 3 3.00 cmpxchgl %ecx, %ebx # CHECK-NEXT: 6 3 21.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 6 3 21.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 5 3 3.00 cmpxchgq %rcx, %rbx # CHECK-NEXT: 6 3 21.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 6 3 21.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 1 100 0.50 U cpuid # CHECK-NEXT: 1 1 1.00 decb %dil # CHECK-NEXT: 1 6 2.00 * * decb (%rax) @@ -1706,7 +1714,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] -# CHECK-NEXT: 550.50 550.50 - - 246.00 1323.50 1562.50 - - - - - - - - - - - - 450.00 450.00 136.00 201.00 +# CHECK-NEXT: 550.50 550.50 - - 246.00 1323.50 1648.50 - - - - - - - - - - - - 450.00 450.00 136.00 201.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] Instructions: @@ -1919,12 +1927,16 @@ xorq (%rax), %rdi # CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: - - - - - - 3.00 - - - - - - - - - - - - - - - - cmpxchgb %cl, %bl # CHECK-NEXT: - - - - - - 23.00 - - - - - - - - - - - - - - - - cmpxchgb %cl, (%rbx) +# CHECK-NEXT: - - - - - - 23.00 - - - - - - - - - - - - - - - - lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: - - - - - - 3.00 - - - - - - - - - - - - - - - - cmpxchgw %cx, %bx # CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - cmpxchgw %cx, (%rbx) +# CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: - - - - - - 3.00 - - - - - - - - - - - - - - - - cmpxchgl %ecx, %ebx # CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: - - - - - - 3.00 - - - - - - - - - - - - - - - - cmpxchgq %rcx, %rbx # CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: - - - - - - 21.00 - - - - - - - - - - - - - - - - lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - cpuid # CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - - - - - - - - - - - decb %dil # CHECK-NEXT: 2.00 2.00 - - - 1.00 1.00 - - - - - - - - - - - - 1.50 1.50 - 1.00 decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/Broadwell/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-cmpxchg.s index b0de687..1d42922 100644 --- a/llvm/test/tools/llvm-mca/X86/Broadwell/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 19 21 4.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 14 16 2.75 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 19 21 4.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 5 5 1.25 cmpxchgb %bl, %cl -# CHECK-NEXT: 5 5 1.25 cmpxchgw %bx, %cx -# CHECK-NEXT: 5 5 1.25 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 5 5 1.25 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 6 8 1.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - BWDivider @@ -61,7 +34,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - - 34.50 12.50 10.00 10.00 12.00 20.50 30.50 4.00 +# CHECK-NEXT: - - 17.50 7.50 3.33 3.33 4.00 15.50 13.50 1.33 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -69,15 +42,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: - - 5.50 1.50 0.83 0.83 1.00 5.50 3.50 0.33 cmpxchg16b (%rax) # CHECK-NEXT: - - 3.25 2.25 0.83 0.83 1.00 2.25 3.25 0.33 lock cmpxchg8b (%rax) # CHECK-NEXT: - - 5.50 1.50 0.83 0.83 1.00 5.50 3.50 0.33 lock cmpxchg16b (%rax) -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgb %bl, %cl -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgw %bx, %cx -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgl %ebx, %ecx -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgq %rbx, %rcx -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s index 642e73a..4240d52 100644 --- a/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 1 100 0.25 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 5 5 1.25 cmpxchgb %cl, %bl # CHECK-NEXT: 6 8 1.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgw %cx, %bx # CHECK-NEXT: 6 8 1.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgl %ecx, %ebx # CHECK-NEXT: 6 8 1.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgq %rcx, %rbx # CHECK-NEXT: 6 8 1.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 8 18 2.00 U cpuid # CHECK-NEXT: 1 1 0.25 decb %dil # CHECK-NEXT: 3 7 1.00 * * decb (%rax) @@ -1693,7 +1701,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: 50.00 - 518.50 346.50 269.33 269.33 214.00 259.00 552.00 85.33 +# CHECK-NEXT: 50.00 - 523.50 347.50 272.67 272.67 218.00 260.00 557.00 86.67 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -1906,12 +1914,16 @@ xorq (%rax), %rdi # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgb %cl, %bl # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgb %cl, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgw %cx, %bx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgw %cx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgl %ecx, %ebx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgq %rcx, %rbx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: - - 1.75 1.25 - - - 2.25 2.75 - cpuid # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decb %dil # CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-cmpxchg.s index ba54f22..9882a53 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 2 4 1.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 2 4 1.00 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 2 4 1.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 1 1 0.50 cmpxchgb %bl, %cl -# CHECK-NEXT: 1 1 0.50 cmpxchgw %bx, %cx -# CHECK-NEXT: 1 1 0.50 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 1 1 0.50 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 2 4 1.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 2 4 1.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 2 4 1.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 2 4 1.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 2 4 1.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 2 4 1.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 2 4 1.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 2 4 1.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - JALU0 @@ -65,7 +38,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: 8.00 8.00 - - - - - 12.00 - 12.00 - - - - +# CHECK-NEXT: 2.00 2.00 - - - - - 4.00 - 4.00 - - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: @@ -73,15 +46,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - cmpxchg16b (%rax) # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - lock cmpxchg8b (%rax) # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - lock cmpxchg16b (%rax) -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpxchgb %bl, %cl -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpxchgw %bx, %cx -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpxchgl %ebx, %ecx -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpxchgq %rbx, %rcx -# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s index d467752..5fae0f6 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 1 100 0.50 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 1 1 0.50 cmpxchgb %cl, %bl # CHECK-NEXT: 2 4 1.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 2 4 1.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 1 1 0.50 cmpxchgw %cx, %bx # CHECK-NEXT: 2 4 1.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 2 4 1.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 1 1 0.50 cmpxchgl %ecx, %ebx # CHECK-NEXT: 2 4 1.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 2 4 1.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 1 1 0.50 cmpxchgq %rcx, %rbx # CHECK-NEXT: 2 4 1.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 2 4 1.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 1 100 0.50 U cpuid # CHECK-NEXT: 1 1 0.50 decb %dil # CHECK-NEXT: 1 5 1.00 * * decb (%rax) @@ -1697,7 +1705,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: 610.00 660.00 380.00 - - - - 330.00 64.00 231.00 - - - - +# CHECK-NEXT: 612.00 662.00 380.00 - - - - 334.00 64.00 235.00 - - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: @@ -1910,12 +1918,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpxchgb %cl, %bl # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpxchgw %cx, %bx # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpxchgl %ecx, %ebx # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmpxchgq %rcx, %rbx # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cpuid # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - decb %dil # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-cmpxchg.s index 8966e1a..8173c772 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 3 6 1.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 3 6 1.00 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 3 6 1.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 4 5 1.33 cmpxchgb %bl, %cl -# CHECK-NEXT: 4 5 1.33 cmpxchgw %bx, %cx -# CHECK-NEXT: 4 5 1.33 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 4 5 1.33 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 6 8 2.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - SBDivider @@ -59,7 +32,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - - 10.00 8.00 12.00 26.00 12.00 12.00 +# CHECK-NEXT: - - 1.33 1.33 4.00 1.33 4.00 4.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -67,15 +40,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 cmpxchg16b (%rax) # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 lock cmpxchg8b (%rax) # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 lock cmpxchg16b (%rax) -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgb %bl, %cl -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgw %bx, %cx -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgl %ebx, %ecx -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgq %rbx, %rcx -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-x86_64.s index 194e257..8bf04e2 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 5 8 1.00 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 4 5 1.33 cmpxchgb %cl, %bl # CHECK-NEXT: 6 8 2.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 4 5 1.33 cmpxchgw %cx, %bx # CHECK-NEXT: 6 8 2.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 4 5 1.33 cmpxchgl %ecx, %ebx # CHECK-NEXT: 6 8 2.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 4 5 1.33 cmpxchgq %rcx, %rbx # CHECK-NEXT: 6 8 2.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 1 100 0.33 U cpuid # CHECK-NEXT: 1 1 0.33 decb %dil # CHECK-NEXT: 3 7 1.00 * * decb (%rax) @@ -1691,7 +1699,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: 160.00 - 596.50 238.00 230.00 596.50 324.50 324.50 +# CHECK-NEXT: 160.00 - 597.83 239.33 234.00 605.83 328.50 328.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -1904,12 +1912,16 @@ xorq (%rax), %rdi # CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgb %cl, %bl # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgb %cl, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgw %cx, %bx # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgw %cx, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgl %ecx, %ebx # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgq %rcx, %rbx # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - cpuid # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - decb %dil # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/Haswell/resources-cmpxchg.s index f6255c9..3ce1b57 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 19 22 4.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 14 17 2.75 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 19 22 4.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 5 5 1.25 cmpxchgb %bl, %cl -# CHECK-NEXT: 5 5 1.25 cmpxchgw %bx, %cx -# CHECK-NEXT: 5 5 1.25 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 5 5 1.25 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 6 9 1.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 9 1.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 9 1.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 9 1.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 6 9 1.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 9 1.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 9 1.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 9 1.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - HWDivider @@ -61,7 +34,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - - 34.50 12.50 10.00 10.00 12.00 20.50 30.50 4.00 +# CHECK-NEXT: - - 17.50 7.50 3.33 3.33 4.00 15.50 13.50 1.33 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -69,15 +42,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: - - 5.50 1.50 0.83 0.83 1.00 5.50 3.50 0.33 cmpxchg16b (%rax) # CHECK-NEXT: - - 3.25 2.25 0.83 0.83 1.00 2.25 3.25 0.33 lock cmpxchg8b (%rax) # CHECK-NEXT: - - 5.50 1.50 0.83 0.83 1.00 5.50 3.50 0.33 lock cmpxchg16b (%rax) -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgb %bl, %cl -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgw %bx, %cx -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgl %ebx, %ecx -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgq %rbx, %rcx -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s index 5153adc..eb1d9e3 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 5 4 1.00 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 5 5 1.25 cmpxchgb %cl, %bl # CHECK-NEXT: 6 9 1.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 6 9 1.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgw %cx, %bx # CHECK-NEXT: 6 9 1.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 6 9 1.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgl %ecx, %ebx # CHECK-NEXT: 6 9 1.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 6 9 1.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgq %rcx, %rbx # CHECK-NEXT: 6 9 1.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 6 9 1.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 8 18 2.00 U cpuid # CHECK-NEXT: 1 1 0.25 decb %dil # CHECK-NEXT: 3 7 1.00 * * decb (%rax) @@ -1693,7 +1701,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: 80.00 - 573.75 371.75 269.83 269.83 209.00 286.25 636.25 82.33 +# CHECK-NEXT: 80.00 - 578.75 372.75 273.17 273.17 213.00 287.25 641.25 83.67 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -1906,12 +1914,16 @@ xorq (%rax), %rdi # CHECK-NEXT: - - 0.75 0.75 1.00 1.00 - 0.75 0.75 - cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgb %cl, %bl # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgb %cl, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgw %cx, %bx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgw %cx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgl %ecx, %ebx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgq %rcx, %rbx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: - - 1.75 1.25 - - - 2.25 2.75 - cpuid # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decb %dil # CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-cmpxchg.s index 25cdef9..f6636d3 100644 --- a/llvm/test/tools/llvm-mca/X86/SLM/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 2 4 2.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 2 4 2.00 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 2 4 2.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 1 1 0.50 cmpxchgb %bl, %cl -# CHECK-NEXT: 1 1 0.50 cmpxchgw %bx, %cx -# CHECK-NEXT: 1 1 0.50 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 1 1 0.50 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 2 4 2.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 2 4 2.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 2 4 2.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 2 4 2.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - SLMDivider @@ -59,7 +32,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] -# CHECK-NEXT: - - - - - 8.00 8.00 24.00 +# CHECK-NEXT: - - - - - 2.00 2.00 8.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions: @@ -67,15 +40,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchg16b (%rax) # CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchg8b (%rax) # CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchg16b (%rax) -# CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgb %bl, %cl -# CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgw %bx, %cx -# CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgl %ebx, %ecx -# CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgq %rbx, %rcx -# CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-x86_64.s index 627010a..13081a1 100644 --- a/llvm/test/tools/llvm-mca/X86/SLM/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 1 100 1.00 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 1 1 0.50 cmpxchgb %cl, %bl # CHECK-NEXT: 2 4 2.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 1 1 0.50 cmpxchgw %cx, %bx # CHECK-NEXT: 2 4 2.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 1 1 0.50 cmpxchgl %ecx, %ebx # CHECK-NEXT: 2 4 2.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 1 1 0.50 cmpxchgq %rcx, %rbx # CHECK-NEXT: 2 4 2.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 1 100 1.00 U cpuid # CHECK-NEXT: 1 1 0.50 decb %dil # CHECK-NEXT: 2 5 2.00 * * decb (%rax) @@ -1691,7 +1699,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] -# CHECK-NEXT: 400.00 - - 49.00 - 561.50 403.50 573.00 +# CHECK-NEXT: 400.00 - - 49.00 - 563.50 405.50 581.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions: @@ -1904,12 +1912,16 @@ xorq (%rax), %rdi # CHECK-NEXT: - - - 1.00 - - - - cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgb %cl, %bl # CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgb %cl, (%rbx) +# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgw %cx, %bx # CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgw %cx, (%rbx) +# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgl %ecx, %ebx # CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgq %rcx, %rbx # CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: - - - 1.00 - - - - cpuid # CHECK-NEXT: - - - - - 0.50 0.50 - decb %dil # CHECK-NEXT: - - - - - 0.50 0.50 2.00 decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-cmpxchg.s index f25bce3..5300792 100644 --- a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 3 6 1.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 3 6 1.00 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 3 6 1.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 4 5 1.33 cmpxchgb %bl, %cl -# CHECK-NEXT: 4 5 1.33 cmpxchgw %bx, %cx -# CHECK-NEXT: 4 5 1.33 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 4 5 1.33 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 6 8 2.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - SBDivider @@ -59,7 +32,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - - 10.00 8.00 12.00 26.00 12.00 12.00 +# CHECK-NEXT: - - 1.33 1.33 4.00 1.33 4.00 4.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -67,15 +40,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 cmpxchg16b (%rax) # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 lock cmpxchg8b (%rax) # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 lock cmpxchg16b (%rax) -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgb %bl, %cl -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgw %bx, %cx -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgl %ebx, %ecx -# CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgq %rbx, %rcx -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s index 2019dfc..937bce7 100644 --- a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 5 8 1.00 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 4 5 1.33 cmpxchgb %cl, %bl # CHECK-NEXT: 6 8 2.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 4 5 1.33 cmpxchgw %cx, %bx # CHECK-NEXT: 6 8 2.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 4 5 1.33 cmpxchgl %ecx, %ebx # CHECK-NEXT: 6 8 2.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 4 5 1.33 cmpxchgq %rcx, %rbx # CHECK-NEXT: 6 8 2.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 6 8 2.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 1 100 0.33 U cpuid # CHECK-NEXT: 1 1 0.33 decb %dil # CHECK-NEXT: 3 7 1.00 * * decb (%rax) @@ -1691,7 +1699,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: 160.00 - 596.50 238.00 230.00 596.50 324.50 324.50 +# CHECK-NEXT: 160.00 - 597.83 239.33 234.00 605.83 328.50 328.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -1904,12 +1912,16 @@ xorq (%rax), %rdi # CHECK-NEXT: - - 1.00 1.00 - 1.00 1.00 1.00 cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgb %cl, %bl # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgb %cl, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgw %cx, %bx # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgw %cx, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgl %ecx, %ebx # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: - - 1.50 1.00 - 1.50 - - cmpxchgq %rcx, %rbx # CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: - - 0.33 0.33 1.00 2.33 1.00 1.00 lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - cpuid # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - decb %dil # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-cmpxchg.s index d8ad4ce..4df459e 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 19 23 4.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 14 16 2.75 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 19 23 4.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 5 5 1.25 cmpxchgb %bl, %cl -# CHECK-NEXT: 5 5 1.25 cmpxchgw %bx, %cx -# CHECK-NEXT: 5 5 1.25 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 5 5 1.25 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 6 8 1.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - SKLDivider @@ -61,7 +34,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - - 34.50 12.50 10.00 10.00 12.00 20.50 30.50 4.00 +# CHECK-NEXT: - - 17.50 7.50 3.33 3.33 4.00 15.50 13.50 1.33 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -69,15 +42,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: - - 5.50 1.50 0.83 0.83 1.00 5.50 3.50 0.33 cmpxchg16b (%rax) # CHECK-NEXT: - - 3.25 2.25 0.83 0.83 1.00 2.25 3.25 0.33 lock cmpxchg8b (%rax) # CHECK-NEXT: - - 5.50 1.50 0.83 0.83 1.00 5.50 3.50 0.33 lock cmpxchg16b (%rax) -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgb %bl, %cl -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgw %bx, %cx -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgl %ebx, %ecx -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgq %rbx, %rcx -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s index 7fc4419..1672bf8 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 1 100 0.25 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 5 5 1.25 cmpxchgb %cl, %bl # CHECK-NEXT: 6 8 1.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgw %cx, %bx # CHECK-NEXT: 6 8 1.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgl %ecx, %ebx # CHECK-NEXT: 6 8 1.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgq %rcx, %rbx # CHECK-NEXT: 6 8 1.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 8 18 2.00 U cpuid # CHECK-NEXT: 1 1 0.25 decb %dil # CHECK-NEXT: 3 7 1.00 * * decb (%rax) @@ -1693,7 +1701,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: 60.00 - 588.75 326.25 269.33 269.33 214.00 293.75 645.25 85.33 +# CHECK-NEXT: 60.00 - 593.75 327.25 272.67 272.67 218.00 294.75 650.25 86.67 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -1906,12 +1914,16 @@ xorq (%rax), %rdi # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgb %cl, %bl # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgb %cl, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgw %cx, %bx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgw %cx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgl %ecx, %ebx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgq %rcx, %rbx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: - - 1.75 1.25 - - - 2.25 2.75 - cpuid # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decb %dil # CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-cmpxchg.s index b3fc6fb..8c8181c 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 19 23 4.00 * * cmpxchg16b (%rax) # CHECK-NEXT: 14 16 2.75 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 19 23 4.00 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 5 5 1.25 cmpxchgb %bl, %cl -# CHECK-NEXT: 5 5 1.25 cmpxchgw %bx, %cx -# CHECK-NEXT: 5 5 1.25 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 5 5 1.25 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 6 8 1.00 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - SKXDivider @@ -61,7 +34,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - - 34.50 12.50 10.00 10.00 12.00 20.50 30.50 4.00 +# CHECK-NEXT: - - 17.50 7.50 3.33 3.33 4.00 15.50 13.50 1.33 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -69,15 +42,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: - - 5.50 1.50 0.83 0.83 1.00 5.50 3.50 0.33 cmpxchg16b (%rax) # CHECK-NEXT: - - 3.25 2.25 0.83 0.83 1.00 2.25 3.25 0.33 lock cmpxchg8b (%rax) # CHECK-NEXT: - - 5.50 1.50 0.83 0.83 1.00 5.50 3.50 0.33 lock cmpxchg16b (%rax) -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgb %bl, %cl -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgw %bx, %cx -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgl %ebx, %ecx -# CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgq %rbx, %rcx -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s index 3b30da8..10530c4 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 1 100 0.25 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 5 5 1.25 cmpxchgb %cl, %bl # CHECK-NEXT: 6 8 1.00 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgw %cx, %bx # CHECK-NEXT: 6 8 1.00 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgl %ecx, %ebx # CHECK-NEXT: 6 8 1.00 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 5 5 1.25 cmpxchgq %rcx, %rbx # CHECK-NEXT: 6 8 1.00 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 6 8 1.00 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 8 18 2.00 U cpuid # CHECK-NEXT: 1 1 0.25 decb %dil # CHECK-NEXT: 3 7 1.00 * * decb (%rax) @@ -1693,7 +1701,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: 60.00 - 589.00 326.50 269.33 269.33 214.00 294.00 645.50 85.33 +# CHECK-NEXT: 60.00 - 594.00 327.50 272.67 272.67 218.00 295.00 650.50 86.67 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -1906,12 +1914,16 @@ xorq (%rax), %rdi # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgb %cl, %bl # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgb %cl, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgw %cx, %bx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgw %cx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgl %ecx, %ebx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: - - 1.75 0.75 - - - 0.75 1.75 - cmpxchgq %rcx, %rbx # CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: - - 1.75 1.25 - - - 2.25 2.75 - cpuid # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - decb %dil # CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 decb (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/resources-cmpxchg.s b/llvm/test/tools/llvm-mca/X86/Znver1/resources-cmpxchg.s index db19950..68c8ebf 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/resources-cmpxchg.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/resources-cmpxchg.s @@ -6,21 +6,6 @@ cmpxchg16b (%rax) lock cmpxchg8b (%rax) lock cmpxchg16b (%rax) -cmpxchgb %bl, %cl -cmpxchgw %bx, %cx -cmpxchgl %ebx, %ecx -cmpxchgq %rbx, %rcx - -cmpxchgb %bl, (%rsi) -cmpxchgw %bx, (%rsi) -cmpxchgl %ebx, (%rsi) -cmpxchgq %rbx, (%rsi) - -lock cmpxchgb %bl, (%rsi) -lock cmpxchgw %bx, (%rsi) -lock cmpxchgl %ebx, (%rsi) -lock cmpxchgq %rbx, (%rsi) - # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -34,18 +19,6 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: 1 100 0.25 * * cmpxchg16b (%rax) # CHECK-NEXT: 18 1 0.50 * * lock cmpxchg8b (%rax) # CHECK-NEXT: 1 100 0.25 * * lock cmpxchg16b (%rax) -# CHECK-NEXT: 1 1 0.25 cmpxchgb %bl, %cl -# CHECK-NEXT: 1 1 0.25 cmpxchgw %bx, %cx -# CHECK-NEXT: 1 1 0.25 cmpxchgl %ebx, %ecx -# CHECK-NEXT: 1 1 0.25 cmpxchgq %rbx, %rcx -# CHECK-NEXT: 5 8 0.50 * * cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 5 8 0.50 * * cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 5 8 0.50 * * cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 5 8 0.50 * * cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 5 8 0.50 * * lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 5 8 0.50 * * lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 5 8 0.50 * * lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 5 8 0.50 * * lock cmpxchgq %rbx, (%rsi) # CHECK: Resources: # CHECK-NEXT: [0] - ZnAGU0 @@ -63,7 +36,7 @@ lock cmpxchgq %rbx, (%rsi) # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: 5.00 5.00 3.50 3.50 3.50 3.50 - - - - - - +# CHECK-NEXT: 1.00 1.00 0.50 0.50 0.50 0.50 - - - - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -71,15 +44,3 @@ lock cmpxchgq %rbx, (%rsi) # CHECK-NEXT: - - - - - - - - - - - - cmpxchg16b (%rax) # CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - lock cmpxchg8b (%rax) # CHECK-NEXT: - - - - - - - - - - - - lock cmpxchg16b (%rax) -# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - cmpxchgb %bl, %cl -# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - cmpxchgw %bx, %cx -# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - cmpxchgl %ebx, %ecx -# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - cmpxchgq %rbx, %rcx -# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - cmpxchgq %rbx, (%rsi) -# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - lock cmpxchgb %bl, (%rsi) -# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - lock cmpxchgw %bx, (%rsi) -# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - lock cmpxchgl %ebx, (%rsi) -# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - lock cmpxchgq %rbx, (%rsi) diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s b/llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s index b3ed166..e71fc46 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s @@ -236,15 +236,19 @@ cmpsq cmpxchgb %cl, %bl cmpxchgb %cl, (%rbx) +lock cmpxchgb %cl, (%rbx) cmpxchgw %cx, %bx cmpxchgw %cx, (%rbx) +lock cmpxchgw %cx, (%rbx) cmpxchgl %ecx, %ebx cmpxchgl %ecx, (%rbx) +lock cmpxchgl %ecx, (%rbx) cmpxchgq %rcx, %rbx cmpxchgq %rcx, (%rbx) +lock cmpxchgq %rcx, (%rbx) cpuid @@ -1108,12 +1112,16 @@ xorq (%rax), %rdi # CHECK-NEXT: 1 100 0.25 U cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: 1 1 0.25 cmpxchgb %cl, %bl # CHECK-NEXT: 5 8 0.50 * * cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 5 8 0.50 * * lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: 1 1 0.25 cmpxchgw %cx, %bx # CHECK-NEXT: 5 8 0.50 * * cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 5 8 0.50 * * lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: 1 1 0.25 cmpxchgl %ecx, %ebx # CHECK-NEXT: 5 8 0.50 * * cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 5 8 0.50 * * lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: 1 1 0.25 cmpxchgq %rcx, %rbx # CHECK-NEXT: 5 8 0.50 * * cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 5 8 0.50 * * lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: 1 100 0.25 U cpuid # CHECK-NEXT: 1 1 0.25 decb %dil # CHECK-NEXT: 2 5 0.50 * * decb (%rax) @@ -1695,7 +1703,7 @@ xorq (%rax), %rdi # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: 169.50 169.50 159.75 193.75 175.75 159.75 392.00 - - - - 34.00 +# CHECK-NEXT: 171.50 171.50 160.75 194.75 176.75 160.75 392.00 - - - - 34.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -1908,12 +1916,16 @@ xorq (%rax), %rdi # CHECK-NEXT: - - - - - - - - - - - - cmpsq %es:(%rdi), (%rsi) # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - cmpxchgb %cl, %bl # CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - cmpxchgb %cl, (%rbx) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - lock cmpxchgb %cl, (%rbx) # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - cmpxchgw %cx, %bx # CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - cmpxchgw %cx, (%rbx) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - lock cmpxchgw %cx, (%rbx) # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - cmpxchgl %ecx, %ebx # CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - cmpxchgl %ecx, (%rbx) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - lock cmpxchgl %ecx, (%rbx) # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - cmpxchgq %rcx, %rbx # CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - cmpxchgq %rcx, (%rbx) +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - lock cmpxchgq %rcx, (%rbx) # CHECK-NEXT: - - - - - - - - - - - - cpuid # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - decb %dil # CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - decb (%rax) -- 2.7.4