[llvm] r339145 - [X86] MCA tests for XCHG*, XADD* and CMPXCHG* instructions

Andrew V. Tischenko via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 7 07:36:43 PDT 2018


Author: avt77
Date: Tue Aug  7 07:36:43 2018
New Revision: 339145

URL: http://llvm.org/viewvc/llvm-project?rev=339145&view=rev
Log:
[X86] MCA tests for XCHG*, XADD* and CMPXCHG* instructions
Differential Revision: https://reviews.llvm.org/D49912

Modified:
    llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
    llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s
    llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s
    llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-x86_64.s
    llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s
    llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x86_64.s
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s
    llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s
    llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s
    llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s

Modified: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s?rev=339145&r1=339144&r2=339145&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s Tue Aug  7 07:36:43 2018
@@ -222,6 +222,18 @@ cmpsw
 cmpsl
 cmpsq
 
+cmpxchgb %cl, %bl
+cmpxchgb %cl, (%rbx)
+
+cmpxchgw %cx, %bx
+cmpxchgw %cx, (%rbx)
+
+cmpxchgl %ecx, %ebx
+cmpxchgl %ecx, (%rbx)
+
+cmpxchgq %rcx, %rbx
+cmpxchgq %rcx, (%rbx)
+
 cpuid
 
 decb %dil
@@ -777,6 +789,33 @@ testq %rsi, (%rax)
 
 ud2
 
+xaddb %bl, %cl
+xaddb %bl, (%rcx)
+
+xaddw %bx, %cx
+xaddw %ax, (%rbx)
+
+xaddl %ebx, %ecx
+xaddl %eax, (%rbx)
+
+xaddq %rbx, %rcx
+xaddq %rax, (%rbx)
+
+xchgb %bl, %cl
+xchgb %bl, (%rbx)
+
+xchgw %ax, %bx
+xchgw %bx, %cx
+xchgw %ax, (%rbx)
+
+xchgl %eax, %ebx
+xchgl %ebx, %ecx
+xchgl %eax, (%rbx)
+
+xchgq %rax, %rbx
+xchgq %rbx, %rcx
+xchgq %rax, (%rbx)
+
 xlatb
 
 xorb $7, %al
@@ -1017,6 +1056,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      3     1.50                  U     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  1      3     1.50                  U     cmpsl	%es:(%rdi), (%rsi)
 # 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      15    7.50                        cmpxchgw	%cx, %bx
+# CHECK-NEXT:  1      14    7.00    *      *            cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  1      15    7.50                        cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  1      14    7.00    *      *            cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  1      15    7.50                        cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  1      14    7.00    *      *            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)
@@ -1510,6 +1557,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.50                        testq	%rsi, %rdi
 # CHECK-NEXT:  1      1     1.00    *                   testq	%rsi, (%rax)
 # CHECK-NEXT:  1      100   0.50    *             U     ud2
+# CHECK-NEXT:  1      2     1.00                        xaddb	%bl, %cl
+# CHECK-NEXT:  1      3     1.50    *      *            xaddb	%bl, (%rcx)
+# CHECK-NEXT:  1      2     1.00                        xaddw	%bx, %cx
+# CHECK-NEXT:  1      3     1.50    *      *            xaddw	%ax, (%rbx)
+# CHECK-NEXT:  1      2     1.00                        xaddl	%ebx, %ecx
+# CHECK-NEXT:  1      3     1.50    *      *            xaddl	%eax, (%rbx)
+# CHECK-NEXT:  1      2     1.00                        xaddq	%rbx, %rcx
+# CHECK-NEXT:  1      3     1.50    *      *            xaddq	%rax, (%rbx)
+# CHECK-NEXT:  1      2     1.00                        xchgb	%bl, %cl
+# CHECK-NEXT:  1      3     1.50    *      *            xchgb	%bl, (%rbx)
+# CHECK-NEXT:  1      2     1.00                        xchgw	%bx, %ax
+# CHECK-NEXT:  1      2     1.00                        xchgw	%bx, %cx
+# CHECK-NEXT:  1      3     1.50    *      *            xchgw	%ax, (%rbx)
+# CHECK-NEXT:  1      2     1.00                        xchgl	%ebx, %eax
+# CHECK-NEXT:  1      2     1.00                        xchgl	%ebx, %ecx
+# CHECK-NEXT:  1      3     1.50    *      *            xchgl	%eax, (%rbx)
+# CHECK-NEXT:  1      2     1.00                        xchgq	%rbx, %rax
+# CHECK-NEXT:  1      2     1.00                        xchgq	%rbx, %rcx
+# CHECK-NEXT:  1      3     1.50    *      *            xchgq	%rax, (%rbx)
 # CHECK-NEXT:  1      6     3.00    *                   xlatb
 # CHECK-NEXT:  1      1     0.50                        xorb	$7, %al
 # CHECK-NEXT:  1      1     0.50                        xorb	$7, %dil
@@ -1548,7 +1614,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]
-# CHECK-NEXT: 2318.00 1977.00
+# CHECK-NEXT: 2392.00 2051.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    Instructions:
@@ -1747,6 +1813,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT: 1.50   1.50   cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT: 1.50   1.50   cmpsl	%es:(%rdi), (%rsi)
 # 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: 7.50   7.50   cmpxchgw	%cx, %bx
+# CHECK-NEXT: 7.00   7.00   cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT: 7.50   7.50   cmpxchgl	%ecx, %ebx
+# CHECK-NEXT: 7.00   7.00   cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT: 7.50   7.50   cmpxchgq	%rcx, %rbx
+# CHECK-NEXT: 7.00   7.00   cmpxchgq	%rcx, (%rbx)
 # CHECK-NEXT: 60.50  60.50  cpuid
 # CHECK-NEXT: 0.50   0.50   decb	%dil
 # CHECK-NEXT: 1.00    -     decb	(%rax)
@@ -2240,6 +2314,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT: 0.50   0.50   testq	%rsi, %rdi
 # CHECK-NEXT: 1.00    -     testq	%rsi, (%rax)
 # CHECK-NEXT: 0.50   0.50   ud2
+# CHECK-NEXT: 1.00   1.00   xaddb	%bl, %cl
+# CHECK-NEXT: 1.50   1.50   xaddb	%bl, (%rcx)
+# CHECK-NEXT: 1.00   1.00   xaddw	%bx, %cx
+# CHECK-NEXT: 1.50   1.50   xaddw	%ax, (%rbx)
+# CHECK-NEXT: 1.00   1.00   xaddl	%ebx, %ecx
+# CHECK-NEXT: 1.50   1.50   xaddl	%eax, (%rbx)
+# CHECK-NEXT: 1.00   1.00   xaddq	%rbx, %rcx
+# CHECK-NEXT: 1.50   1.50   xaddq	%rax, (%rbx)
+# CHECK-NEXT: 1.00   1.00   xchgb	%bl, %cl
+# CHECK-NEXT: 1.50   1.50   xchgb	%bl, (%rbx)
+# CHECK-NEXT: 1.00   1.00   xchgw	%bx, %ax
+# CHECK-NEXT: 1.00   1.00   xchgw	%bx, %cx
+# CHECK-NEXT: 1.50   1.50   xchgw	%ax, (%rbx)
+# CHECK-NEXT: 1.00   1.00   xchgl	%ebx, %eax
+# CHECK-NEXT: 1.00   1.00   xchgl	%ebx, %ecx
+# CHECK-NEXT: 1.50   1.50   xchgl	%eax, (%rbx)
+# CHECK-NEXT: 1.00   1.00   xchgq	%rbx, %rax
+# CHECK-NEXT: 1.00   1.00   xchgq	%rbx, %rcx
+# CHECK-NEXT: 1.50   1.50   xchgq	%rax, (%rbx)
 # CHECK-NEXT: 3.00   3.00   xlatb
 # CHECK-NEXT: 0.50   0.50   xorb	$7, %al
 # CHECK-NEXT: 0.50   0.50   xorb	$7, %dil

