[llvm] r334296 - [X86][BtVer2] Add tests for scalar SUB/XOR instructions that should match the dependency-breaking 'zero-idiom'

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 8 08:28:44 PDT 2018


Author: rksimon
Date: Fri Jun  8 08:28:43 2018
New Revision: 334296

URL: http://llvm.org/viewvc/llvm-project?rev=334296&view=rev
Log:
[X86][BtVer2] Add tests for scalar SUB/XOR instructions that should match the dependency-breaking 'zero-idiom'

As detailed on Agner's Microarchitecture doc (21.8 AMD Bobcat and Jaguar pipeline - Dependency-breaking instructions).

Modified:
    llvm/trunk/test/tools/llvm-mca/X86/BtVer2/zero-idioms.s

Modified: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/zero-idioms.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/BtVer2/zero-idioms.s?rev=334296&r1=334295&r2=334296&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/zero-idioms.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/zero-idioms.s Fri Jun  8 08:28:43 2018
@@ -1,12 +1,12 @@
 # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -timeline -register-file-stats -iterations=1 < %s | FileCheck %s
 
-# TODO sbbl  %eax, %eax
-# TODO sbbq  %rax, %rax
-# TODO subl  %eax, %eax
-# TODO subq  %rax, %rax
-# TODO xorl  %eax, %eax
-# TODO xorq  %rax, %rax
+sbbl  %eax, %eax
+sbbq  %rax, %rax
+subl  %eax, %eax
+subq  %rax, %rax
+xorl  %eax, %eax
+xorq  %rax, %rax
 
 pcmpgtb   %mm2, %mm2
 pcmpgtd   %mm2, %mm2
@@ -68,11 +68,11 @@ vxorpd %xmm1, %xmm1, %xmm3
 vpxor  %xmm3, %xmm3, %xmm5
 
 # CHECK:      Iterations:        1
-# CHECK-NEXT: Instructions:      51
-# CHECK-NEXT: Total Cycles:      27
+# CHECK-NEXT: Instructions:      57
+# CHECK-NEXT: Total Cycles:      34
 # CHECK-NEXT: Dispatch Width:    2
-# CHECK-NEXT: IPC:               1.89
-# CHECK-NEXT: Block RThroughput: 25.5
+# CHECK-NEXT: IPC:               1.68
+# CHECK-NEXT: Block RThroughput: 28.5
 
 # CHECK:      Instruction Info:
 # CHECK-NEXT: [1]: #uOps
@@ -83,6 +83,12 @@ vpxor  %xmm3, %xmm3, %xmm5
 # CHECK-NEXT: [6]: HasSideEffects
 
 # CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      1     1.00                        sbbl	%eax, %eax
+# CHECK-NEXT:  1      1     1.00                        sbbq	%rax, %rax
+# CHECK-NEXT:  1      1     0.50                        subl	%eax, %eax
+# CHECK-NEXT:  1      1     0.50                        subq	%rax, %rax
+# CHECK-NEXT:  1      1     0.50                        xorl	%eax, %eax
+# CHECK-NEXT:  1      1     0.50                        xorq	%rax, %rax
 # CHECK-NEXT:  1      0     0.50                        pcmpgtb	%mm2, %mm2
 # CHECK-NEXT:  1      0     0.50                        pcmpgtd	%mm2, %mm2
 # CHECK-NEXT:  1      0     0.50                        pcmpgtw	%mm2, %mm2
@@ -136,8 +142,8 @@ vpxor  %xmm3, %xmm3, %xmm5
 # CHECK-NEXT:  1      0     0.50                        vpxor	%xmm3, %xmm3, %xmm5
 
 # CHECK:      Register File statistics:
-# CHECK-NEXT: Total number of mappings created:    0
-# CHECK-NEXT: Max number of mappings used:         0
+# CHECK-NEXT: Total number of mappings created:    12
+# CHECK-NEXT: Max number of mappings used:         12
 
 # CHECK:      *  Register File #1 -- JFpuPRF:
 # CHECK-NEXT:    Number of physical registers:     72
