[X86] Added extensive scheduling model tests for all the CMPXCHG variants. NFC
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Mon, 19 Aug 2019 17:07:26 +0000 (17:07 +0000)
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Mon, 19 Aug 2019 17:07:26 +0000 (17:07 +0000)
Addresses a review comment in D66424

llvm-svn: 369279

12 files changed:
llvm/test/tools/llvm-mca/X86/Atom/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/Barcelona/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/BdVer2/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/Broadwell/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/BtVer2/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/Generic/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/Haswell/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/SLM/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/SandyBridge/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-cmpxchg.s
llvm/test/tools/llvm-mca/X86/Znver1/resources-cmpxchg.s

index cc6e5fb..d5c9093 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  1      18    9.00    *      *            cmpxchg8b      (%rax)
 # 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
@@ -22,9 +53,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]
-# CHECK-NEXT: 20.00  20.00
+# CHECK-NEXT: 115.00 115.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    Instructions:
 # CHECK-NEXT: 9.00   9.00   cmpxchg8b  (%rax)
 # 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)
index 19a2207..8966e1a 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  3      6     1.00    *      *            cmpxchg8b      (%rax)
 # 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
@@ -28,9 +59,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
-# CHECK-NEXT:  -      -     0.67   0.67   2.00   0.67   2.00   2.00
+# CHECK-NEXT:  -      -     10.00  8.00   12.00  26.00  12.00  12.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
 # CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   cmpxchg8b        (%rax)
 # 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)
index 130c597..b135bc4 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  18     3     26.00   *      *            cmpxchg8b      (%rax)
 # 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
@@ -43,9 +74,23 @@ cmpxchg16b (%rax)
 
 # 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:  -      -      -      -      -      -     95.00   -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -
+# CHECK-NEXT:  -      -      -      -      -      -     374.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:
 # CHECK-NEXT:  -      -      -      -      -      -     26.00   -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     cmpxchg8b       (%rax)
 # 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)
index 4813c6c..b0de687 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  14     16    2.75    *      *            cmpxchg8b      (%rax)
 # 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
@@ -30,9 +61,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT:  -      -     8.75   3.75   1.67   1.67   2.00   7.75   6.75   0.67
+# CHECK-NEXT:  -      -     34.50  12.50  10.00  10.00  12.00  20.50  30.50  4.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
 # CHECK-NEXT:  -      -     3.25   2.25   0.83   0.83   1.00   2.25   3.25   0.33   cmpxchg8b  (%rax)
 # 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)
index 23ee46c..ba54f22 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  2      4     1.00    *      *            cmpxchg8b      (%rax)
 # 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
@@ -34,9 +65,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]
-# CHECK-NEXT: 1.00   1.00    -      -      -      -      -     2.00    -     2.00    -      -      -      -
+# CHECK-NEXT: 8.00   8.00    -      -      -      -      -     12.00   -     12.00   -      -      -      -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]   Instructions:
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     cmpxchg8b      (%rax)
 # 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)
index 19a2207..8966e1a 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  3      6     1.00    *      *            cmpxchg8b      (%rax)
 # 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
@@ -28,9 +59,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
-# CHECK-NEXT:  -      -     0.67   0.67   2.00   0.67   2.00   2.00
+# CHECK-NEXT:  -      -     10.00  8.00   12.00  26.00  12.00  12.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
 # CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   cmpxchg8b        (%rax)
 # 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)
index 9db2d3f..f6255c9 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  14     17    2.75    *      *            cmpxchg8b      (%rax)
 # 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
@@ -30,9 +61,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT:  -      -     8.75   3.75   1.67   1.67   2.00   7.75   6.75   0.67
+# CHECK-NEXT:  -      -     34.50  12.50  10.00  10.00  12.00  20.50  30.50  4.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
 # CHECK-NEXT:  -      -     3.25   2.25   0.83   0.83   1.00   2.25   3.25   0.33   cmpxchg8b  (%rax)
 # 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)
index eb56516..25cdef9 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  2      4     2.00    *      *            cmpxchg8b      (%rax)
 # 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
@@ -28,9 +59,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]
-# CHECK-NEXT:  -      -      -      -      -     1.00   1.00   4.00
+# CHECK-NEXT:  -      -      -      -      -     8.00   8.00   24.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    Instructions:
 # CHECK-NEXT:  -      -      -      -      -     0.50   0.50   2.00   cmpxchg8b        (%rax)
 # 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)
index a23d63e..f25bce3 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  3      6     1.00    *      *            cmpxchg8b      (%rax)
 # 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
@@ -28,9 +59,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
-# CHECK-NEXT:  -      -     0.67   0.67   2.00   0.67   2.00   2.00
+# CHECK-NEXT:  -      -     10.00  8.00   12.00  26.00  12.00  12.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
 # CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   cmpxchg8b        (%rax)
 # 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)
index 900b9c0..d8ad4ce 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  14     16    2.75    *      *            cmpxchg8b      (%rax)
 # 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
@@ -30,9 +61,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT:  -      -     8.75   3.75   1.67   1.67   2.00   7.75   6.75   0.67
+# CHECK-NEXT:  -      -     34.50  12.50  10.00  10.00  12.00  20.50  30.50  4.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
 # CHECK-NEXT:  -      -     3.25   2.25   0.83   0.83   1.00   2.25   3.25   0.33   cmpxchg8b  (%rax)
 # 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)
index 8dc9a4b..b3fc6fb 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  14     16    2.75    *      *            cmpxchg8b      (%rax)
 # 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
@@ -30,9 +61,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT:  -      -     8.75   3.75   1.67   1.67   2.00   7.75   6.75   0.67
+# CHECK-NEXT:  -      -     34.50  12.50  10.00  10.00  12.00  20.50  30.50  4.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
 # CHECK-NEXT:  -      -     3.25   2.25   0.83   0.83   1.00   2.25   3.25   0.33   cmpxchg8b  (%rax)
 # 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)
index 9a60b7c..db19950 100644 (file)
@@ -3,6 +3,23 @@
 
 cmpxchg8b  (%rax)
 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
@@ -15,6 +32,20 @@ cmpxchg16b (%rax)
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
 # CHECK-NEXT:  18     1     0.50    *      *            cmpxchg8b      (%rax)
 # 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
@@ -32,9 +63,23 @@ cmpxchg16b (%rax)
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
-# CHECK-NEXT: 0.50   0.50   0.25   0.25   0.25   0.25    -      -      -      -      -      -
+# CHECK-NEXT: 5.00   5.00   3.50   3.50   3.50   3.50    -      -      -      -      -      -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
 # CHECK-NEXT: 0.50   0.50   0.25   0.25   0.25   0.25    -      -      -      -      -      -     cmpxchg8b    (%rax)
 # 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)