Modified: llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s?rev=339145&r1=339144&r2=339145&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s Tue Aug  7 07:36:43 2018
@@ -222,6 +222,18 @@ cmpsw
 cmpsl
 cmpsq
 
+cmpxchgb %cl, %bl
+cmpxchgb %cl, (%rbx)
+
+cmpxchgw %cx, %bx
+cmpxchgw %cx, (%rbx)
+
+cmpxchgl %ecx, %ebx
+cmpxchgl %ecx, (%rbx)
+
+cmpxchgq %rcx, %rbx
+cmpxchgq %rcx, (%rbx)
+
 cpuid
 
 decb %dil
@@ -777,6 +789,33 @@ testq %rsi, (%rax)
 
 ud2
 
+xaddb %bl, %cl
+xaddb %bl, (%rcx)
+
+xaddw %bx, %cx
+xaddw %ax, (%rbx)
+
+xaddl %ebx, %ecx
+xaddl %eax, (%rbx)
+
+xaddq %rbx, %rcx
+xaddq %rax, (%rbx)
+
+xchgb %bl, %cl
+xchgb %bl, (%rbx)
+
+xchgw %ax, %bx
+xchgw %bx, %cx
+xchgw %ax, (%rbx)
+
+xchgl %eax, %ebx
+xchgl %ebx, %ecx
+xchgl %eax, (%rbx)
+
+xchgq %rax, %rbx
+xchgq %rbx, %rcx
+xchgq %rax, (%rbx)
+
 xlatb
 
 xorb $7, %al
@@ -1017,6 +1056,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      100   0.25                  U     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  1      100   0.25                  U     cmpsl	%es:(%rdi), (%rsi)
 # 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:  5      5     1.25                        cmpxchgw	%cx, %bx
+# CHECK-NEXT:  6      8     1.00    *      *            cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  5      5     1.25                        cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  6      8     1.00    *      *            cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  5      5     1.25                        cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  6      8     1.00    *      *            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)
@@ -1510,6 +1557,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.25                        testq	%rsi, %rdi
 # CHECK-NEXT:  2      6     0.50    *                   testq	%rsi, (%rax)
 # CHECK-NEXT:  1      100   0.25    *             U     ud2
+# CHECK-NEXT:  3      2     0.75                        xaddb	%bl, %cl
+# CHECK-NEXT:  5      7     1.00    *      *            xaddb	%bl, (%rcx)
+# CHECK-NEXT:  3      2     0.75                        xaddw	%bx, %cx
+# CHECK-NEXT:  5      7     1.00    *      *            xaddw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xaddl	%ebx, %ecx
+# CHECK-NEXT:  5      7     1.00    *      *            xaddl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xaddq	%rbx, %rcx
+# CHECK-NEXT:  5      7     1.00    *      *            xaddq	%rax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgb	%bl, %cl
+# CHECK-NEXT:  6      8     1.00    *      *            xchgb	%bl, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgw	%bx, %ax
+# CHECK-NEXT:  3      2     0.75                        xchgw	%bx, %cx
+# CHECK-NEXT:  6      8     1.00    *      *            xchgw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgl	%ebx, %eax
+# CHECK-NEXT:  3      2     0.75                        xchgl	%ebx, %ecx
+# CHECK-NEXT:  6      8     1.00    *      *            xchgl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgq	%rbx, %rax
+# CHECK-NEXT:  3      2     0.75                        xchgq	%rbx, %rcx
+# CHECK-NEXT:  6      8     1.00    *      *            xchgq	%rax, (%rbx)
 # CHECK-NEXT:  1      5     0.50    *                   xlatb
 # CHECK-NEXT:  1      1     0.25                        xorb	$7, %al
 # CHECK-NEXT:  1      1     0.25                        xorb	$7, %dil
@@ -1556,7 +1622,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   -     469.00 317.50 252.17 252.17 190.00 227.00 501.50 78.67
+# CHECK-NEXT: 50.00   -     494.25 334.75 262.17 262.17 202.00 244.25 526.75 82.67
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -1755,6 +1821,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     cmpsl	%es:(%rdi), (%rsi)
 # 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.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.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.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.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)