@@ -146,8 +152,8 @@ vpxor  %xmm3, %xmm3, %xmm5
 
 # CHECK:      *  Register File #2 -- JIntegerPRF:
 # CHECK-NEXT:    Number of physical registers:     64
-# CHECK-NEXT:    Total number of mappings created: 0
-# CHECK-NEXT:    Max number of mappings used:      0
+# CHECK-NEXT:    Total number of mappings created: 12
+# CHECK-NEXT:    Max number of mappings used:      12
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - JALU0
@@ -167,10 +173,16 @@ vpxor  %xmm3, %xmm3, %xmm5
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]
-# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -      -      -
+# CHECK-NEXT: 4.00   4.00    -      -      -      -      -      -      -      -      -      -      -      -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]   Instructions:
+# CHECK-NEXT:  -     2.00    -      -      -      -      -      -      -      -      -      -      -      -     sbbl	%eax, %eax
+# CHECK-NEXT: 2.00    -      -      -      -      -      -      -      -      -      -      -      -      -     sbbq	%rax, %rax
+# CHECK-NEXT:  -     1.00    -      -      -      -      -      -      -      -      -      -      -      -     subl	%eax, %eax
+# CHECK-NEXT: 1.00    -      -      -      -      -      -      -      -      -      -      -      -      -     subq	%rax, %rax
+# CHECK-NEXT:  -     1.00    -      -      -      -      -      -      -      -      -      -      -      -     xorl	%eax, %eax
+# CHECK-NEXT: 1.00    -      -      -      -      -      -      -      -      -      -      -      -      -     xorq	%rax, %rax
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -      -      -     pcmpgtb	%mm2, %mm2
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -      -      -     pcmpgtd	%mm2, %mm2
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -      -      -     pcmpgtw	%mm2, %mm2
@@ -224,60 +236,66 @@ vpxor  %xmm3, %xmm3, %xmm5
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -      -      -     vpxor	%xmm3, %xmm3, %xmm5
 
 # CHECK:      Timeline view:
-# CHECK-NEXT:                     0123456789
-# CHECK-NEXT: Index     0123456789          0123456
+# CHECK-NEXT:                     0123456789          0123
+# CHECK-NEXT: Index     0123456789          0123456789
 