@@ -2248,6 +2322,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     testq	%rsi, %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.50   0.50    -     0.25   0.25    -     testq	%rsi, (%rax)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     ud2
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddb	%bl, %cl
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddb	%bl, (%rcx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddw	%bx, %cx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddl	%ebx, %ecx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddq	%rbx, %rcx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddq	%rax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgb	%bl, %cl
+# CHECK-NEXT:  -      -     0.75   0.75   0.83   0.83   1.00   0.75   0.75   0.33   xchgb	%bl, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgw	%bx, %ax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgw	%bx, %cx
+# CHECK-NEXT:  -      -     0.75   0.75   0.83   0.83   1.00   0.75   0.75   0.33   xchgw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgl	%ebx, %eax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgl	%ebx, %ecx
+# CHECK-NEXT:  -      -     0.75   0.75   0.83   0.83   1.00   0.75   0.75   0.33   xchgl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgq	%rbx, %rax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgq	%rbx, %rcx
+# CHECK-NEXT:  -      -     0.75   0.75   0.83   0.83   1.00   0.75   0.75   0.33   xchgq	%rax, (%rbx)
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     xlatb
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     xorb	$7, %al
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     xorb	$7, %dil

Modified: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s?rev=339145&r1=339144&r2=339145&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s Tue Aug  7 07:36:43 2018
@@ -222,6 +222,18 @@ cmpsw
 cmpsl
 cmpsq
 
+cmpxchgb %cl, %bl
+cmpxchgb %cl, (%rbx)
+
+cmpxchgw %cx, %bx
+cmpxchgw %cx, (%rbx)
+
+cmpxchgl %ecx, %ebx
+cmpxchgl %ecx, (%rbx)
+
+cmpxchgq %rcx, %rbx
+cmpxchgq %rcx, (%rbx)
+
 cpuid
 
 decb %dil
@@ -777,6 +789,33 @@ testq %rsi, (%rax)
 
 ud2
 
+xaddb %bl, %cl
+xaddb %bl, (%rcx)
+
+xaddw %bx, %cx
+xaddw %ax, (%rbx)
+
+xaddl %ebx, %ecx
+xaddl %eax, (%rbx)
+
+xaddq %rbx, %rcx
+xaddq %rax, (%rbx)
+
+xchgb %bl, %cl
+xchgb %bl, (%rbx)
+
+xchgw %ax, %bx
+xchgw %bx, %cx
+xchgw %ax, (%rbx)
+
+xchgl %eax, %ebx
+xchgl %ebx, %ecx
+xchgl %eax, (%rbx)
+
+xchgq %rax, %rbx
+xchgq %rbx, %rcx
+xchgq %rax, (%rbx)
+
 xlatb
 
 xorb $7, %al
@@ -1017,6 +1056,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      100   0.50                  U     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  1      100   0.50                  U     cmpsl	%es:(%rdi), (%rsi)
 # 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:  1      1     0.50                        cmpxchgw	%cx, %bx
+# CHECK-NEXT:  2      4     1.00    *      *            cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  2      4     1.00    *      *            cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  2      4     1.00    *      *            cmpxchgq	%rcx, (%rbx)
 # CHECK-NEXT:  1      100   0.50                  U     cpuid
 # CHECK-NEXT:  1      1     0.50                        decb	%dil
 # CHECK-NEXT:  2      5     1.00    *      *            decb	(%rax)
@@ -1510,6 +1557,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.50                        testq	%rsi, %rdi
 # CHECK-NEXT:  1      4     1.00    *                   testq	%rsi, (%rax)
 # CHECK-NEXT:  1      100   0.50    *             U     ud2
+# CHECK-NEXT:  1      1     0.50                        xaddb	%bl, %cl
+# CHECK-NEXT:  2      4     1.00    *      *            xaddb	%bl, (%rcx)
+# CHECK-NEXT:  1      1     0.50                        xaddw	%bx, %cx
+# CHECK-NEXT:  2      4     1.00    *      *            xaddw	%ax, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xaddl	%ebx, %ecx
+# CHECK-NEXT:  2      4     1.00    *      *            xaddl	%eax, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xaddq	%rbx, %rcx
+# CHECK-NEXT:  2      4     1.00    *      *            xaddq	%rax, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xchgb	%bl, %cl
+# CHECK-NEXT:  2      4     1.00    *      *            xchgb	%bl, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xchgw	%bx, %ax
+# CHECK-NEXT:  1      1     0.50                        xchgw	%bx, %cx
+# CHECK-NEXT:  2      4     1.00    *      *            xchgw	%ax, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xchgl	%ebx, %eax
+# CHECK-NEXT:  1      1     0.50                        xchgl	%ebx, %ecx
+# CHECK-NEXT:  2      4     1.00    *      *            xchgl	%eax, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xchgq	%rbx, %rax
+# CHECK-NEXT:  1      1     0.50                        xchgq	%rbx, %rcx
+# CHECK-NEXT:  2      4     1.00    *      *            xchgq	%rax, (%rbx)
 # CHECK-NEXT:  1      5     1.00    *                   xlatb
 # CHECK-NEXT:  1      1     0.50                        xorb	$7, %al
 # CHECK-NEXT:  1      1     0.50                        xorb	$7, %dil
@@ -1560,7 +1626,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: 544.00 594.00 380.00  -      -      -      -     307.00 64.00  211.00  -      -      -      -
+# CHECK-NEXT: 557.50 607.50 380.00  -      -      -      -     319.00 64.00  223.00  -      -      -      -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]   Instructions:
@@ -1759,6 +1825,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     cmpsl	%es:(%rdi), (%rsi)
 # 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    -      -      -      -      -      -      -      -      -      -      -      -     cmpxchgw	%cx, %bx
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     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    -      -      -      -      -      -      -      -      -      -      -      -     cmpxchgq	%rcx, %rbx
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     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)
@@ -2252,6 +2326,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     testq	%rsi, %rdi
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -      -      -     testq	%rsi, (%rax)
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     ud2
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xaddb	%bl, %cl
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     xaddb	%bl, (%rcx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xaddw	%bx, %cx
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     xaddw	%ax, (%rbx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xaddl	%ebx, %ecx
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     xaddl	%eax, (%rbx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xaddq	%rbx, %rcx
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     xaddq	%rax, (%rbx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xchgb	%bl, %cl
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     xchgb	%bl, (%rbx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xchgw	%bx, %ax
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xchgw	%bx, %cx
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     xchgw	%ax, (%rbx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xchgl	%ebx, %eax
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xchgl	%ebx, %ecx
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     xchgl	%eax, (%rbx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xchgq	%rbx, %rax
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xchgq	%rbx, %rcx
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     xchgq	%rax, (%rbx)
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -      -     xlatb
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xorb	$7, %al
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     xorb	$7, %dil

Modified: llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-x86_64.s?rev=339145&r1=339144&r2=339145&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-x86_64.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-x86_64.s Tue Aug  7 07:36:43 2018
@@ -222,6 +222,18 @@ cmpsw
 cmpsl
 cmpsq
 
+cmpxchgb %cl, %bl
+cmpxchgb %cl, (%rbx)
+
+cmpxchgw %cx, %bx
+cmpxchgw %cx, (%rbx)
+
+cmpxchgl %ecx, %ebx
+cmpxchgl %ecx, (%rbx)
+
+cmpxchgq %rcx, %rbx
+cmpxchgq %rcx, (%rbx)
+
 cpuid
 
 decb %dil
@@ -777,6 +789,33 @@ testq %rsi, (%rax)
 
 ud2
 
+xaddb %bl, %cl
+xaddb %bl, (%rcx)
+
+xaddw %bx, %cx
+xaddw %ax, (%rbx)
+
+xaddl %ebx, %ecx
+xaddl %eax, (%rbx)
+
+xaddq %rbx, %rcx
+xaddq %rax, (%rbx)
+
+xchgb %bl, %cl
+xchgb %bl, (%rbx)
+
+xchgw %ax, %bx
+xchgw %bx, %cx
+xchgw %ax, (%rbx)
+
+xchgl %eax, %ebx
+xchgl %ebx, %ecx
+xchgl %eax, (%rbx)
+
+xchgq %rax, %rbx
+xchgq %rbx, %rcx
+xchgq %rax, (%rbx)
+
 xlatb
 
 xorb $7, %al
@@ -1017,6 +1056,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  5      8     1.00                  U     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  5      8     1.00                  U     cmpsl	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  5      8     1.00                  U     cmpsq	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  4      5     1.33                        cmpxchgb	%cl, %bl
+# CHECK-NEXT:  4      8     1.00    *      *            cmpxchgb	%cl, (%rbx)
+# CHECK-NEXT:  4      5     1.33                        cmpxchgw	%cx, %bx
+# CHECK-NEXT:  4      8     1.00    *      *            cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  4      5     1.33                        cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  4      8     1.00    *      *            cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  4      5     1.33                        cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  4      8     1.00    *      *            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)
@@ -1510,6 +1557,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.33                        testq	%rsi, %rdi
 # CHECK-NEXT:  2      6     0.50    *                   testq	%rsi, (%rax)
 # CHECK-NEXT:  1      100   0.33    *             U     ud2
+# CHECK-NEXT:  3      2     1.00                        xaddb	%bl, %cl
+# CHECK-NEXT:  5      8     1.00    *      *            xaddb	%bl, (%rcx)
+# CHECK-NEXT:  3      2     1.00                        xaddw	%bx, %cx
+# CHECK-NEXT:  5      8     1.00    *      *            xaddw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xaddl	%ebx, %ecx
+# CHECK-NEXT:  5      8     1.00    *      *            xaddl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xaddq	%rbx, %rcx
+# CHECK-NEXT:  5      8     1.00    *      *            xaddq	%rax, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xchgb	%bl, %cl
+# CHECK-NEXT:  3      6     1.00    *      *            xchgb	%bl, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xchgw	%bx, %ax
+# CHECK-NEXT:  3      2     1.00                        xchgw	%bx, %cx
+# CHECK-NEXT:  3      6     1.00    *      *            xchgw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xchgl	%ebx, %eax
+# CHECK-NEXT:  3      2     1.00                        xchgl	%ebx, %ecx
+# CHECK-NEXT:  3      6     1.00    *      *            xchgl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xchgq	%rbx, %rax
+# CHECK-NEXT:  3      2     1.00                        xchgq	%rbx, %rcx
+# CHECK-NEXT:  3      6     1.00    *      *            xchgq	%rax, (%rbx)
 # CHECK-NEXT:  1      5     0.50    *                   xlatb
 # CHECK-NEXT:  1      1     0.33                        xorb	$7, %al
 # CHECK-NEXT:  1      1     0.33                        xorb	$7, %dil
@@ -1554,7 +1620,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  -     413.50 201.00 234.00 405.50 280.00 280.00
+# CHECK-NEXT: 160.00  -     438.50 224.00 242.00 430.50 290.00 290.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
@@ -1753,6 +1819,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00   1.00    -     1.00   1.00   1.00   cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  -      -     1.00   1.00    -     1.00   1.00   1.00   cmpsl	%es:(%rdi), (%rsi)
 # 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:  -      -     1.00   1.00    -     1.00   0.50   0.50   cmpxchgb	%cl, (%rbx)
+# CHECK-NEXT:  -      -     1.50   1.00    -     1.50    -      -     cmpxchgw	%cx, %bx
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00   0.50   0.50   cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  -      -     1.50   1.00    -     1.50    -      -     cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00   0.50   0.50   cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  -      -     1.50   1.00    -     1.50    -      -     cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00   0.50   0.50   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)
@@ -2246,6 +2320,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     testq	%rsi, %rdi
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33   0.50   0.50   testq	%rsi, (%rax)
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     ud2
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xaddb	%bl, %cl
+# CHECK-NEXT:  -      -     0.67   0.67   1.00   0.67   1.00   1.00   xaddb	%bl, (%rcx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xaddw	%bx, %cx
+# CHECK-NEXT:  -      -     0.67   0.67   1.00   0.67   1.00   1.00   xaddw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xaddl	%ebx, %ecx
+# CHECK-NEXT:  -      -     0.67   0.67   1.00   0.67   1.00   1.00   xaddl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xaddq	%rbx, %rcx
+# CHECK-NEXT:  -      -     0.67   0.67   1.00   0.67   1.00   1.00   xaddq	%rax, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgb	%bl, %cl
+# CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   xchgb	%bl, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgw	%bx, %ax
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgw	%bx, %cx
+# CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   xchgw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgl	%ebx, %eax
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgl	%ebx, %ecx
+# CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   xchgl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgq	%rbx, %rax
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgq	%rbx, %rcx
+# CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   xchgq	%rax, (%rbx)
 # CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   xlatb
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     xorb	$7, %al
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     xorb	$7, %dil

Modified: llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s?rev=339145&r1=339144&r2=339145&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s Tue Aug  7 07:36:43 2018
@@ -222,6 +222,18 @@ cmpsw
 cmpsl
 cmpsq
 
+cmpxchgb %cl, %bl
+cmpxchgb %cl, (%rbx)
+
+cmpxchgw %cx, %bx
+cmpxchgw %cx, (%rbx)
+
+cmpxchgl %ecx, %ebx
+cmpxchgl %ecx, (%rbx)
+
+cmpxchgq %rcx, %rbx
+cmpxchgq %rcx, (%rbx)
+
 cpuid
 
 decb %dil
@@ -777,6 +789,33 @@ testq %rsi, (%rax)
 
 ud2
 
+xaddb %bl, %cl
+xaddb %bl, (%rcx)
+
+xaddw %bx, %cx
+xaddw %ax, (%rbx)
+
+xaddl %ebx, %ecx
+xaddl %eax, (%rbx)
+
+xaddq %rbx, %rcx
+xaddq %rax, (%rbx)
+
+xchgb %bl, %cl
+xchgb %bl, (%rbx)
+
+xchgw %ax, %bx
+xchgw %bx, %cx
+xchgw %ax, (%rbx)
+
+xchgl %eax, %ebx
+xchgl %ebx, %ecx
+xchgl %eax, (%rbx)
+
+xchgq %rax, %rbx
+xchgq %rbx, %rcx
+xchgq %rax, (%rbx)
+
 xlatb
 
 xorb $7, %al
@@ -1017,6 +1056,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  5      4     1.00                  U     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  5      4     1.00                  U     cmpsl	%es:(%rdi), (%rsi)
 # 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:  5      5     1.25                        cmpxchgw	%cx, %bx
+# CHECK-NEXT:  6      9     1.00    *      *            cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  5      5     1.25                        cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  6      9     1.00    *      *            cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  5      5     1.25                        cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  6      9     1.00    *      *            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)
@@ -1510,6 +1557,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.25                        testq	%rsi, %rdi
 # CHECK-NEXT:  2      6     0.50    *                   testq	%rsi, (%rax)
 # CHECK-NEXT:  1      100   0.25    *             U     ud2
+# CHECK-NEXT:  3      2     0.75                        xaddb	%bl, %cl
+# CHECK-NEXT:  5      8     1.00    *      *            xaddb	%bl, (%rcx)
+# CHECK-NEXT:  3      2     0.75                        xaddw	%bx, %cx
+# CHECK-NEXT:  5      8     1.00    *      *            xaddw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xaddl	%ebx, %ecx
+# CHECK-NEXT:  5      8     1.00    *      *            xaddl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xaddq	%rbx, %rcx
+# CHECK-NEXT:  5      8     1.00    *      *            xaddq	%rax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgb	%bl, %cl
+# CHECK-NEXT:  6      9     1.00    *      *            xchgb	%bl, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgw	%bx, %ax
+# CHECK-NEXT:  3      2     0.75                        xchgw	%bx, %cx
+# CHECK-NEXT:  6      9     1.00    *      *            xchgw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgl	%ebx, %eax
+# CHECK-NEXT:  3      2     0.75                        xchgl	%ebx, %ecx
+# CHECK-NEXT:  6      9     1.00    *      *            xchgl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgq	%rbx, %rax
+# CHECK-NEXT:  3      2     0.75                        xchgq	%rbx, %rcx
+# CHECK-NEXT:  6      9     1.00    *      *            xchgq	%rax, (%rbx)
 # CHECK-NEXT:  3      7     0.75    *                   xlatb
 # CHECK-NEXT:  1      1     0.25                        xorb	$7, %al
 # CHECK-NEXT:  1      1     0.25                        xorb	$7, %dil
@@ -1556,7 +1622,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   -     523.50 342.00 252.67 252.67 185.00 253.50 585.00 75.67
+# CHECK-NEXT: 80.00   -     548.75 359.25 262.67 262.67 197.00 270.75 610.25 79.67
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -1755,6 +1821,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.75   0.75   1.00   1.00    -     0.75   0.75    -     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  -      -     0.75   0.75   1.00   1.00    -     0.75   0.75    -     cmpsl	%es:(%rdi), (%rsi)
 # 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.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.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.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.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)
@@ -2248,6 +2322,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     testq	%rsi, %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.50   0.50    -     0.25   0.25    -     testq	%rsi, (%rax)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     ud2
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddb	%bl, %cl
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddb	%bl, (%rcx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddw	%bx, %cx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddl	%ebx, %ecx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddq	%rbx, %rcx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddq	%rax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgb	%bl, %cl
+# CHECK-NEXT:  -      -     0.75   0.75   0.83   0.83   1.00   0.75   0.75   0.33   xchgb	%bl, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgw	%bx, %ax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgw	%bx, %cx
+# CHECK-NEXT:  -      -     0.75   0.75   0.83   0.83   1.00   0.75   0.75   0.33   xchgw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgl	%ebx, %eax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgl	%ebx, %ecx
+# CHECK-NEXT:  -      -     0.75   0.75   0.83   0.83   1.00   0.75   0.75   0.33   xchgl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgq	%rbx, %rax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgq	%rbx, %rcx
+# CHECK-NEXT:  -      -     0.75   0.75   0.83   0.83   1.00   0.75   0.75   0.33   xchgq	%rax, (%rbx)
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     xlatb
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     xorb	$7, %al
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     xorb	$7, %dil

Modified: llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x86_64.s?rev=339145&r1=339144&r2=339145&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x86_64.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x86_64.s Tue Aug  7 07:36:43 2018
@@ -222,6 +222,18 @@ cmpsw
 cmpsl
 cmpsq
 
+cmpxchgb %cl, %bl
+cmpxchgb %cl, (%rbx)
+
+cmpxchgw %cx, %bx
+cmpxchgw %cx, (%rbx)
+
+cmpxchgl %ecx, %ebx
+cmpxchgl %ecx, (%rbx)
+
+cmpxchgq %rcx, %rbx
+cmpxchgq %rcx, (%rbx)
+
 cpuid
 
 decb %dil
@@ -777,6 +789,33 @@ testq %rsi, (%rax)
 
 ud2
 
+xaddb %bl, %cl
+xaddb %bl, (%rcx)
+
+xaddw %bx, %cx
+xaddw %ax, (%rbx)
+
+xaddl %ebx, %ecx
+xaddl %eax, (%rbx)
+
+xaddq %rbx, %rcx
+xaddq %rax, (%rbx)
+
+xchgb %bl, %cl
+xchgb %bl, (%rbx)
+
+xchgw %ax, %bx
+xchgw %bx, %cx
+xchgw %ax, (%rbx)
+
+xchgl %eax, %ebx
+xchgl %ebx, %ecx
+xchgl %eax, (%rbx)
+
+xchgq %rax, %rbx
+xchgq %rbx, %rcx
+xchgq %rax, (%rbx)
+
 xlatb
 
 xorb $7, %al
@@ -1017,6 +1056,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      100   1.00                  U     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  1      100   1.00                  U     cmpsl	%es:(%rdi), (%rsi)
 # 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:  1      1     0.50                        cmpxchgw	%cx, %bx
+# CHECK-NEXT:  2      4     2.00    *      *            cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  2      4     2.00    *      *            cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  2      4     2.00    *      *            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)
@@ -1510,6 +1557,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.50                        testq	%rsi, %rdi
 # CHECK-NEXT:  1      4     1.00    *                   testq	%rsi, (%rax)
 # CHECK-NEXT:  1      100   1.00    *             U     ud2
+# CHECK-NEXT:  1      1     0.50                        xaddb	%bl, %cl
+# CHECK-NEXT:  2      4     2.00    *      *            xaddb	%bl, (%rcx)
+# CHECK-NEXT:  1      1     0.50                        xaddw	%bx, %cx
+# CHECK-NEXT:  2      4     2.00    *      *            xaddw	%ax, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xaddl	%ebx, %ecx
+# CHECK-NEXT:  2      4     2.00    *      *            xaddl	%eax, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xaddq	%rbx, %rcx
+# CHECK-NEXT:  2      4     2.00    *      *            xaddq	%rax, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xchgb	%bl, %cl
+# CHECK-NEXT:  2      4     2.00    *      *            xchgb	%bl, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xchgw	%bx, %ax
+# CHECK-NEXT:  1      1     0.50                        xchgw	%bx, %cx
+# CHECK-NEXT:  2      4     2.00    *      *            xchgw	%ax, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xchgl	%ebx, %eax
+# CHECK-NEXT:  1      1     0.50                        xchgl	%ebx, %ecx
+# CHECK-NEXT:  2      4     2.00    *      *            xchgl	%eax, (%rbx)
+# CHECK-NEXT:  1      1     0.50                        xchgq	%rbx, %rax
+# CHECK-NEXT:  1      1     0.50                        xchgq	%rbx, %rcx
+# CHECK-NEXT:  2      4     2.00    *      *            xchgq	%rax, (%rbx)
 # CHECK-NEXT:  1      3     1.00    *                   xlatb
 # CHECK-NEXT:  1      1     0.50                        xorb	$7, %al
 # CHECK-NEXT:  1      1     0.50                        xorb	$7, %dil
@@ -1554,7 +1620,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]
-# CHECK-NEXT: 400.00  -      -     41.00   -     582.00 424.00 530.00
+# CHECK-NEXT: 400.00  -      -     41.00   -     595.50 437.50 554.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    Instructions:
@@ -1753,6 +1819,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     cmpsl	%es:(%rdi), (%rsi)
 # 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    -     cmpxchgw	%cx, %bx
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   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    -     cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   cmpxchgq	%rcx, (%rbx)
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     cpuid
 # CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     decb	%dil
 # CHECK-NEXT:  -      -      -      -      -     1.00   1.00   2.00   decb	(%rax)
@@ -2246,6 +2320,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     testq	%rsi, %rdi
 # CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   testq	%rsi, (%rax)
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ud2
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xaddb	%bl, %cl
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   xaddb	%bl, (%rcx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xaddw	%bx, %cx
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   xaddw	%ax, (%rbx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xaddl	%ebx, %ecx
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   xaddl	%eax, (%rbx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xaddq	%rbx, %rcx
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   xaddq	%rax, (%rbx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xchgb	%bl, %cl
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   xchgb	%bl, (%rbx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xchgw	%bx, %ax
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xchgw	%bx, %cx
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   xchgw	%ax, (%rbx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xchgl	%ebx, %eax
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xchgl	%ebx, %ecx
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   xchgl	%eax, (%rbx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xchgq	%rbx, %rax
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xchgq	%rbx, %rcx
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   xchgq	%rax, (%rbx)
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00   xlatb
 # CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xorb	$7, %al
 # CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     xorb	$7, %dil

Modified: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s?rev=339145&r1=339144&r2=339145&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s Tue Aug  7 07:36:43 2018
@@ -222,6 +222,18 @@ cmpsw
 cmpsl
 cmpsq
 
+cmpxchgb %cl, %bl
+cmpxchgb %cl, (%rbx)
+
+cmpxchgw %cx, %bx
+cmpxchgw %cx, (%rbx)
+
+cmpxchgl %ecx, %ebx
+cmpxchgl %ecx, (%rbx)
+
+cmpxchgq %rcx, %rbx
+cmpxchgq %rcx, (%rbx)
+
 cpuid
 
 decb %dil
@@ -777,6 +789,33 @@ testq %rsi, (%rax)
 
 ud2
 
+xaddb %bl, %cl
+xaddb %bl, (%rcx)
+
+xaddw %bx, %cx
+xaddw %ax, (%rbx)
+
+xaddl %ebx, %ecx
+xaddl %eax, (%rbx)
+
+xaddq %rbx, %rcx
+xaddq %rax, (%rbx)
+
+xchgb %bl, %cl
+xchgb %bl, (%rbx)
+
+xchgw %ax, %bx
+xchgw %bx, %cx
+xchgw %ax, (%rbx)
+
+xchgl %eax, %ebx
+xchgl %ebx, %ecx
+xchgl %eax, (%rbx)
+
+xchgq %rax, %rbx
+xchgq %rbx, %rcx
+xchgq %rax, (%rbx)
+
 xlatb
 
 xorb $7, %al
@@ -1017,6 +1056,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  5      8     1.00                  U     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  5      8     1.00                  U     cmpsl	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  5      8     1.00                  U     cmpsq	%es:(%rdi), (%rsi)
+# CHECK-NEXT:  4      5     1.33                        cmpxchgb	%cl, %bl
+# CHECK-NEXT:  4      8     1.00    *      *            cmpxchgb	%cl, (%rbx)
+# CHECK-NEXT:  4      5     1.33                        cmpxchgw	%cx, %bx
+# CHECK-NEXT:  4      8     1.00    *      *            cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  4      5     1.33                        cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  4      8     1.00    *      *            cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  4      5     1.33                        cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  4      8     1.00    *      *            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)
@@ -1510,6 +1557,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.33                        testq	%rsi, %rdi
 # CHECK-NEXT:  2      6     0.50    *                   testq	%rsi, (%rax)
 # CHECK-NEXT:  1      100   0.33    *             U     ud2
+# CHECK-NEXT:  3      2     1.00                        xaddb	%bl, %cl
+# CHECK-NEXT:  5      8     1.00    *      *            xaddb	%bl, (%rcx)
+# CHECK-NEXT:  3      2     1.00                        xaddw	%bx, %cx
+# CHECK-NEXT:  5      8     1.00    *      *            xaddw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xaddl	%ebx, %ecx
+# CHECK-NEXT:  5      8     1.00    *      *            xaddl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xaddq	%rbx, %rcx
+# CHECK-NEXT:  5      8     1.00    *      *            xaddq	%rax, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xchgb	%bl, %cl
+# CHECK-NEXT:  3      6     1.00    *      *            xchgb	%bl, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xchgw	%bx, %ax
+# CHECK-NEXT:  3      2     1.00                        xchgw	%bx, %cx
+# CHECK-NEXT:  3      6     1.00    *      *            xchgw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xchgl	%ebx, %eax
+# CHECK-NEXT:  3      2     1.00                        xchgl	%ebx, %ecx
+# CHECK-NEXT:  3      6     1.00    *      *            xchgl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     1.00                        xchgq	%rbx, %rax
+# CHECK-NEXT:  3      2     1.00                        xchgq	%rbx, %rcx
+# CHECK-NEXT:  3      6     1.00    *      *            xchgq	%rax, (%rbx)
 # CHECK-NEXT:  1      5     0.50    *                   xlatb
 # CHECK-NEXT:  1      1     0.33                        xorb	$7, %al
 # CHECK-NEXT:  1      1     0.33                        xorb	$7, %dil
@@ -1554,7 +1620,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  -     413.50 201.00 234.00 405.50 280.00 280.00
+# CHECK-NEXT: 160.00  -     438.50 224.00 242.00 430.50 290.00 290.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
@@ -1753,6 +1819,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00   1.00    -     1.00   1.00   1.00   cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  -      -     1.00   1.00    -     1.00   1.00   1.00   cmpsl	%es:(%rdi), (%rsi)
 # 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:  -      -     1.00   1.00    -     1.00   0.50   0.50   cmpxchgb	%cl, (%rbx)
+# CHECK-NEXT:  -      -     1.50   1.00    -     1.50    -      -     cmpxchgw	%cx, %bx
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00   0.50   0.50   cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  -      -     1.50   1.00    -     1.50    -      -     cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00   0.50   0.50   cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  -      -     1.50   1.00    -     1.50    -      -     cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00   0.50   0.50   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)
@@ -2246,6 +2320,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     testq	%rsi, %rdi
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33   0.50   0.50   testq	%rsi, (%rax)
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     ud2
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xaddb	%bl, %cl
+# CHECK-NEXT:  -      -     0.67   0.67   1.00   0.67   1.00   1.00   xaddb	%bl, (%rcx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xaddw	%bx, %cx
+# CHECK-NEXT:  -      -     0.67   0.67   1.00   0.67   1.00   1.00   xaddw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xaddl	%ebx, %ecx
+# CHECK-NEXT:  -      -     0.67   0.67   1.00   0.67   1.00   1.00   xaddl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xaddq	%rbx, %rcx
+# CHECK-NEXT:  -      -     0.67   0.67   1.00   0.67   1.00   1.00   xaddq	%rax, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgb	%bl, %cl
+# CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   xchgb	%bl, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgw	%bx, %ax
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgw	%bx, %cx
+# CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   xchgw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgl	%ebx, %eax
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgl	%ebx, %ecx
+# CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   xchgl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgq	%rbx, %rax
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     xchgq	%rbx, %rcx
+# CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   xchgq	%rax, (%rbx)
 # CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   xlatb
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     xorb	$7, %al
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     xorb	$7, %dil

Modified: llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s?rev=339145&r1=339144&r2=339145&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s Tue Aug  7 07:36:43 2018
@@ -222,6 +222,18 @@ cmpsw
 cmpsl
 cmpsq
 
+cmpxchgb %cl, %bl
+cmpxchgb %cl, (%rbx)
+
+cmpxchgw %cx, %bx
+cmpxchgw %cx, (%rbx)
+
+cmpxchgl %ecx, %ebx
+cmpxchgl %ecx, (%rbx)
+
+cmpxchgq %rcx, %rbx
+cmpxchgq %rcx, (%rbx)
+
 cpuid
 
 decb %dil
@@ -777,6 +789,33 @@ testq %rsi, (%rax)
 
 ud2
 
+xaddb %bl, %cl
+xaddb %bl, (%rcx)
+
+xaddw %bx, %cx
+xaddw %ax, (%rbx)
+
+xaddl %ebx, %ecx
+xaddl %eax, (%rbx)
+
+xaddq %rbx, %rcx
+xaddq %rax, (%rbx)
+
+xchgb %bl, %cl
+xchgb %bl, (%rbx)
+
+xchgw %ax, %bx
+xchgw %bx, %cx
+xchgw %ax, (%rbx)
+
+xchgl %eax, %ebx
+xchgl %ebx, %ecx
+xchgl %eax, (%rbx)
+
+xchgq %rax, %rbx
+xchgq %rbx, %rcx
+xchgq %rax, (%rbx)
+
 xlatb
 
 xorb $7, %al
@@ -1017,6 +1056,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      100   0.25                  U     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  1      100   0.25                  U     cmpsl	%es:(%rdi), (%rsi)
 # 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:  5      5     1.25                        cmpxchgw	%cx, %bx
+# CHECK-NEXT:  6      8     1.00    *      *            cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  5      5     1.25                        cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  6      8     1.00    *      *            cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  5      5     1.25                        cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  6      8     1.00    *      *            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)
@@ -1510,6 +1557,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.25                        testq	%rsi, %rdi
 # CHECK-NEXT:  2      6     0.50    *                   testq	%rsi, (%rax)
 # CHECK-NEXT:  1      100   0.25    *             U     ud2
+# CHECK-NEXT:  3      2     0.75                        xaddb	%bl, %cl
+# CHECK-NEXT:  5      7     1.00    *      *            xaddb	%bl, (%rcx)
+# CHECK-NEXT:  3      2     0.75                        xaddw	%bx, %cx
+# CHECK-NEXT:  5      7     1.00    *      *            xaddw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xaddl	%ebx, %ecx
+# CHECK-NEXT:  5      7     1.00    *      *            xaddl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xaddq	%rbx, %rcx
+# CHECK-NEXT:  5      7     1.00    *      *            xaddq	%rax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgb	%bl, %cl
+# CHECK-NEXT:  8      10    1.25    *      *            xchgb	%bl, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgw	%bx, %ax
+# CHECK-NEXT:  3      2     0.75                        xchgw	%bx, %cx
+# CHECK-NEXT:  8      10    1.25    *      *            xchgw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgl	%ebx, %eax
+# CHECK-NEXT:  3      2     0.75                        xchgl	%ebx, %ecx
+# CHECK-NEXT:  8      10    1.25    *      *            xchgl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgq	%rbx, %rax
+# CHECK-NEXT:  3      2     0.75                        xchgq	%rbx, %rcx
+# CHECK-NEXT:  8      10    1.25    *      *            xchgq	%rax, (%rbx)
 # CHECK-NEXT:  1      5     0.50    *                   xlatb
 # CHECK-NEXT:  1      1     0.25                        xorb	$7, %al
 # CHECK-NEXT:  1      1     0.25                        xorb	$7, %dil
@@ -1556,7 +1622,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   -     537.25 297.25 252.17 252.17 190.00 261.75 588.75 78.67
+# CHECK-NEXT: 60.00   -     564.50 314.50 262.17 262.17 202.00 279.00 620.00 82.67
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -1755,6 +1821,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     cmpsl	%es:(%rdi), (%rsi)
 # 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.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.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.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.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)
@@ -2248,6 +2322,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     testq	%rsi, %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.50   0.50    -     0.25   0.25    -     testq	%rsi, (%rax)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     ud2
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddb	%bl, %cl
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddb	%bl, (%rcx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddw	%bx, %cx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddl	%ebx, %ecx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddq	%rbx, %rcx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddq	%rax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgb	%bl, %cl
+# CHECK-NEXT:  -      -     1.25   0.75   0.83   0.83   1.00   0.75   2.25   0.33   xchgb	%bl, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgw	%bx, %ax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgw	%bx, %cx
+# CHECK-NEXT:  -      -     1.25   0.75   0.83   0.83   1.00   0.75   2.25   0.33   xchgw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgl	%ebx, %eax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgl	%ebx, %ecx
+# CHECK-NEXT:  -      -     1.25   0.75   0.83   0.83   1.00   0.75   2.25   0.33   xchgl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgq	%rbx, %rax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgq	%rbx, %rcx
+# CHECK-NEXT:  -      -     1.25   0.75   0.83   0.83   1.00   0.75   2.25   0.33   xchgq	%rax, (%rbx)
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     xlatb
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     xorb	$7, %al
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     xorb	$7, %dil

Modified: llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s?rev=339145&r1=339144&r2=339145&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s Tue Aug  7 07:36:43 2018
@@ -222,6 +222,18 @@ cmpsw
 cmpsl
 cmpsq
 
+cmpxchgb %cl, %bl
+cmpxchgb %cl, (%rbx)
+
+cmpxchgw %cx, %bx
+cmpxchgw %cx, (%rbx)
+
+cmpxchgl %ecx, %ebx
+cmpxchgl %ecx, (%rbx)
+
+cmpxchgq %rcx, %rbx
+cmpxchgq %rcx, (%rbx)
+
 cpuid
 
 decb %dil
@@ -777,6 +789,33 @@ testq %rsi, (%rax)
 
 ud2
 
+xaddb %bl, %cl
+xaddb %bl, (%rcx)
+
+xaddw %bx, %cx
+xaddw %ax, (%rbx)
+
+xaddl %ebx, %ecx
+xaddl %eax, (%rbx)
+
+xaddq %rbx, %rcx
+xaddq %rax, (%rbx)
+
+xchgb %bl, %cl
+xchgb %bl, (%rbx)
+
+xchgw %ax, %bx
+xchgw %bx, %cx
+xchgw %ax, (%rbx)
+
+xchgl %eax, %ebx
+xchgl %ebx, %ecx
+xchgl %eax, (%rbx)
+
+xchgq %rax, %rbx
+xchgq %rbx, %rcx
+xchgq %rax, (%rbx)
+
 xlatb
 
 xorb $7, %al
@@ -1017,6 +1056,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      100   0.25                  U     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  1      100   0.25                  U     cmpsl	%es:(%rdi), (%rsi)
 # 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:  5      5     1.25                        cmpxchgw	%cx, %bx
+# CHECK-NEXT:  6      8     1.00    *      *            cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  5      5     1.25                        cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  6      8     1.00    *      *            cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  5      5     1.25                        cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  6      8     1.00    *      *            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)
@@ -1510,6 +1557,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.25                        testq	%rsi, %rdi
 # CHECK-NEXT:  2      6     0.50    *                   testq	%rsi, (%rax)
 # CHECK-NEXT:  1      100   0.25    *             U     ud2
+# CHECK-NEXT:  3      2     0.75                        xaddb	%bl, %cl
+# CHECK-NEXT:  5      7     1.00    *      *            xaddb	%bl, (%rcx)
+# CHECK-NEXT:  3      2     0.75                        xaddw	%bx, %cx
+# CHECK-NEXT:  5      7     1.00    *      *            xaddw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xaddl	%ebx, %ecx
+# CHECK-NEXT:  5      7     1.00    *      *            xaddl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xaddq	%rbx, %rcx
+# CHECK-NEXT:  5      7     1.00    *      *            xaddq	%rax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgb	%bl, %cl
+# CHECK-NEXT:  8      10    1.25    *      *            xchgb	%bl, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgw	%bx, %ax
+# CHECK-NEXT:  3      2     0.75                        xchgw	%bx, %cx
+# CHECK-NEXT:  8      10    1.25    *      *            xchgw	%ax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgl	%ebx, %eax
+# CHECK-NEXT:  3      2     0.75                        xchgl	%ebx, %ecx
+# CHECK-NEXT:  8      10    1.25    *      *            xchgl	%eax, (%rbx)
+# CHECK-NEXT:  3      2     0.75                        xchgq	%rbx, %rax
+# CHECK-NEXT:  3      2     0.75                        xchgq	%rbx, %rcx
+# CHECK-NEXT:  8      10    1.25    *      *            xchgq	%rax, (%rbx)
 # CHECK-NEXT:  1      5     0.50    *                   xlatb
 # CHECK-NEXT:  1      1     0.25                        xorb	$7, %al
 # CHECK-NEXT:  1      1     0.25                        xorb	$7, %dil
@@ -1556,7 +1622,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   -     537.50 297.50 252.17 252.17 190.00 262.00 589.00 78.67
+# CHECK-NEXT: 60.00   -     564.75 314.75 262.17 262.17 202.00 279.25 620.25 82.67
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -1755,6 +1821,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     cmpsl	%es:(%rdi), (%rsi)
 # 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.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.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.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.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)
@@ -2248,6 +2322,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     testq	%rsi, %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.50   0.50    -     0.25   0.25    -     testq	%rsi, (%rax)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     ud2
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddb	%bl, %cl
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddb	%bl, (%rcx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddw	%bx, %cx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddl	%ebx, %ecx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xaddq	%rbx, %rcx
+# CHECK-NEXT:  -      -     0.50   0.50   0.83   0.83   1.00   0.50   0.50   0.33   xaddq	%rax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgb	%bl, %cl
+# CHECK-NEXT:  -      -     1.25   0.75   0.83   0.83   1.00   0.75   2.25   0.33   xchgb	%bl, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgw	%bx, %ax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgw	%bx, %cx
+# CHECK-NEXT:  -      -     1.25   0.75   0.83   0.83   1.00   0.75   2.25   0.33   xchgw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgl	%ebx, %eax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgl	%ebx, %ecx
+# CHECK-NEXT:  -      -     1.25   0.75   0.83   0.83   1.00   0.75   2.25   0.33   xchgl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgq	%rbx, %rax
+# CHECK-NEXT:  -      -     0.75   0.75    -      -      -     0.75   0.75    -     xchgq	%rbx, %rcx
+# CHECK-NEXT:  -      -     1.25   0.75   0.83   0.83   1.00   0.75   2.25   0.33   xchgq	%rax, (%rbx)
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     xlatb
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     xorb	$7, %al
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     xorb	$7, %dil

Modified: llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s?rev=339145&r1=339144&r2=339145&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s Tue Aug  7 07:36:43 2018
@@ -222,6 +222,18 @@ cmpsw
 cmpsl
 cmpsq
 
+cmpxchgb %cl, %bl
+cmpxchgb %cl, (%rbx)
+
+cmpxchgw %cx, %bx
+cmpxchgw %cx, (%rbx)
+
+cmpxchgl %ecx, %ebx
+cmpxchgl %ecx, (%rbx)
+
+cmpxchgq %rcx, %rbx
+cmpxchgq %rcx, (%rbx)
+
 cpuid
 
 decb %dil
@@ -777,6 +789,33 @@ testq %rsi, (%rax)
 
 ud2
 
+xaddb %bl, %cl
+xaddb %bl, (%rcx)
+
+xaddw %bx, %cx
+xaddw %ax, (%rbx)
+
+xaddl %ebx, %ecx
+xaddl %eax, (%rbx)
+
+xaddq %rbx, %rcx
+xaddq %rax, (%rbx)
+
+xchgb %bl, %cl
+xchgb %bl, (%rbx)
+
+xchgw %ax, %bx
+xchgw %bx, %cx
+xchgw %ax, (%rbx)
+
+xchgl %eax, %ebx
+xchgl %ebx, %ecx
+xchgl %eax, (%rbx)
+
+xchgq %rax, %rbx
+xchgq %rbx, %rcx
+xchgq %rax, (%rbx)
+
 xlatb
 
 xorb $7, %al
@@ -1017,6 +1056,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      100   0.25                  U     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  1      100   0.25                  U     cmpsl	%es:(%rdi), (%rsi)
 # 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:  1      1     0.25                        cmpxchgw	%cx, %bx
+# CHECK-NEXT:  5      8     0.50    *      *            cmpxchgw	%cx, (%rbx)
+# CHECK-NEXT:  1      1     0.25                        cmpxchgl	%ecx, %ebx
+# CHECK-NEXT:  5      8     0.50    *      *            cmpxchgl	%ecx, (%rbx)
+# CHECK-NEXT:  1      1     0.25                        cmpxchgq	%rcx, %rbx
+# CHECK-NEXT:  5      8     0.50    *      *            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)
@@ -1510,6 +1557,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.25                        testq	%rsi, %rdi
 # CHECK-NEXT:  2      5     0.50    *                   testq	%rsi, (%rax)
 # CHECK-NEXT:  1      100   0.25    *             U     ud2
+# CHECK-NEXT:  1      1     0.25                        xaddb	%bl, %cl
+# CHECK-NEXT:  1      100   0.25    *      *            xaddb	%bl, (%rcx)
+# CHECK-NEXT:  1      1     0.25                        xaddw	%bx, %cx
+# CHECK-NEXT:  1      100   0.25    *      *            xaddw	%ax, (%rbx)
+# CHECK-NEXT:  1      1     0.25                        xaddl	%ebx, %ecx
+# CHECK-NEXT:  1      100   0.25    *      *            xaddl	%eax, (%rbx)
+# CHECK-NEXT:  1      1     0.25                        xaddq	%rbx, %rcx
+# CHECK-NEXT:  1      100   0.25    *      *            xaddq	%rax, (%rbx)
+# CHECK-NEXT:  2      1     0.50                        xchgb	%bl, %cl
+# CHECK-NEXT:  2      5     0.50    *      *            xchgb	%bl, (%rbx)
+# CHECK-NEXT:  2      1     0.50                        xchgw	%bx, %ax
+# CHECK-NEXT:  2      1     0.50                        xchgw	%bx, %cx
+# CHECK-NEXT:  2      5     0.50    *      *            xchgw	%ax, (%rbx)
+# CHECK-NEXT:  2      1     0.50                        xchgl	%ebx, %eax
+# CHECK-NEXT:  2      1     0.50                        xchgl	%ebx, %ecx
+# CHECK-NEXT:  2      5     0.50    *      *            xchgl	%eax, (%rbx)
+# CHECK-NEXT:  2      1     0.50                        xchgq	%rbx, %rax
+# CHECK-NEXT:  2      1     0.50                        xchgq	%rbx, %rcx
+# CHECK-NEXT:  2      5     0.50    *      *            xchgq	%rax, (%rbx)
 # CHECK-NEXT:  1      100   0.25    *                   xlatb
 # CHECK-NEXT:  1      1     0.25                        xorb	$7, %al
 # CHECK-NEXT:  1      1     0.25                        xorb	$7, %dil
@@ -1558,7 +1624,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: 161.00 161.00 146.00 180.00 162.00 146.00 392.00  -      -      -      -     34.00
+# CHECK-NEXT: 165.00 165.00 153.50 187.50 169.50 153.50 392.00  -      -      -      -     34.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
@@ -1757,6 +1823,14 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     cmpsw	%es:(%rdi), (%rsi)
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     cmpsl	%es:(%rdi), (%rsi)
 # 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.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.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.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:  -      -      -      -      -      -      -      -      -      -      -      -     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)
@@ -2250,6 +2324,25 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     testq	%rsi, %rdi
 # CHECK-NEXT: 0.50   0.50   0.25   0.25   0.25   0.25    -      -      -      -      -      -     testq	%rsi, (%rax)
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     ud2
+# CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     xaddb	%bl, %cl
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     xaddb	%bl, (%rcx)
+# CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     xaddw	%bx, %cx
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     xaddw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     xaddl	%ebx, %ecx
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     xaddl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     xaddq	%rbx, %rcx
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     xaddq	%rax, (%rbx)
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     xchgb	%bl, %cl
+# CHECK-NEXT: 0.50   0.50   0.25   0.25   0.25   0.25    -      -      -      -      -      -     xchgb	%bl, (%rbx)
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     xchgw	%bx, %ax
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     xchgw	%bx, %cx
+# CHECK-NEXT: 0.50   0.50   0.25   0.25   0.25   0.25    -      -      -      -      -      -     xchgw	%ax, (%rbx)
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     xchgl	%ebx, %eax
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     xchgl	%ebx, %ecx
+# CHECK-NEXT: 0.50   0.50   0.25   0.25   0.25   0.25    -      -      -      -      -      -     xchgl	%eax, (%rbx)
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     xchgq	%rbx, %rax
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     xchgq	%rbx, %rcx
+# CHECK-NEXT: 0.50   0.50   0.25   0.25   0.25   0.25    -      -      -      -      -      -     xchgq	%rax, (%rbx)
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     xlatb
 # CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     xorb	$7, %al
 # CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     xorb	$7, %dil




More information about the llvm-commits mailing list