-# CHECK:      [0,0]     DR   .    .    .    .    ..   pcmpgtb	%mm2, %mm2
-# CHECK-NEXT: [0,1]     DR   .    .    .    .    ..   pcmpgtd	%mm2, %mm2
-# CHECK-NEXT: [0,2]     .DR  .    .    .    .    ..   pcmpgtw	%mm2, %mm2
-# CHECK-NEXT: [0,3]     .DR  .    .    .    .    ..   pcmpgtb	%xmm2, %xmm2
-# CHECK-NEXT: [0,4]     . DR .    .    .    .    ..   pcmpgtd	%xmm2, %xmm2
-# CHECK-NEXT: [0,5]     . DR .    .    .    .    ..   pcmpgtq	%xmm2, %xmm2
-# CHECK-NEXT: [0,6]     .  DR.    .    .    .    ..   pcmpgtw	%xmm2, %xmm2
-# CHECK-NEXT: [0,7]     .  DR.    .    .    .    ..   vpcmpgtb	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,8]     .   DR    .    .    .    ..   vpcmpgtd	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,9]     .   DR    .    .    .    ..   vpcmpgtq	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,10]    .    DR   .    .    .    ..   vpcmpgtw	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,11]    .    DR   .    .    .    ..   vpcmpgtb	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,12]    .    .DR  .    .    .    ..   vpcmpgtd	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,13]    .    .DR  .    .    .    ..   vpcmpgtq	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,14]    .    . DR .    .    .    ..   vpcmpgtw	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,15]    .    . DR .    .    .    ..   psubb	%mm2, %mm2
-# CHECK-NEXT: [0,16]    .    .  DR.    .    .    ..   psubd	%mm2, %mm2
-# CHECK-NEXT: [0,17]    .    .  DR.    .    .    ..   psubq	%mm2, %mm2
-# CHECK-NEXT: [0,18]    .    .   DR    .    .    ..   psubw	%mm2, %mm2
-# CHECK-NEXT: [0,19]    .    .   DR    .    .    ..   psubb	%xmm2, %xmm2
-# CHECK-NEXT: [0,20]    .    .    DR   .    .    ..   psubd	%xmm2, %xmm2
-# CHECK-NEXT: [0,21]    .    .    DR   .    .    ..   psubq	%xmm2, %xmm2
-# CHECK-NEXT: [0,22]    .    .    .DR  .    .    ..   psubw	%xmm2, %xmm2
-# CHECK-NEXT: [0,23]    .    .    .DR  .    .    ..   vpsubb	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,24]    .    .    . DR .    .    ..   vpsubd	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,25]    .    .    . DR .    .    ..   vpsubq	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,26]    .    .    .  DR.    .    ..   vpsubw	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,27]    .    .    .  DR.    .    ..   vpsubb	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,28]    .    .    .   DR    .    ..   vpsubd	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,29]    .    .    .   DR    .    ..   vpsubq	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,30]    .    .    .    DR   .    ..   vpsubw	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,31]    .    .    .    DR   .    ..   andnps	%xmm0, %xmm0
-# CHECK-NEXT: [0,32]    .    .    .    .DR  .    ..   andnpd	%xmm1, %xmm1
-# CHECK-NEXT: [0,33]    .    .    .    .DR  .    ..   vandnps	%xmm2, %xmm2, %xmm2
-# CHECK-NEXT: [0,34]    .    .    .    . DR .    ..   vandnpd	%xmm1, %xmm1, %xmm1
-# CHECK-NEXT: [0,35]    .    .    .    . DR .    ..   pandn	%mm2, %mm2
-# CHECK-NEXT: [0,36]    .    .    .    .  DR.    ..   pandn	%xmm2, %xmm2
-# CHECK-NEXT: [0,37]    .    .    .    .  DR.    ..   vpandn	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,38]    .    .    .    .   DR    ..   vandnps	%xmm2, %xmm2, %xmm5
-# CHECK-NEXT: [0,39]    .    .    .    .   DR    ..   vandnpd	%xmm1, %xmm1, %xmm5
-# CHECK-NEXT: [0,40]    .    .    .    .    DR   ..   vpandn	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: [0,41]    .    .    .    .    DR   ..   xorps	%xmm0, %xmm0
-# CHECK-NEXT: [0,42]    .    .    .    .    .DR  ..   xorpd	%xmm1, %xmm1
-# CHECK-NEXT: [0,43]    .    .    .    .    .DR  ..   vxorps	%xmm2, %xmm2, %xmm2
-# CHECK-NEXT: [0,44]    .    .    .    .    . DR ..   vxorpd	%xmm1, %xmm1, %xmm1
-# CHECK-NEXT: [0,45]    .    .    .    .    . DR ..   pxor	%mm2, %mm2
-# CHECK-NEXT: [0,46]    .    .    .    .    .  DR..   pxor	%xmm2, %xmm2
-# CHECK-NEXT: [0,47]    .    .    .    .    .  DR..   vpxor	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,48]    .    .    .    .    .   DR.   vxorps	%xmm4, %xmm4, %xmm5
-# CHECK-NEXT: [0,49]    .    .    .    .    .   DR.   vxorpd	%xmm1, %xmm1, %xmm3
-# CHECK-NEXT: [0,50]    .    .    .    .    .    DR   vpxor	%xmm3, %xmm3, %xmm5
+# CHECK:      [0,0]     DeER .    .    .    .    .    .  .   sbbl	%eax, %eax
+# CHECK-NEXT: [0,1]     D=eER.    .    .    .    .    .  .   sbbq	%rax, %rax
+# CHECK-NEXT: [0,2]     .D=eER    .    .    .    .    .  .   subl	%eax, %eax
+# CHECK-NEXT: [0,3]     .D==eER   .    .    .    .    .  .   subq	%rax, %rax
+# CHECK-NEXT: [0,4]     . D==eER  .    .    .    .    .  .   xorl	%eax, %eax
+# CHECK-NEXT: [0,5]     . D===eER .    .    .    .    .  .   xorq	%rax, %rax
+# CHECK-NEXT: [0,6]     .  D----R .    .    .    .    .  .   pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: [0,7]     .  D-----R.    .    .    .    .  .   pcmpgtd	%mm2, %mm2
+# CHECK-NEXT: [0,8]     .   D----R.    .    .    .    .  .   pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: [0,9]     .   D-----R    .    .    .    .  .   pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT: [0,10]    .    D----R    .    .    .    .  .   pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: [0,11]    .    D-----R   .    .    .    .  .   pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT: [0,12]    .    .D----R   .    .    .    .  .   pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: [0,13]    .    .D-----R  .    .    .    .  .   vpcmpgtb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,14]    .    . D----R  .    .    .    .  .   vpcmpgtd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,15]    .    . D-----R .    .    .    .  .   vpcmpgtq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,16]    .    .  D----R .    .    .    .  .   vpcmpgtw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,17]    .    .  D-----R.    .    .    .  .   vpcmpgtb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,18]    .    .   D----R.    .    .    .  .   vpcmpgtd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,19]    .    .   D-----R    .    .    .  .   vpcmpgtq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,20]    .    .    D----R    .    .    .  .   vpcmpgtw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,21]    .    .    D-----R   .    .    .  .   psubb	%mm2, %mm2
+# CHECK-NEXT: [0,22]    .    .    .D----R   .    .    .  .   psubd	%mm2, %mm2
+# CHECK-NEXT: [0,23]    .    .    .D-----R  .    .    .  .   psubq	%mm2, %mm2
+# CHECK-NEXT: [0,24]    .    .    . D----R  .    .    .  .   psubw	%mm2, %mm2
+# CHECK-NEXT: [0,25]    .    .    . D-----R .    .    .  .   psubb	%xmm2, %xmm2
+# CHECK-NEXT: [0,26]    .    .    .  D----R .    .    .  .   psubd	%xmm2, %xmm2
+# CHECK-NEXT: [0,27]    .    .    .  D-----R.    .    .  .   psubq	%xmm2, %xmm2
+# CHECK-NEXT: [0,28]    .    .    .   D----R.    .    .  .   psubw	%xmm2, %xmm2
+# CHECK-NEXT: [0,29]    .    .    .   D-----R    .    .  .   vpsubb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,30]    .    .    .    D----R    .    .  .   vpsubd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,31]    .    .    .    D-----R   .    .  .   vpsubq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,32]    .    .    .    .D----R   .    .  .   vpsubw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,33]    .    .    .    .D-----R  .    .  .   vpsubb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,34]    .    .    .    . D----R  .    .  .   vpsubd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,35]    .    .    .    . D-----R .    .  .   vpsubq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,36]    .    .    .    .  D----R .    .  .   vpsubw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,37]    .    .    .    .  D-----R.    .  .   andnps	%xmm0, %xmm0
+# CHECK-NEXT: [0,38]    .    .    .    .   D----R.    .  .   andnpd	%xmm1, %xmm1
+# CHECK-NEXT: [0,39]    .    .    .    .   D-----R    .  .   vandnps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: [0,40]    .    .    .    .    D----R    .  .   vandnpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: [0,41]    .    .    .    .    D-----R   .  .   pandn	%mm2, %mm2
+# CHECK-NEXT: [0,42]    .    .    .    .    .D----R   .  .   pandn	%xmm2, %xmm2
+# CHECK-NEXT: [0,43]    .    .    .    .    .D-----R  .  .   vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,44]    .    .    .    .    . D----R  .  .   vandnps	%xmm2, %xmm2, %xmm5
+# CHECK-NEXT: [0,45]    .    .    .    .    . D-----R .  .   vandnpd	%xmm1, %xmm1, %xmm5
+# CHECK-NEXT: [0,46]    .    .    .    .    .  D----R .  .   vpandn	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,47]    .    .    .    .    .  D-----R.  .   xorps	%xmm0, %xmm0
+# CHECK-NEXT: [0,48]    .    .    .    .    .   D----R.  .   xorpd	%xmm1, %xmm1
+# CHECK-NEXT: [0,49]    .    .    .    .    .   D-----R  .   vxorps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: [0,50]    .    .    .    .    .    D----R  .   vxorpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: [0,51]    .    .    .    .    .    D-----R .   pxor	%mm2, %mm2
+# CHECK-NEXT: [0,52]    .    .    .    .    .    .D----R .   pxor	%xmm2, %xmm2
+# CHECK-NEXT: [0,53]    .    .    .    .    .    .D-----R.   vpxor	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,54]    .    .    .    .    .    . D----R.   vxorps	%xmm4, %xmm4, %xmm5
+# CHECK-NEXT: [0,55]    .    .    .    .    .    . D-----R   vxorpd	%xmm1, %xmm1, %xmm3
+# CHECK-NEXT: [0,56]    .    .    .    .    .    .  D----R   vpxor	%xmm3, %xmm3, %xmm5
 
 # CHECK:      Average Wait times (based on the timeline view):
 # CHECK-NEXT: [0]: Executions
@@ -286,54 +304,60 @@ vpxor  %xmm3, %xmm3, %xmm5
 # CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
 
 # CHECK:            [0]    [1]    [2]    [3]
-# CHECK-NEXT: 0.     1     0.0    0.0    0.0       pcmpgtb	%mm2, %mm2
-# CHECK-NEXT: 1.     1     0.0    0.0    0.0       pcmpgtd	%mm2, %mm2
-# CHECK-NEXT: 2.     1     0.0    0.0    0.0       pcmpgtw	%mm2, %mm2
-# CHECK-NEXT: 3.     1     0.0    0.0    0.0       pcmpgtb	%xmm2, %xmm2
-# CHECK-NEXT: 4.     1     0.0    0.0    0.0       pcmpgtd	%xmm2, %xmm2
-# CHECK-NEXT: 5.     1     0.0    0.0    0.0       pcmpgtq	%xmm2, %xmm2
-# CHECK-NEXT: 6.     1     0.0    0.0    0.0       pcmpgtw	%xmm2, %xmm2
-# CHECK-NEXT: 7.     1     0.0    0.0    0.0       vpcmpgtb	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 8.     1     0.0    0.0    0.0       vpcmpgtd	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 9.     1     0.0    0.0    0.0       vpcmpgtq	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 10.    1     0.0    0.0    0.0       vpcmpgtw	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 11.    1     0.0    0.0    0.0       vpcmpgtb	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 12.    1     0.0    0.0    0.0       vpcmpgtd	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 13.    1     0.0    0.0    0.0       vpcmpgtq	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 14.    1     0.0    0.0    0.0       vpcmpgtw	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 15.    1     0.0    0.0    0.0       psubb	%mm2, %mm2
-# CHECK-NEXT: 16.    1     0.0    0.0    0.0       psubd	%mm2, %mm2
-# CHECK-NEXT: 17.    1     0.0    0.0    0.0       psubq	%mm2, %mm2
-# CHECK-NEXT: 18.    1     0.0    0.0    0.0       psubw	%mm2, %mm2
-# CHECK-NEXT: 19.    1     0.0    0.0    0.0       psubb	%xmm2, %xmm2
-# CHECK-NEXT: 20.    1     0.0    0.0    0.0       psubd	%xmm2, %xmm2
-# CHECK-NEXT: 21.    1     0.0    0.0    0.0       psubq	%xmm2, %xmm2
-# CHECK-NEXT: 22.    1     0.0    0.0    0.0       psubw	%xmm2, %xmm2
-# CHECK-NEXT: 23.    1     0.0    0.0    0.0       vpsubb	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 24.    1     0.0    0.0    0.0       vpsubd	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 25.    1     0.0    0.0    0.0       vpsubq	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 26.    1     0.0    0.0    0.0       vpsubw	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 27.    1     0.0    0.0    0.0       vpsubb	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 28.    1     0.0    0.0    0.0       vpsubd	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 29.    1     0.0    0.0    0.0       vpsubq	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 30.    1     0.0    0.0    0.0       vpsubw	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 31.    1     0.0    0.0    0.0       andnps	%xmm0, %xmm0
-# CHECK-NEXT: 32.    1     0.0    0.0    0.0       andnpd	%xmm1, %xmm1
-# CHECK-NEXT: 33.    1     0.0    0.0    0.0       vandnps	%xmm2, %xmm2, %xmm2
-# CHECK-NEXT: 34.    1     0.0    0.0    0.0       vandnpd	%xmm1, %xmm1, %xmm1
-# CHECK-NEXT: 35.    1     0.0    0.0    0.0       pandn	%mm2, %mm2
-# CHECK-NEXT: 36.    1     0.0    0.0    0.0       pandn	%xmm2, %xmm2
-# CHECK-NEXT: 37.    1     0.0    0.0    0.0       vpandn	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 38.    1     0.0    0.0    0.0       vandnps	%xmm2, %xmm2, %xmm5
-# CHECK-NEXT: 39.    1     0.0    0.0    0.0       vandnpd	%xmm1, %xmm1, %xmm5
-# CHECK-NEXT: 40.    1     0.0    0.0    0.0       vpandn	%xmm3, %xmm3, %xmm5
-# CHECK-NEXT: 41.    1     0.0    0.0    0.0       xorps	%xmm0, %xmm0
-# CHECK-NEXT: 42.    1     0.0    0.0    0.0       xorpd	%xmm1, %xmm1
-# CHECK-NEXT: 43.    1     0.0    0.0    0.0       vxorps	%xmm2, %xmm2, %xmm2
-# CHECK-NEXT: 44.    1     0.0    0.0    0.0       vxorpd	%xmm1, %xmm1, %xmm1
-# CHECK-NEXT: 45.    1     0.0    0.0    0.0       pxor	%mm2, %mm2
-# CHECK-NEXT: 46.    1     0.0    0.0    0.0       pxor	%xmm2, %xmm2
-# CHECK-NEXT: 47.    1     0.0    0.0    0.0       vpxor	%xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 48.    1     0.0    0.0    0.0       vxorps	%xmm4, %xmm4, %xmm5
-# CHECK-NEXT: 49.    1     0.0    0.0    0.0       vxorpd	%xmm1, %xmm1, %xmm3
-# CHECK-NEXT: 50.    1     0.0    0.0    0.0       vpxor	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 0.     1     1.0    1.0    0.0       sbbl	%eax, %eax
+# CHECK-NEXT: 1.     1     2.0    0.0    0.0       sbbq	%rax, %rax
+# CHECK-NEXT: 2.     1     2.0    0.0    0.0       subl	%eax, %eax
+# CHECK-NEXT: 3.     1     3.0    0.0    0.0       subq	%rax, %rax
+# CHECK-NEXT: 4.     1     3.0    0.0    0.0       xorl	%eax, %eax
+# CHECK-NEXT: 5.     1     4.0    0.0    0.0       xorq	%rax, %rax
+# CHECK-NEXT: 6.     1     0.0    0.0    4.0       pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: 7.     1     0.0    0.0    5.0       pcmpgtd	%mm2, %mm2
+# CHECK-NEXT: 8.     1     0.0    0.0    4.0       pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: 9.     1     0.0    0.0    5.0       pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT: 10.    1     0.0    0.0    4.0       pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: 11.    1     0.0    0.0    5.0       pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT: 12.    1     0.0    0.0    4.0       pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: 13.    1     0.0    0.0    5.0       vpcmpgtb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 14.    1     0.0    0.0    4.0       vpcmpgtd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 15.    1     0.0    0.0    5.0       vpcmpgtq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 16.    1     0.0    0.0    4.0       vpcmpgtw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 17.    1     0.0    0.0    5.0       vpcmpgtb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 18.    1     0.0    0.0    4.0       vpcmpgtd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 19.    1     0.0    0.0    5.0       vpcmpgtq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 20.    1     0.0    0.0    4.0       vpcmpgtw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 21.    1     0.0    0.0    5.0       psubb	%mm2, %mm2
+# CHECK-NEXT: 22.    1     0.0    0.0    4.0       psubd	%mm2, %mm2
+# CHECK-NEXT: 23.    1     0.0    0.0    5.0       psubq	%mm2, %mm2
+# CHECK-NEXT: 24.    1     0.0    0.0    4.0       psubw	%mm2, %mm2
+# CHECK-NEXT: 25.    1     0.0    0.0    5.0       psubb	%xmm2, %xmm2
+# CHECK-NEXT: 26.    1     0.0    0.0    4.0       psubd	%xmm2, %xmm2
+# CHECK-NEXT: 27.    1     0.0    0.0    5.0       psubq	%xmm2, %xmm2
+# CHECK-NEXT: 28.    1     0.0    0.0    4.0       psubw	%xmm2, %xmm2
+# CHECK-NEXT: 29.    1     0.0    0.0    5.0       vpsubb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 30.    1     0.0    0.0    4.0       vpsubd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 31.    1     0.0    0.0    5.0       vpsubq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 32.    1     0.0    0.0    4.0       vpsubw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 33.    1     0.0    0.0    5.0       vpsubb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 34.    1     0.0    0.0    4.0       vpsubd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 35.    1     0.0    0.0    5.0       vpsubq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 36.    1     0.0    0.0    4.0       vpsubw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 37.    1     0.0    0.0    5.0       andnps	%xmm0, %xmm0
+# CHECK-NEXT: 38.    1     0.0    0.0    4.0       andnpd	%xmm1, %xmm1
+# CHECK-NEXT: 39.    1     0.0    0.0    5.0       vandnps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: 40.    1     0.0    0.0    4.0       vandnpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: 41.    1     0.0    0.0    5.0       pandn	%mm2, %mm2
+# CHECK-NEXT: 42.    1     0.0    0.0    4.0       pandn	%xmm2, %xmm2
+# CHECK-NEXT: 43.    1     0.0    0.0    5.0       vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 44.    1     0.0    0.0    4.0       vandnps	%xmm2, %xmm2, %xmm5
+# CHECK-NEXT: 45.    1     0.0    0.0    5.0       vandnpd	%xmm1, %xmm1, %xmm5
+# CHECK-NEXT: 46.    1     0.0    0.0    4.0       vpandn	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 47.    1     0.0    0.0    5.0       xorps	%xmm0, %xmm0
+# CHECK-NEXT: 48.    1     0.0    0.0    4.0       xorpd	%xmm1, %xmm1
+# CHECK-NEXT: 49.    1     0.0    0.0    5.0       vxorps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: 50.    1     0.0    0.0    4.0       vxorpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: 51.    1     0.0    0.0    5.0       pxor	%mm2, %mm2
+# CHECK-NEXT: 52.    1     0.0    0.0    4.0       pxor	%xmm2, %xmm2
+# CHECK-NEXT: 53.    1     0.0    0.0    5.0       vpxor	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 54.    1     0.0    0.0    4.0       vxorps	%xmm4, %xmm4, %xmm5
+# CHECK-NEXT: 55.    1     0.0    0.0    5.0       vxorpd	%xmm1, %xmm1, %xmm3
+# CHECK-NEXT: 56.    1     0.0    0.0    4.0       vpxor	%xmm3, %xmm3, %xmm5




More information about the llvm-commits mailing list