[llvm] 8ea5792 - [MCA][X86] Add missing zero-idioms test file coverage

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 17 08:04:50 PST 2022


Author: Simon Pilgrim
Date: 2022-01-17T16:04:39Z
New Revision: 8ea579203da0e2b2f3e9e04ea4b63b20248c52f3

URL: https://github.com/llvm/llvm-project/commit/8ea579203da0e2b2f3e9e04ea4b63b20248c52f3
DIFF: https://github.com/llvm/llvm-project/commit/8ea579203da0e2b2f3e9e04ea4b63b20248c52f3.diff

LOG: [MCA][X86] Add missing zero-idioms test file coverage

atom/slm have no/limited zero-idioms handling but we should test all the common instructions anyhow

znver1/znver2 were just missing - I've copied the Haswell tests for consistent test coverage

Added: 
    llvm/test/tools/llvm-mca/X86/Atom/zero-idioms.s
    llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s
    llvm/test/tools/llvm-mca/X86/Znver1/zero-idioms.s
    llvm/test/tools/llvm-mca/X86/Znver2/zero-idioms.s

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/tools/llvm-mca/X86/Atom/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/Atom/zero-idioms.s
new file mode 100644
index 000000000000..905e1aeaca7e
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/X86/Atom/zero-idioms.s
@@ -0,0 +1,240 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=atom -timeline -register-file-stats -iterations=1 < %s | FileCheck %s
+
+subl  %eax, %eax
+subq  %rax, %rax
+xorl  %eax, %eax
+xorq  %rax, %rax
+
+pcmpgtb   %mm2, %mm2
+pcmpgtd   %mm2, %mm2
+# pcmpgtq   %mm2, %mm2 # invalid operand for instruction
+pcmpgtw   %mm2, %mm2
+
+pcmpgtb   %xmm2, %xmm2
+pcmpgtd   %xmm2, %xmm2
+pcmpgtq   %xmm2, %xmm2
+pcmpgtw   %xmm2, %xmm2
+
+psubb   %mm2, %mm2
+psubd   %mm2, %mm2
+psubq   %mm2, %mm2
+psubw   %mm2, %mm2
+psubb   %xmm2, %xmm2
+psubd   %xmm2, %xmm2
+psubq   %xmm2, %xmm2
+psubw   %xmm2, %xmm2
+
+psubsb   %mm2, %mm2
+psubsw   %mm2, %mm2
+psubsb   %xmm2, %xmm2
+psubsw   %xmm2, %xmm2
+
+psubusb   %mm2, %mm2
+psubusw   %mm2, %mm2
+psubusb   %xmm2, %xmm2
+psubusw   %xmm2, %xmm2
+
+andnps  %xmm0, %xmm0
+andnpd  %xmm1, %xmm1
+pandn   %mm2, %mm2
+pandn   %xmm2, %xmm2
+vpandn  %xmm3, %xmm3, %xmm3
+
+xorps  %xmm0, %xmm0
+xorpd  %xmm1, %xmm1
+pxor   %mm2, %mm2
+pxor   %xmm2, %xmm2
+
+# CHECK:      Iterations:        1
+# CHECK-NEXT: Instructions:      36
+# CHECK-NEXT: Total Cycles:      26
+# CHECK-NEXT: Total uOps:        36
+
+# CHECK:      Dispatch Width:    2
+# CHECK-NEXT: uOps Per Cycle:    1.38
+# CHECK-NEXT: IPC:               1.38
+# CHECK-NEXT: Block RThroughput: 19.0
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# 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      1     0.50                        pcmpgtb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtd	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubd	%mm2, %mm2
+# CHECK-NEXT:  1      2     1.00                        psubq	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubd	%xmm2, %xmm2
+# CHECK-NEXT:  1      2     1.00                        psubq	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubsb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubsw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubsb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubsw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubusb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubusw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubusb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubusw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        andnps	%xmm0, %xmm0
+# CHECK-NEXT:  1      1     0.50                        andnpd	%xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.50                        pandn	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        pandn	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.50                        xorps	%xmm0, %xmm0
+# CHECK-NEXT:  1      1     0.50                        xorpd	%xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.50                        pxor	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        pxor	%xmm2, %xmm2
+
+# CHECK:      Register File statistics:
+# CHECK-NEXT: Total number of mappings created:    40
+# CHECK-NEXT: Max number of mappings used:         3
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - AtomPort0
+# CHECK-NEXT: [1]   - AtomPort1
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]
+# CHECK-NEXT: 20.00  18.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    Instructions:
+# 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:  -     1.00   pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: 1.00    -     pcmpgtd	%mm2, %mm2
+# CHECK-NEXT:  -     1.00   pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: 1.00    -     pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT:  -     1.00   pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: 1.00    -     pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT:  -     1.00   pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: 1.00    -     psubb	%mm2, %mm2
+# CHECK-NEXT:  -     1.00   psubd	%mm2, %mm2
+# CHECK-NEXT: 2.00    -     psubq	%mm2, %mm2
+# CHECK-NEXT:  -     1.00   psubw	%mm2, %mm2
+# CHECK-NEXT: 1.00    -     psubb	%xmm2, %xmm2
+# CHECK-NEXT:  -     1.00   psubd	%xmm2, %xmm2
+# CHECK-NEXT: 2.00    -     psubq	%xmm2, %xmm2
+# CHECK-NEXT:  -     1.00   psubw	%xmm2, %xmm2
+# CHECK-NEXT: 1.00    -     psubsb	%mm2, %mm2
+# CHECK-NEXT:  -     1.00   psubsw	%mm2, %mm2
+# CHECK-NEXT: 1.00    -     psubsb	%xmm2, %xmm2
+# CHECK-NEXT:  -     1.00   psubsw	%xmm2, %xmm2
+# CHECK-NEXT: 1.00    -     psubusb	%mm2, %mm2
+# CHECK-NEXT:  -     1.00   psubusw	%mm2, %mm2
+# CHECK-NEXT: 1.00    -     psubusb	%xmm2, %xmm2
+# CHECK-NEXT:  -     1.00   psubusw	%xmm2, %xmm2
+# CHECK-NEXT: 1.00    -     andnps	%xmm0, %xmm0
+# CHECK-NEXT:  -     1.00   andnpd	%xmm1, %xmm1
+# CHECK-NEXT: 1.00    -     pandn	%mm2, %mm2
+# CHECK-NEXT:  -     1.00   pandn	%xmm2, %xmm2
+# CHECK-NEXT: 1.00    -     vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -     1.00   xorps	%xmm0, %xmm0
+# CHECK-NEXT: 1.00    -     xorpd	%xmm1, %xmm1
+# CHECK-NEXT:  -     1.00   pxor	%mm2, %mm2
+# CHECK-NEXT: 1.00    -     pxor	%xmm2, %xmm2
+
+# CHECK:      Timeline view:
+# CHECK-NEXT:                     0123456789
+# CHECK-NEXT: Index     0123456789          012345
+
+# CHECK:      [0,0]     DE   .    .    .    .    .   subl	%eax, %eax
+# CHECK-NEXT: [0,1]     .DE  .    .    .    .    .   subq	%rax, %rax
+# CHECK-NEXT: [0,2]     . DE .    .    .    .    .   xorl	%eax, %eax
+# CHECK-NEXT: [0,3]     .  DE.    .    .    .    .   xorq	%rax, %rax
+# CHECK-NEXT: [0,4]     .  DE.    .    .    .    .   pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: [0,5]     .   DE    .    .    .    .   pcmpgtd	%mm2, %mm2
+# CHECK-NEXT: [0,6]     .    DE   .    .    .    .   pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: [0,7]     .    DE   .    .    .    .   pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT: [0,8]     .    .DE  .    .    .    .   pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: [0,9]     .    . DE .    .    .    .   pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT: [0,10]    .    .  DE.    .    .    .   pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: [0,11]    .    .  DE.    .    .    .   psubb	%mm2, %mm2
+# CHECK-NEXT: [0,12]    .    .   DE    .    .    .   psubd	%mm2, %mm2
+# CHECK-NEXT: [0,13]    .    .    DeE  .    .    .   psubq	%mm2, %mm2
+# CHECK-NEXT: [0,14]    .    .    . DE .    .    .   psubw	%mm2, %mm2
+# CHECK-NEXT: [0,15]    .    .    . DE .    .    .   psubb	%xmm2, %xmm2
+# CHECK-NEXT: [0,16]    .    .    .  DE.    .    .   psubd	%xmm2, %xmm2
+# CHECK-NEXT: [0,17]    .    .    .   DeE   .    .   psubq	%xmm2, %xmm2
+# CHECK-NEXT: [0,18]    .    .    .    .DE  .    .   psubw	%xmm2, %xmm2
+# CHECK-NEXT: [0,19]    .    .    .    .DE  .    .   psubsb	%mm2, %mm2
+# CHECK-NEXT: [0,20]    .    .    .    . DE .    .   psubsw	%mm2, %mm2
+# CHECK-NEXT: [0,21]    .    .    .    . DE .    .   psubsb	%xmm2, %xmm2
+# CHECK-NEXT: [0,22]    .    .    .    .  DE.    .   psubsw	%xmm2, %xmm2
+# CHECK-NEXT: [0,23]    .    .    .    .  DE.    .   psubusb	%mm2, %mm2
+# CHECK-NEXT: [0,24]    .    .    .    .   DE    .   psubusw	%mm2, %mm2
+# CHECK-NEXT: [0,25]    .    .    .    .   DE    .   psubusb	%xmm2, %xmm2
+# CHECK-NEXT: [0,26]    .    .    .    .    DE   .   psubusw	%xmm2, %xmm2
+# CHECK-NEXT: [0,27]    .    .    .    .    DE   .   andnps	%xmm0, %xmm0
+# CHECK-NEXT: [0,28]    .    .    .    .    .DE  .   andnpd	%xmm1, %xmm1
+# CHECK-NEXT: [0,29]    .    .    .    .    .DE  .   pandn	%mm2, %mm2
+# CHECK-NEXT: [0,30]    .    .    .    .    . DE .   pandn	%xmm2, %xmm2
+# CHECK-NEXT: [0,31]    .    .    .    .    . DE .   vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,32]    .    .    .    .    .  DE.   xorps	%xmm0, %xmm0
+# CHECK-NEXT: [0,33]    .    .    .    .    .  DE.   xorpd	%xmm1, %xmm1
+# CHECK-NEXT: [0,34]    .    .    .    .    .   DE   pxor	%mm2, %mm2
+# CHECK-NEXT: [0,35]    .    .    .    .    .   DE   pxor	%xmm2, %xmm2
+
+# CHECK:      Average Wait times (based on the timeline view):
+# CHECK-NEXT: [0]: Executions
+# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
+# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
+# 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       subl	%eax, %eax
+# CHECK-NEXT: 1.     1     0.0    0.0    0.0       subq	%rax, %rax
+# CHECK-NEXT: 2.     1     0.0    0.0    0.0       xorl	%eax, %eax
+# CHECK-NEXT: 3.     1     0.0    0.0    0.0       xorq	%rax, %rax
+# CHECK-NEXT: 4.     1     0.0    0.0    0.0       pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: 5.     1     0.0    0.0    0.0       pcmpgtd	%mm2, %mm2
+# CHECK-NEXT: 6.     1     0.0    0.0    0.0       pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: 7.     1     0.0    0.0    0.0       pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT: 8.     1     0.0    0.0    0.0       pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: 9.     1     0.0    0.0    0.0       pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT: 10.    1     0.0    0.0    0.0       pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: 11.    1     0.0    0.0    0.0       psubb	%mm2, %mm2
+# CHECK-NEXT: 12.    1     0.0    0.0    0.0       psubd	%mm2, %mm2
+# CHECK-NEXT: 13.    1     0.0    0.0    0.0       psubq	%mm2, %mm2
+# CHECK-NEXT: 14.    1     0.0    0.0    0.0       psubw	%mm2, %mm2
+# CHECK-NEXT: 15.    1     0.0    0.0    0.0       psubb	%xmm2, %xmm2
+# CHECK-NEXT: 16.    1     0.0    0.0    0.0       psubd	%xmm2, %xmm2
+# CHECK-NEXT: 17.    1     0.0    0.0    0.0       psubq	%xmm2, %xmm2
+# CHECK-NEXT: 18.    1     0.0    0.0    0.0       psubw	%xmm2, %xmm2
+# CHECK-NEXT: 19.    1     0.0    0.0    0.0       psubsb	%mm2, %mm2
+# CHECK-NEXT: 20.    1     0.0    0.0    0.0       psubsw	%mm2, %mm2
+# CHECK-NEXT: 21.    1     0.0    0.0    0.0       psubsb	%xmm2, %xmm2
+# CHECK-NEXT: 22.    1     0.0    0.0    0.0       psubsw	%xmm2, %xmm2
+# CHECK-NEXT: 23.    1     0.0    0.0    0.0       psubusb	%mm2, %mm2
+# CHECK-NEXT: 24.    1     0.0    0.0    0.0       psubusw	%mm2, %mm2
+# CHECK-NEXT: 25.    1     0.0    0.0    0.0       psubusb	%xmm2, %xmm2
+# CHECK-NEXT: 26.    1     0.0    0.0    0.0       psubusw	%xmm2, %xmm2
+# CHECK-NEXT: 27.    1     0.0    0.0    0.0       andnps	%xmm0, %xmm0
+# CHECK-NEXT: 28.    1     0.0    0.0    0.0       andnpd	%xmm1, %xmm1
+# CHECK-NEXT: 29.    1     0.0    0.0    0.0       pandn	%mm2, %mm2
+# CHECK-NEXT: 30.    1     0.0    0.0    0.0       pandn	%xmm2, %xmm2
+# CHECK-NEXT: 31.    1     0.0    0.0    0.0       vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 32.    1     0.0    0.0    0.0       xorps	%xmm0, %xmm0
+# CHECK-NEXT: 33.    1     0.0    0.0    0.0       xorpd	%xmm1, %xmm1
+# CHECK-NEXT: 34.    1     0.0    0.0    0.0       pxor	%mm2, %mm2
+# CHECK-NEXT: 35.    1     0.0    0.0    0.0       pxor	%xmm2, %xmm2
+# CHECK-NEXT:        1     0.0    0.0    0.0       <total>

diff  --git a/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s
new file mode 100644
index 000000000000..945391125d8b
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s
@@ -0,0 +1,246 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=slm -timeline -register-file-stats -iterations=1 < %s | FileCheck %s
+
+subl  %eax, %eax
+subq  %rax, %rax
+xorl  %eax, %eax
+xorq  %rax, %rax
+
+pcmpgtb   %mm2, %mm2
+pcmpgtd   %mm2, %mm2
+# pcmpgtq   %mm2, %mm2 # invalid operand for instruction
+pcmpgtw   %mm2, %mm2
+
+pcmpgtb   %xmm2, %xmm2
+pcmpgtd   %xmm2, %xmm2
+pcmpgtq   %xmm2, %xmm2
+pcmpgtw   %xmm2, %xmm2
+
+psubb   %mm2, %mm2
+psubd   %mm2, %mm2
+psubq   %mm2, %mm2
+psubw   %mm2, %mm2
+psubb   %xmm2, %xmm2
+psubd   %xmm2, %xmm2
+psubq   %xmm2, %xmm2
+psubw   %xmm2, %xmm2
+
+psubsb   %mm2, %mm2
+psubsw   %mm2, %mm2
+psubsb   %xmm2, %xmm2
+psubsw   %xmm2, %xmm2
+
+psubusb   %mm2, %mm2
+psubusw   %mm2, %mm2
+psubusb   %xmm2, %xmm2
+psubusw   %xmm2, %xmm2
+
+andnps  %xmm0, %xmm0
+andnpd  %xmm1, %xmm1
+pandn   %mm2, %mm2
+pandn   %xmm2, %xmm2
+vpandn  %xmm3, %xmm3, %xmm3
+
+xorps  %xmm0, %xmm0
+xorpd  %xmm1, %xmm1
+pxor   %mm2, %mm2
+pxor   %xmm2, %xmm2
+
+# CHECK:      Iterations:        1
+# CHECK-NEXT: Instructions:      36
+# CHECK-NEXT: Total Cycles:      29
+# CHECK-NEXT: Total uOps:        38
+
+# CHECK:      Dispatch Width:    2
+# CHECK-NEXT: uOps Per Cycle:    1.31
+# CHECK-NEXT: IPC:               1.24
+# CHECK-NEXT: Block RThroughput: 23.0
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# 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      1     0.50                        pcmpgtb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtd	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubd	%mm2, %mm2
+# CHECK-NEXT:  2      4     4.00                        psubq	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubd	%xmm2, %xmm2
+# CHECK-NEXT:  2      4     4.00                        psubq	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubsb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubsw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubsb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubsw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubusb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubusw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        psubusb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        psubusw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        andnps	%xmm0, %xmm0
+# CHECK-NEXT:  1      1     0.50                        andnpd	%xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.50                        pandn	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        pandn	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.50                        xorps	%xmm0, %xmm0
+# CHECK-NEXT:  1      1     0.50                        xorpd	%xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.50                        pxor	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.50                        pxor	%xmm2, %xmm2
+
+# CHECK:      Register File statistics:
+# CHECK-NEXT: Total number of mappings created:    40
+# CHECK-NEXT: Max number of mappings used:         18
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - SLMDivider
+# CHECK-NEXT: [1]   - SLMFPDivider
+# CHECK-NEXT: [2]   - SLMFPMultiplier
+# CHECK-NEXT: [3]   - SLM_FPC_RSV0
+# CHECK-NEXT: [4]   - SLM_FPC_RSV1
+# CHECK-NEXT: [5]   - SLM_IEC_RSV0
+# CHECK-NEXT: [6]   - SLM_IEC_RSV1
+# CHECK-NEXT: [7]   - SLM_MEC_RSV
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]
+# CHECK-NEXT:  -      -      -     23.00  23.00  2.00   2.00    -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    Instructions:
+# 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:  -      -      -      -     1.00    -      -      -     pcmpgtb	%mm2, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pcmpgtd	%mm2, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pcmpgtw	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     psubb	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     psubd	%mm2, %mm2
+# CHECK-NEXT:  -      -      -     8.00    -      -      -      -     psubq	%mm2, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     psubw	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     psubb	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     psubd	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -     8.00    -      -      -     psubq	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     psubw	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     psubsb	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     psubsw	%mm2, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     psubsb	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     psubsw	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     psubusb	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     psubusw	%mm2, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     psubusb	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     psubusw	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     andnps	%xmm0, %xmm0
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     andnpd	%xmm1, %xmm1
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pandn	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     pandn	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     xorps	%xmm0, %xmm0
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     xorpd	%xmm1, %xmm1
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     pxor	%mm2, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pxor	%xmm2, %xmm2
+
+# CHECK:      Timeline view:
+# CHECK-NEXT:                     0123456789
+# CHECK-NEXT: Index     0123456789          012345678
+
+# CHECK:      [0,0]     DeER .    .    .    .    .  .   subl	%eax, %eax
+# CHECK-NEXT: [0,1]     D=eER.    .    .    .    .  .   subq	%rax, %rax
+# CHECK-NEXT: [0,2]     .D=eER    .    .    .    .  .   xorl	%eax, %eax
+# CHECK-NEXT: [0,3]     .D==eER   .    .    .    .  .   xorq	%rax, %rax
+# CHECK-NEXT: [0,4]     . DeE-R   .    .    .    .  .   pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: [0,5]     . D=eER   .    .    .    .  .   pcmpgtd	%mm2, %mm2
+# CHECK-NEXT: [0,6]     .  D=eER  .    .    .    .  .   pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: [0,7]     .  DeE-R  .    .    .    .  .   pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT: [0,8]     .   DeER  .    .    .    .  .   pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: [0,9]     .   D=eER .    .    .    .  .   pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT: [0,10]    .    D=eER.    .    .    .  .   pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: [0,11]    .    DeE-R.    .    .    .  .   psubb	%mm2, %mm2
+# CHECK-NEXT: [0,12]    .    .DeER.    .    .    .  .   psubd	%mm2, %mm2
+# CHECK-NEXT: [0,13]    .    . DeeeeER .    .    .  .   psubq	%mm2, %mm2
+# CHECK-NEXT: [0,14]    .    .  D=======eER .    .  .   psubw	%mm2, %mm2
+# CHECK-NEXT: [0,15]    .    .  DeE-------R .    .  .   psubb	%xmm2, %xmm2
+# CHECK-NEXT: [0,16]    .    .   DeE------R .    .  .   psubd	%xmm2, %xmm2
+# CHECK-NEXT: [0,17]    .    .    DeeeeE--R .    .  .   psubq	%xmm2, %xmm2
+# CHECK-NEXT: [0,18]    .    .    .D=====eER.    .  .   psubw	%xmm2, %xmm2
+# CHECK-NEXT: [0,19]    .    .    .D======eER    .  .   psubsb	%mm2, %mm2
+# CHECK-NEXT: [0,20]    .    .    . D======eER   .  .   psubsw	%mm2, %mm2
+# CHECK-NEXT: [0,21]    .    .    . D======eER   .  .   psubsb	%xmm2, %xmm2
+# CHECK-NEXT: [0,22]    .    .    .  D======eER  .  .   psubsw	%xmm2, %xmm2
+# CHECK-NEXT: [0,23]    .    .    .  D======eER  .  .   psubusb	%mm2, %mm2
+# CHECK-NEXT: [0,24]    .    .    .   D======eER .  .   psubusw	%mm2, %mm2
+# CHECK-NEXT: [0,25]    .    .    .   D======eER .  .   psubusb	%xmm2, %xmm2
+# CHECK-NEXT: [0,26]    .    .    .    D======eER.  .   psubusw	%xmm2, %xmm2
+# CHECK-NEXT: [0,27]    .    .    .    D======eER.  .   andnps	%xmm0, %xmm0
+# CHECK-NEXT: [0,28]    .    .    .    .D======eER  .   andnpd	%xmm1, %xmm1
+# CHECK-NEXT: [0,29]    .    .    .    .D======eER  .   pandn	%mm2, %mm2
+# CHECK-NEXT: [0,30]    .    .    .    . D======eER .   pandn	%xmm2, %xmm2
+# CHECK-NEXT: [0,31]    .    .    .    . D======eER .   vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,32]    .    .    .    .  D======eER.   xorps	%xmm0, %xmm0
+# CHECK-NEXT: [0,33]    .    .    .    .  D======eER.   xorpd	%xmm1, %xmm1
+# CHECK-NEXT: [0,34]    .    .    .    .   D======eER   pxor	%mm2, %mm2
+# CHECK-NEXT: [0,35]    .    .    .    .   D======eER   pxor	%xmm2, %xmm2
+
+# CHECK:      Average Wait times (based on the timeline view):
+# CHECK-NEXT: [0]: Executions
+# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
+# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
+# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
+
+# CHECK:            [0]    [1]    [2]    [3]
+# CHECK-NEXT: 0.     1     1.0    1.0    0.0       subl	%eax, %eax
+# CHECK-NEXT: 1.     1     2.0    0.0    0.0       subq	%rax, %rax
+# CHECK-NEXT: 2.     1     2.0    0.0    0.0       xorl	%eax, %eax
+# CHECK-NEXT: 3.     1     3.0    0.0    0.0       xorq	%rax, %rax
+# CHECK-NEXT: 4.     1     1.0    1.0    1.0       pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: 5.     1     2.0    0.0    0.0       pcmpgtd	%mm2, %mm2
+# CHECK-NEXT: 6.     1     2.0    0.0    0.0       pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: 7.     1     1.0    1.0    1.0       pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT: 8.     1     1.0    0.0    0.0       pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: 9.     1     2.0    0.0    0.0       pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT: 10.    1     2.0    0.0    0.0       pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: 11.    1     1.0    0.0    1.0       psubb	%mm2, %mm2
+# CHECK-NEXT: 12.    1     1.0    0.0    0.0       psubd	%mm2, %mm2
+# CHECK-NEXT: 13.    1     1.0    0.0    0.0       psubq	%mm2, %mm2
+# CHECK-NEXT: 14.    1     8.0    4.0    0.0       psubw	%mm2, %mm2
+# CHECK-NEXT: 15.    1     1.0    1.0    7.0       psubb	%xmm2, %xmm2
+# CHECK-NEXT: 16.    1     1.0    0.0    6.0       psubd	%xmm2, %xmm2
+# CHECK-NEXT: 17.    1     1.0    0.0    2.0       psubq	%xmm2, %xmm2
+# CHECK-NEXT: 18.    1     6.0    2.0    0.0       psubw	%xmm2, %xmm2
+# CHECK-NEXT: 19.    1     7.0    1.0    0.0       psubsb	%mm2, %mm2
+# CHECK-NEXT: 20.    1     7.0    0.0    0.0       psubsw	%mm2, %mm2
+# CHECK-NEXT: 21.    1     7.0    1.0    0.0       psubsb	%xmm2, %xmm2
+# CHECK-NEXT: 22.    1     7.0    0.0    0.0       psubsw	%xmm2, %xmm2
+# CHECK-NEXT: 23.    1     7.0    0.0    0.0       psubusb	%mm2, %mm2
+# CHECK-NEXT: 24.    1     7.0    0.0    0.0       psubusw	%mm2, %mm2
+# CHECK-NEXT: 25.    1     7.0    0.0    0.0       psubusb	%xmm2, %xmm2
+# CHECK-NEXT: 26.    1     7.0    0.0    0.0       psubusw	%xmm2, %xmm2
+# CHECK-NEXT: 27.    1     7.0    7.0    0.0       andnps	%xmm0, %xmm0
+# CHECK-NEXT: 28.    1     7.0    7.0    0.0       andnpd	%xmm1, %xmm1
+# CHECK-NEXT: 29.    1     7.0    1.0    0.0       pandn	%mm2, %mm2
+# CHECK-NEXT: 30.    1     7.0    1.0    0.0       pandn	%xmm2, %xmm2
+# CHECK-NEXT: 31.    1     7.0    7.0    0.0       vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 32.    1     7.0    2.0    0.0       xorps	%xmm0, %xmm0
+# CHECK-NEXT: 33.    1     7.0    1.0    0.0       xorpd	%xmm1, %xmm1
+# CHECK-NEXT: 34.    1     7.0    2.0    0.0       pxor	%mm2, %mm2
+# CHECK-NEXT: 35.    1     7.0    1.0    0.0       pxor	%xmm2, %xmm2
+# CHECK-NEXT:        1     4.4    1.1    0.5       <total>

diff  --git a/llvm/test/tools/llvm-mca/X86/Znver1/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/Znver1/zero-idioms.s
new file mode 100644
index 000000000000..6fb23bd3377f
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/X86/Znver1/zero-idioms.s
@@ -0,0 +1,500 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver1 -timeline -register-file-stats -iterations=1 < %s | FileCheck %s
+
+subl  %eax, %eax
+subq  %rax, %rax
+xorl  %eax, %eax
+xorq  %rax, %rax
+
+pcmpgtb   %mm2, %mm2
+pcmpgtd   %mm2, %mm2
+# pcmpgtq   %mm2, %mm2 # invalid operand for instruction
+pcmpgtw   %mm2, %mm2
+
+pcmpgtb   %xmm2, %xmm2
+pcmpgtd   %xmm2, %xmm2
+pcmpgtq   %xmm2, %xmm2
+pcmpgtw   %xmm2, %xmm2
+
+vpcmpgtb  %xmm3, %xmm3, %xmm3
+vpcmpgtd  %xmm3, %xmm3, %xmm3
+vpcmpgtq  %xmm3, %xmm3, %xmm3
+vpcmpgtw  %xmm3, %xmm3, %xmm3
+
+vpcmpgtb  %xmm3, %xmm3, %xmm5
+vpcmpgtd  %xmm3, %xmm3, %xmm5
+vpcmpgtq  %xmm3, %xmm3, %xmm5
+vpcmpgtw  %xmm3, %xmm3, %xmm5
+
+vpcmpgtb  %ymm3, %ymm3, %ymm3
+vpcmpgtd  %ymm3, %ymm3, %ymm3
+vpcmpgtq  %ymm3, %ymm3, %ymm3
+vpcmpgtw  %ymm3, %ymm3, %ymm3
+
+vpcmpgtb  %ymm3, %ymm3, %ymm5
+vpcmpgtd  %ymm3, %ymm3, %ymm5
+vpcmpgtq  %ymm3, %ymm3, %ymm5
+vpcmpgtw  %ymm3, %ymm3, %ymm5
+
+psubb   %mm2, %mm2
+psubd   %mm2, %mm2
+psubq   %mm2, %mm2
+psubw   %mm2, %mm2
+psubb   %xmm2, %xmm2
+psubd   %xmm2, %xmm2
+psubq   %xmm2, %xmm2
+psubw   %xmm2, %xmm2
+vpsubb  %xmm3, %xmm3, %xmm3
+vpsubd  %xmm3, %xmm3, %xmm3
+vpsubq  %xmm3, %xmm3, %xmm3
+vpsubw  %xmm3, %xmm3, %xmm3
+vpsubb  %ymm3, %ymm3, %ymm3
+vpsubd  %ymm3, %ymm3, %ymm3
+vpsubq  %ymm3, %ymm3, %ymm3
+vpsubw  %ymm3, %ymm3, %ymm3
+
+vpsubb  %xmm3, %xmm3, %xmm5
+vpsubd  %xmm3, %xmm3, %xmm5
+vpsubq  %xmm3, %xmm3, %xmm5
+vpsubw  %xmm3, %xmm3, %xmm5
+vpsubb  %ymm3, %ymm3, %ymm5
+vpsubd  %ymm3, %ymm3, %ymm5
+vpsubq  %ymm3, %ymm3, %ymm5
+vpsubw  %ymm3, %ymm3, %ymm5
+
+andnps  %xmm0, %xmm0
+andnpd  %xmm1, %xmm1
+vandnps %xmm2, %xmm2, %xmm2
+vandnpd %xmm1, %xmm1, %xmm1
+vandnps %ymm2, %ymm2, %ymm2
+vandnpd %ymm1, %ymm1, %ymm1
+pandn   %mm2, %mm2
+pandn   %xmm2, %xmm2
+vpandn  %xmm3, %xmm3, %xmm3
+vpandn  %ymm3, %ymm3, %ymm3
+
+vandnps %xmm2, %xmm2, %xmm5
+vandnpd %xmm1, %xmm1, %xmm5
+vpandn  %xmm3, %xmm3, %xmm5
+vandnps %ymm2, %ymm2, %ymm5
+vandnpd %ymm1, %ymm1, %ymm5
+vpandn  %ymm3, %ymm3, %ymm5
+
+xorps  %xmm0, %xmm0
+xorpd  %xmm1, %xmm1
+vxorps %xmm2, %xmm2, %xmm2
+vxorpd %xmm1, %xmm1, %xmm1
+vxorps %ymm2, %ymm2, %ymm2
+vxorpd %ymm1, %ymm1, %ymm1
+pxor   %mm2, %mm2
+pxor   %xmm2, %xmm2
+vpxor  %xmm3, %xmm3, %xmm3
+vpxor  %ymm3, %ymm3, %ymm3
+
+vxorps %xmm4, %xmm4, %xmm5
+vxorpd %xmm1, %xmm1, %xmm3
+vxorps %ymm4, %ymm4, %ymm5
+vxorpd %ymm1, %ymm1, %ymm3
+vpxor  %xmm3, %xmm3, %xmm5
+vpxor  %ymm3, %ymm3, %ymm5
+
+# CHECK:      Iterations:        1
+# CHECK-NEXT: Instructions:      83
+# CHECK-NEXT: Total Cycles:      29
+# CHECK-NEXT: Total uOps:        83
+
+# CHECK:      Dispatch Width:    4
+# CHECK-NEXT: uOps Per Cycle:    2.86
+# CHECK-NEXT: IPC:               2.86
+# CHECK-NEXT: Block RThroughput: 20.8
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      1     0.25                        subl	%eax, %eax
+# CHECK-NEXT:  1      1     0.25                        subq	%rax, %rax
+# CHECK-NEXT:  1      1     0.25                        xorl	%eax, %eax
+# CHECK-NEXT:  1      1     0.25                        xorq	%rax, %rax
+# CHECK-NEXT:  1      1     0.25                        pcmpgtb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        pcmpgtd	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        pcmpgtw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.50                        vpcmpgtq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.50                        vpcmpgtq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.50                        vpcmpgtq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.50                        vpcmpgtq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        psubb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        psubd	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        psubq	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        psubw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        psubb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        psubd	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        psubq	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        psubw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vpsubb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpsubd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpsubq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpsubw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpsubb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpsubd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpsubq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpsubw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpsubb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpsubd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpsubq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpsubw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpsubb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpsubd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpsubq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpsubw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        andnps	%xmm0, %xmm0
+# CHECK-NEXT:  1      1     0.25                        andnpd	%xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.25                        vandnps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vandnpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.25                        vandnps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT:  1      1     0.25                        vandnpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT:  1      1     0.25                        pandn	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        pandn	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpandn	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vandnps	%xmm2, %xmm2, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vandnpd	%xmm1, %xmm1, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpandn	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vandnps	%ymm2, %ymm2, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vandnpd	%ymm1, %ymm1, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpandn	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        xorps	%xmm0, %xmm0
+# CHECK-NEXT:  1      1     0.25                        xorpd	%xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.25                        vxorps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vxorpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.25                        vxorps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT:  1      1     0.25                        vxorpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT:  1      1     0.25                        pxor	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        pxor	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vpxor	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpxor	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vxorps	%xmm4, %xmm4, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vxorpd	%xmm1, %xmm1, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vxorps	%ymm4, %ymm4, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vxorpd	%ymm1, %ymm1, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpxor	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpxor	%ymm3, %ymm3, %ymm5
+
+# CHECK:      Register File statistics:
+# CHECK-NEXT: Total number of mappings created:    115
+# CHECK-NEXT: Max number of mappings used:         58
+
+# CHECK:      *  Register File #1 -- ZnFpuPRF:
+# CHECK-NEXT:    Number of physical registers:     160
+# CHECK-NEXT:    Total number of mappings created: 107
+# CHECK-NEXT:    Max number of mappings used:      58
+
+# CHECK:      *  Register File #2 -- ZnIntegerPRF:
+# CHECK-NEXT:    Number of physical registers:     168
+# CHECK-NEXT:    Total number of mappings created: 8
+# CHECK-NEXT:    Max number of mappings used:      8
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - ZnAGU0
+# CHECK-NEXT: [1]   - ZnAGU1
+# CHECK-NEXT: [2]   - ZnALU0
+# CHECK-NEXT: [3]   - ZnALU1
+# CHECK-NEXT: [4]   - ZnALU2
+# CHECK-NEXT: [5]   - ZnALU3
+# CHECK-NEXT: [6]   - ZnDivider
+# CHECK-NEXT: [7]   - ZnFPU0
+# CHECK-NEXT: [8]   - ZnFPU1
+# CHECK-NEXT: [9]   - ZnFPU2
+# CHECK-NEXT: [10]  - ZnFPU3
+# CHECK-NEXT: [11]  - ZnMultiplier
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
+# CHECK-NEXT:  -      -     1.00   1.00   1.00   1.00    -     20.00  19.00  20.00  20.00   -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
+# 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:  -      -      -      -      -      -      -      -      -      -     1.00    -     pcmpgtb	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     pcmpgtd	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     pcmpgtw	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vpcmpgtb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vpcmpgtd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpgtq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpcmpgtw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vpcmpgtb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vpcmpgtd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpgtq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vpcmpgtw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpcmpgtb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vpcmpgtd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vpcmpgtq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpgtw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vpcmpgtb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpgtd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vpcmpgtq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpcmpgtw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     psubb	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     psubd	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     psubq	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     psubw	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     psubb	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     psubd	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     psubq	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     psubw	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpsubb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpsubq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vpsubw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vpsubb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vpsubd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpsubq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vpsubw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vpsubd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpsubq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vpsubw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     andnps	%xmm0, %xmm0
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     andnpd	%xmm1, %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vandnps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vandnpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vandnps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vandnpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     pandn	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     pandn	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpandn	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vandnps	%xmm2, %xmm2, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vandnpd	%xmm1, %xmm1, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpandn	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vandnps	%ymm2, %ymm2, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vandnpd	%ymm1, %ymm1, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vpandn	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     xorps	%xmm0, %xmm0
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     xorpd	%xmm1, %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vxorps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vxorpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vxorps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vxorpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     pxor	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     pxor	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpxor	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -     vpxor	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vxorps	%xmm4, %xmm4, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vxorpd	%xmm1, %xmm1, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     vxorps	%ymm4, %ymm4, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vxorpd	%ymm1, %ymm1, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -     vpxor	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpxor	%ymm3, %ymm3, %ymm5
+
+# CHECK:      Timeline view:
+# CHECK-NEXT:                     0123456789
+# CHECK-NEXT: Index     0123456789          012345678
+
+# CHECK:      [0,0]     DeER .    .    .    .    .  .   subl	%eax, %eax
+# CHECK-NEXT: [0,1]     D=eER.    .    .    .    .  .   subq	%rax, %rax
+# CHECK-NEXT: [0,2]     D==eER    .    .    .    .  .   xorl	%eax, %eax
+# CHECK-NEXT: [0,3]     D===eER   .    .    .    .  .   xorq	%rax, %rax
+# CHECK-NEXT: [0,4]     .DeE--R   .    .    .    .  .   pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: [0,5]     .D=eE-R   .    .    .    .  .   pcmpgtd	%mm2, %mm2
+# CHECK-NEXT: [0,6]     .D==eER   .    .    .    .  .   pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: [0,7]     .DeE--R   .    .    .    .  .   pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT: [0,8]     . DeE-R   .    .    .    .  .   pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: [0,9]     . D=eER   .    .    .    .  .   pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT: [0,10]    . D==eER  .    .    .    .  .   pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: [0,11]    . DeE--R  .    .    .    .  .   vpcmpgtb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,12]    .  DeE-R  .    .    .    .  .   vpcmpgtd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,13]    .  D=eER  .    .    .    .  .   vpcmpgtq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,14]    .  D==eER .    .    .    .  .   vpcmpgtw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,15]    .  D===eER.    .    .    .  .   vpcmpgtb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,16]    .   D==eER.    .    .    .  .   vpcmpgtd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,17]    .   D==eER.    .    .    .  .   vpcmpgtq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,18]    .   D===eER    .    .    .  .   vpcmpgtw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,19]    .   D==eE-R    .    .    .  .   vpcmpgtb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,20]    .    D==eER    .    .    .  .   vpcmpgtd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,21]    .    D===eER   .    .    .  .   vpcmpgtq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,22]    .    D====eER  .    .    .  .   vpcmpgtw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,23]    .    D=====eER .    .    .  .   vpcmpgtb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,24]    .    .D====eER .    .    .  .   vpcmpgtd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,25]    .    .D====eER .    .    .  .   vpcmpgtq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,26]    .    .D====eER .    .    .  .   vpcmpgtw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,27]    .    .D=eE---R .    .    .  .   psubb	%mm2, %mm2
+# CHECK-NEXT: [0,28]    .    . D=eE--R .    .    .  .   psubd	%mm2, %mm2
+# CHECK-NEXT: [0,29]    .    . D==eE-R .    .    .  .   psubq	%mm2, %mm2
+# CHECK-NEXT: [0,30]    .    . D====eER.    .    .  .   psubw	%mm2, %mm2
+# CHECK-NEXT: [0,31]    .    . DeE----R.    .    .  .   psubb	%xmm2, %xmm2
+# CHECK-NEXT: [0,32]    .    .  DeE---R.    .    .  .   psubd	%xmm2, %xmm2
+# CHECK-NEXT: [0,33]    .    .  D=eE--R.    .    .  .   psubq	%xmm2, %xmm2
+# CHECK-NEXT: [0,34]    .    .  D===eER.    .    .  .   psubw	%xmm2, %xmm2
+# CHECK-NEXT: [0,35]    .    .  D===eER.    .    .  .   vpsubb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,36]    .    .   D===eER    .    .  .   vpsubd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,37]    .    .   D====eER   .    .  .   vpsubq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,38]    .    .   D=====eER  .    .  .   vpsubw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,39]    .    .   D======eER .    .  .   vpsubb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,40]    .    .    D======eER.    .  .   vpsubd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,41]    .    .    D=======eER    .  .   vpsubq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,42]    .    .    D========eER   .  .   vpsubw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,43]    .    .    D=========eER  .  .   vpsubb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,44]    .    .    .D========eER  .  .   vpsubd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,45]    .    .    .D========eER  .  .   vpsubq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,46]    .    .    .D========eER  .  .   vpsubw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,47]    .    .    .D=========eER .  .   vpsubb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,48]    .    .    . D========eER .  .   vpsubd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,49]    .    .    . D========eER .  .   vpsubq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,50]    .    .    . D========eER .  .   vpsubw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,51]    .    .    . DeE--------R .  .   andnps	%xmm0, %xmm0
+# CHECK-NEXT: [0,52]    .    .    .  DeE-------R .  .   andnpd	%xmm1, %xmm1
+# CHECK-NEXT: [0,53]    .    .    .  DeE-------R .  .   vandnps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: [0,54]    .    .    .  D=eE------R .  .   vandnpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: [0,55]    .    .    .  D=eE-------R.  .   vandnps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT: [0,56]    .    .    .   D=eE------R.  .   vandnpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT: [0,57]    .    .    .   DeE-------R.  .   pandn	%mm2, %mm2
+# CHECK-NEXT: [0,58]    .    .    .   D=eE------R.  .   pandn	%xmm2, %xmm2
+# CHECK-NEXT: [0,59]    .    .    .   D=======eER.  .   vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,60]    .    .    .    D=======eER  .   vpandn	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,61]    .    .    .    D=eE------R  .   vandnps	%xmm2, %xmm2, %xmm5
+# CHECK-NEXT: [0,62]    .    .    .    D=eE------R  .   vandnpd	%xmm1, %xmm1, %xmm5
+# CHECK-NEXT: [0,63]    .    .    .    D========eER .   vpandn	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,64]    .    .    .    .DeE-------R .   vandnps	%ymm2, %ymm2, %ymm5
+# CHECK-NEXT: [0,65]    .    .    .    .D=eE------R .   vandnpd	%ymm1, %ymm1, %ymm5
+# CHECK-NEXT: [0,66]    .    .    .    .D=======eER .   vpandn	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,67]    .    .    .    .D=eE------R .   xorps	%xmm0, %xmm0
+# CHECK-NEXT: [0,68]    .    .    .    . DeE------R .   xorpd	%xmm1, %xmm1
+# CHECK-NEXT: [0,69]    .    .    .    . D=eE-----R .   vxorps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: [0,70]    .    .    .    . D=eE-----R .   vxorpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: [0,71]    .    .    .    . D====eE---R.   vxorps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT: [0,72]    .    .    .    .  D===eE---R.   vxorpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT: [0,73]    .    .    .    .  DeE------R.   pxor	%mm2, %mm2
+# CHECK-NEXT: [0,74]    .    .    .    .  D====eE--R.   pxor	%xmm2, %xmm2
+# CHECK-NEXT: [0,75]    .    .    .    .  D=====eE-R.   vpxor	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,76]    .    .    .    .   D=====eER.   vpxor	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,77]    .    .    .    .   D==eE---R.   vxorps	%xmm4, %xmm4, %xmm5
+# CHECK-NEXT: [0,78]    .    .    .    .   D===eE--R.   vxorpd	%xmm1, %xmm1, %xmm3
+# CHECK-NEXT: [0,79]    .    .    .    .   D====eE--R   vxorps	%ymm4, %ymm4, %ymm5
+# CHECK-NEXT: [0,80]    .    .    .    .    D==eE---R   vxorpd	%ymm1, %ymm1, %ymm3
+# CHECK-NEXT: [0,81]    .    .    .    .    D====eE-R   vpxor	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,82]    .    .    .    .    D====eE-R   vpxor	%ymm3, %ymm3, %ymm5
+
+# CHECK:      Average Wait times (based on the timeline view):
+# CHECK-NEXT: [0]: Executions
+# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
+# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
+# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
+
+# CHECK:            [0]    [1]    [2]    [3]
+# CHECK-NEXT: 0.     1     1.0    1.0    0.0       subl	%eax, %eax
+# CHECK-NEXT: 1.     1     2.0    0.0    0.0       subq	%rax, %rax
+# CHECK-NEXT: 2.     1     3.0    0.0    0.0       xorl	%eax, %eax
+# CHECK-NEXT: 3.     1     4.0    0.0    0.0       xorq	%rax, %rax
+# CHECK-NEXT: 4.     1     1.0    1.0    2.0       pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: 5.     1     2.0    0.0    1.0       pcmpgtd	%mm2, %mm2
+# CHECK-NEXT: 6.     1     3.0    0.0    0.0       pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: 7.     1     1.0    1.0    2.0       pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT: 8.     1     1.0    0.0    1.0       pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: 9.     1     2.0    0.0    0.0       pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT: 10.    1     3.0    0.0    0.0       pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: 11.    1     1.0    1.0    2.0       vpcmpgtb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 12.    1     1.0    0.0    1.0       vpcmpgtd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 13.    1     2.0    0.0    0.0       vpcmpgtq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 14.    1     3.0    0.0    0.0       vpcmpgtw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 15.    1     4.0    0.0    0.0       vpcmpgtb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 16.    1     3.0    0.0    0.0       vpcmpgtd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 17.    1     3.0    0.0    0.0       vpcmpgtq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 18.    1     4.0    1.0    0.0       vpcmpgtw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 19.    1     3.0    0.0    1.0       vpcmpgtb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 20.    1     3.0    0.0    0.0       vpcmpgtd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 21.    1     4.0    0.0    0.0       vpcmpgtq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 22.    1     5.0    0.0    0.0       vpcmpgtw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 23.    1     6.0    0.0    0.0       vpcmpgtb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 24.    1     5.0    0.0    0.0       vpcmpgtd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 25.    1     5.0    0.0    0.0       vpcmpgtq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 26.    1     5.0    0.0    0.0       vpcmpgtw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 27.    1     2.0    2.0    3.0       psubb	%mm2, %mm2
+# CHECK-NEXT: 28.    1     2.0    0.0    2.0       psubd	%mm2, %mm2
+# CHECK-NEXT: 29.    1     3.0    0.0    1.0       psubq	%mm2, %mm2
+# CHECK-NEXT: 30.    1     5.0    1.0    0.0       psubw	%mm2, %mm2
+# CHECK-NEXT: 31.    1     1.0    1.0    4.0       psubb	%xmm2, %xmm2
+# CHECK-NEXT: 32.    1     1.0    0.0    3.0       psubd	%xmm2, %xmm2
+# CHECK-NEXT: 33.    1     2.0    0.0    2.0       psubq	%xmm2, %xmm2
+# CHECK-NEXT: 34.    1     4.0    1.0    0.0       psubw	%xmm2, %xmm2
+# CHECK-NEXT: 35.    1     4.0    1.0    0.0       vpsubb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 36.    1     4.0    0.0    0.0       vpsubd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 37.    1     5.0    0.0    0.0       vpsubq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 38.    1     6.0    0.0    0.0       vpsubw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 39.    1     7.0    0.0    0.0       vpsubb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 40.    1     7.0    0.0    0.0       vpsubd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 41.    1     8.0    0.0    0.0       vpsubq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 42.    1     9.0    0.0    0.0       vpsubw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 43.    1     10.0   0.0    0.0       vpsubb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 44.    1     9.0    0.0    0.0       vpsubd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 45.    1     9.0    0.0    0.0       vpsubq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 46.    1     9.0    0.0    0.0       vpsubw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 47.    1     10.0   1.0    0.0       vpsubb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 48.    1     9.0    1.0    0.0       vpsubd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 49.    1     9.0    1.0    0.0       vpsubq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 50.    1     9.0    1.0    0.0       vpsubw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 51.    1     1.0    1.0    8.0       andnps	%xmm0, %xmm0
+# CHECK-NEXT: 52.    1     1.0    1.0    7.0       andnpd	%xmm1, %xmm1
+# CHECK-NEXT: 53.    1     1.0    1.0    7.0       vandnps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: 54.    1     2.0    0.0    6.0       vandnpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: 55.    1     2.0    0.0    7.0       vandnps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT: 56.    1     2.0    0.0    6.0       vandnpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT: 57.    1     1.0    1.0    7.0       pandn	%mm2, %mm2
+# CHECK-NEXT: 58.    1     2.0    0.0    6.0       pandn	%xmm2, %xmm2
+# CHECK-NEXT: 59.    1     8.0    2.0    0.0       vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 60.    1     8.0    0.0    0.0       vpandn	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 61.    1     2.0    0.0    6.0       vandnps	%xmm2, %xmm2, %xmm5
+# CHECK-NEXT: 62.    1     2.0    0.0    6.0       vandnpd	%xmm1, %xmm1, %xmm5
+# CHECK-NEXT: 63.    1     9.0    0.0    0.0       vpandn	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 64.    1     1.0    0.0    7.0       vandnps	%ymm2, %ymm2, %ymm5
+# CHECK-NEXT: 65.    1     2.0    1.0    6.0       vandnpd	%ymm1, %ymm1, %ymm5
+# CHECK-NEXT: 66.    1     8.0    0.0    0.0       vpandn	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 67.    1     2.0    2.0    6.0       xorps	%xmm0, %xmm0
+# CHECK-NEXT: 68.    1     1.0    1.0    6.0       xorpd	%xmm1, %xmm1
+# CHECK-NEXT: 69.    1     2.0    2.0    5.0       vxorps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: 70.    1     2.0    0.0    5.0       vxorpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: 71.    1     5.0    2.0    3.0       vxorps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT: 72.    1     4.0    2.0    3.0       vxorpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT: 73.    1     1.0    1.0    6.0       pxor	%mm2, %mm2
+# CHECK-NEXT: 74.    1     5.0    0.0    2.0       pxor	%xmm2, %xmm2
+# CHECK-NEXT: 75.    1     6.0    0.0    1.0       vpxor	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 76.    1     6.0    0.0    0.0       vpxor	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 77.    1     3.0    3.0    3.0       vxorps	%xmm4, %xmm4, %xmm5
+# CHECK-NEXT: 78.    1     4.0    0.0    2.0       vxorpd	%xmm1, %xmm1, %xmm3
+# CHECK-NEXT: 79.    1     5.0    5.0    2.0       vxorps	%ymm4, %ymm4, %ymm5
+# CHECK-NEXT: 80.    1     3.0    0.0    3.0       vxorpd	%ymm1, %ymm1, %ymm3
+# CHECK-NEXT: 81.    1     5.0    1.0    1.0       vpxor	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 82.    1     5.0    1.0    1.0       vpxor	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:        1     4.0    0.5    1.8       <total>

diff  --git a/llvm/test/tools/llvm-mca/X86/Znver2/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/Znver2/zero-idioms.s
new file mode 100644
index 000000000000..eaba39249a37
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/X86/Znver2/zero-idioms.s
@@ -0,0 +1,501 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver2 -timeline -register-file-stats -iterations=1 < %s | FileCheck %s
+
+subl  %eax, %eax
+subq  %rax, %rax
+xorl  %eax, %eax
+xorq  %rax, %rax
+
+pcmpgtb   %mm2, %mm2
+pcmpgtd   %mm2, %mm2
+# pcmpgtq   %mm2, %mm2 # invalid operand for instruction
+pcmpgtw   %mm2, %mm2
+
+pcmpgtb   %xmm2, %xmm2
+pcmpgtd   %xmm2, %xmm2
+pcmpgtq   %xmm2, %xmm2
+pcmpgtw   %xmm2, %xmm2
+
+vpcmpgtb  %xmm3, %xmm3, %xmm3
+vpcmpgtd  %xmm3, %xmm3, %xmm3
+vpcmpgtq  %xmm3, %xmm3, %xmm3
+vpcmpgtw  %xmm3, %xmm3, %xmm3
+
+vpcmpgtb  %xmm3, %xmm3, %xmm5
+vpcmpgtd  %xmm3, %xmm3, %xmm5
+vpcmpgtq  %xmm3, %xmm3, %xmm5
+vpcmpgtw  %xmm3, %xmm3, %xmm5
+
+vpcmpgtb  %ymm3, %ymm3, %ymm3
+vpcmpgtd  %ymm3, %ymm3, %ymm3
+vpcmpgtq  %ymm3, %ymm3, %ymm3
+vpcmpgtw  %ymm3, %ymm3, %ymm3
+
+vpcmpgtb  %ymm3, %ymm3, %ymm5
+vpcmpgtd  %ymm3, %ymm3, %ymm5
+vpcmpgtq  %ymm3, %ymm3, %ymm5
+vpcmpgtw  %ymm3, %ymm3, %ymm5
+
+psubb   %mm2, %mm2
+psubd   %mm2, %mm2
+psubq   %mm2, %mm2
+psubw   %mm2, %mm2
+psubb   %xmm2, %xmm2
+psubd   %xmm2, %xmm2
+psubq   %xmm2, %xmm2
+psubw   %xmm2, %xmm2
+vpsubb  %xmm3, %xmm3, %xmm3
+vpsubd  %xmm3, %xmm3, %xmm3
+vpsubq  %xmm3, %xmm3, %xmm3
+vpsubw  %xmm3, %xmm3, %xmm3
+vpsubb  %ymm3, %ymm3, %ymm3
+vpsubd  %ymm3, %ymm3, %ymm3
+vpsubq  %ymm3, %ymm3, %ymm3
+vpsubw  %ymm3, %ymm3, %ymm3
+
+vpsubb  %xmm3, %xmm3, %xmm5
+vpsubd  %xmm3, %xmm3, %xmm5
+vpsubq  %xmm3, %xmm3, %xmm5
+vpsubw  %xmm3, %xmm3, %xmm5
+vpsubb  %ymm3, %ymm3, %ymm5
+vpsubd  %ymm3, %ymm3, %ymm5
+vpsubq  %ymm3, %ymm3, %ymm5
+vpsubw  %ymm3, %ymm3, %ymm5
+
+andnps  %xmm0, %xmm0
+andnpd  %xmm1, %xmm1
+vandnps %xmm2, %xmm2, %xmm2
+vandnpd %xmm1, %xmm1, %xmm1
+vandnps %ymm2, %ymm2, %ymm2
+vandnpd %ymm1, %ymm1, %ymm1
+pandn   %mm2, %mm2
+pandn   %xmm2, %xmm2
+vpandn  %xmm3, %xmm3, %xmm3
+vpandn  %ymm3, %ymm3, %ymm3
+
+vandnps %xmm2, %xmm2, %xmm5
+vandnpd %xmm1, %xmm1, %xmm5
+vpandn  %xmm3, %xmm3, %xmm5
+vandnps %ymm2, %ymm2, %ymm5
+vandnpd %ymm1, %ymm1, %ymm5
+vpandn  %ymm3, %ymm3, %ymm5
+
+xorps  %xmm0, %xmm0
+xorpd  %xmm1, %xmm1
+vxorps %xmm2, %xmm2, %xmm2
+vxorpd %xmm1, %xmm1, %xmm1
+vxorps %ymm2, %ymm2, %ymm2
+vxorpd %ymm1, %ymm1, %ymm1
+pxor   %mm2, %mm2
+pxor   %xmm2, %xmm2
+vpxor  %xmm3, %xmm3, %xmm3
+vpxor  %ymm3, %ymm3, %ymm3
+
+vxorps %xmm4, %xmm4, %xmm5
+vxorpd %xmm1, %xmm1, %xmm3
+vxorps %ymm4, %ymm4, %ymm5
+vxorpd %ymm1, %ymm1, %ymm3
+vpxor  %xmm3, %xmm3, %xmm5
+vpxor  %ymm3, %ymm3, %ymm5
+
+# CHECK:      Iterations:        1
+# CHECK-NEXT: Instructions:      83
+# CHECK-NEXT: Total Cycles:      29
+# CHECK-NEXT: Total uOps:        83
+
+# CHECK:      Dispatch Width:    4
+# CHECK-NEXT: uOps Per Cycle:    2.86
+# CHECK-NEXT: IPC:               2.86
+# CHECK-NEXT: Block RThroughput: 20.8
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      1     0.25                        subl	%eax, %eax
+# CHECK-NEXT:  1      1     0.25                        subq	%rax, %rax
+# CHECK-NEXT:  1      1     0.25                        xorl	%eax, %eax
+# CHECK-NEXT:  1      1     0.25                        xorq	%rax, %rax
+# CHECK-NEXT:  1      1     0.25                        pcmpgtb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        pcmpgtd	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        pcmpgtw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.50                        pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.50                        vpcmpgtq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.50                        vpcmpgtq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.50                        vpcmpgtq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.50                        vpcmpgtq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpcmpgtw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        psubb	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        psubd	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        psubq	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        psubw	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        psubb	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        psubd	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        psubq	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        psubw	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vpsubb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpsubd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpsubq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpsubw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpsubb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpsubd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpsubq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpsubw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpsubb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpsubd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpsubq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpsubw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpsubb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpsubd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpsubq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpsubw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        andnps	%xmm0, %xmm0
+# CHECK-NEXT:  1      1     0.25                        andnpd	%xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.25                        vandnps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vandnpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.25                        vandnps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT:  1      1     0.25                        vandnpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT:  1      1     0.25                        pandn	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        pandn	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpandn	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vandnps	%xmm2, %xmm2, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vandnpd	%xmm1, %xmm1, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpandn	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vandnps	%ymm2, %ymm2, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vandnpd	%ymm1, %ymm1, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vpandn	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  1      1     0.25                        xorps	%xmm0, %xmm0
+# CHECK-NEXT:  1      1     0.25                        xorpd	%xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.25                        vxorps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vxorpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT:  1      1     0.25                        vxorps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT:  1      1     0.25                        vxorpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT:  1      1     0.25                        pxor	%mm2, %mm2
+# CHECK-NEXT:  1      1     0.25                        pxor	%xmm2, %xmm2
+# CHECK-NEXT:  1      1     0.25                        vpxor	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vpxor	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vxorps	%xmm4, %xmm4, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vxorpd	%xmm1, %xmm1, %xmm3
+# CHECK-NEXT:  1      1     0.25                        vxorps	%ymm4, %ymm4, %ymm5
+# CHECK-NEXT:  1      1     0.25                        vxorpd	%ymm1, %ymm1, %ymm3
+# CHECK-NEXT:  1      1     0.25                        vpxor	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  1      1     0.25                        vpxor	%ymm3, %ymm3, %ymm5
+
+# CHECK:      Register File statistics:
+# CHECK-NEXT: Total number of mappings created:    115
+# CHECK-NEXT: Max number of mappings used:         58
+
+# CHECK:      *  Register File #1 -- Zn2FpuPRF:
+# CHECK-NEXT:    Number of physical registers:     160
+# CHECK-NEXT:    Total number of mappings created: 107
+# CHECK-NEXT:    Max number of mappings used:      58
+
+# CHECK:      *  Register File #2 -- Zn2IntegerPRF:
+# CHECK-NEXT:    Number of physical registers:     168
+# CHECK-NEXT:    Total number of mappings created: 8
+# CHECK-NEXT:    Max number of mappings used:      8
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - Zn2AGU0
+# CHECK-NEXT: [1]   - Zn2AGU1
+# CHECK-NEXT: [2]   - Zn2AGU2
+# CHECK-NEXT: [3]   - Zn2ALU0
+# CHECK-NEXT: [4]   - Zn2ALU1
+# CHECK-NEXT: [5]   - Zn2ALU2
+# CHECK-NEXT: [6]   - Zn2ALU3
+# CHECK-NEXT: [7]   - Zn2Divider
+# CHECK-NEXT: [8]   - Zn2FPU0
+# CHECK-NEXT: [9]   - Zn2FPU1
+# CHECK-NEXT: [10]  - Zn2FPU2
+# CHECK-NEXT: [11]  - Zn2FPU3
+# CHECK-NEXT: [12]  - Zn2Multiplier
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]
+# CHECK-NEXT:  -      -      -     1.00   1.00   1.00   1.00    -     20.00  19.00  20.00  20.00   -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   Instructions:
+# 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:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     pcmpgtb	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     pcmpgtd	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     pcmpgtw	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vpcmpgtb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vpcmpgtd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpgtq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpcmpgtw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vpcmpgtb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vpcmpgtd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpgtq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vpcmpgtw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpcmpgtb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vpcmpgtd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vpcmpgtq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpgtw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vpcmpgtb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpgtd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vpcmpgtq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpcmpgtw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     psubb	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     psubd	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     psubq	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     psubw	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     psubb	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     psubd	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     psubq	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     psubw	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vpsubb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vpsubq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vpsubw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vpsubb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vpsubd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vpsubq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vpsubw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpsubb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vpsubd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vpsubq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vpsubw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     andnps	%xmm0, %xmm0
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     andnpd	%xmm1, %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vandnps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vandnpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vandnps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vandnpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     pandn	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     pandn	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpandn	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vandnps	%xmm2, %xmm2, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vandnpd	%xmm1, %xmm1, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpandn	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vandnps	%ymm2, %ymm2, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vandnpd	%ymm1, %ymm1, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vpandn	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     xorps	%xmm0, %xmm0
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     xorpd	%xmm1, %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vxorps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vxorpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vxorps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vxorpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     pxor	%mm2, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     pxor	%xmm2, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vpxor	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -      -     vpxor	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vxorps	%xmm4, %xmm4, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vxorpd	%xmm1, %xmm1, %xmm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     1.00    -     vxorps	%ymm4, %ymm4, %ymm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vxorpd	%ymm1, %ymm1, %ymm3
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -     vpxor	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00    -      -      -      -     vpxor	%ymm3, %ymm3, %ymm5
+
+# CHECK:      Timeline view:
+# CHECK-NEXT:                     0123456789
+# CHECK-NEXT: Index     0123456789          012345678
+
+# CHECK:      [0,0]     DeER .    .    .    .    .  .   subl	%eax, %eax
+# CHECK-NEXT: [0,1]     D=eER.    .    .    .    .  .   subq	%rax, %rax
+# CHECK-NEXT: [0,2]     D==eER    .    .    .    .  .   xorl	%eax, %eax
+# CHECK-NEXT: [0,3]     D===eER   .    .    .    .  .   xorq	%rax, %rax
+# CHECK-NEXT: [0,4]     .DeE--R   .    .    .    .  .   pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: [0,5]     .D=eE-R   .    .    .    .  .   pcmpgtd	%mm2, %mm2
+# CHECK-NEXT: [0,6]     .D==eER   .    .    .    .  .   pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: [0,7]     .DeE--R   .    .    .    .  .   pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT: [0,8]     . DeE-R   .    .    .    .  .   pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: [0,9]     . D=eER   .    .    .    .  .   pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT: [0,10]    . D==eER  .    .    .    .  .   pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: [0,11]    . DeE--R  .    .    .    .  .   vpcmpgtb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,12]    .  DeE-R  .    .    .    .  .   vpcmpgtd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,13]    .  D=eER  .    .    .    .  .   vpcmpgtq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,14]    .  D==eER .    .    .    .  .   vpcmpgtw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,15]    .  D===eER.    .    .    .  .   vpcmpgtb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,16]    .   D==eER.    .    .    .  .   vpcmpgtd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,17]    .   D==eER.    .    .    .  .   vpcmpgtq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,18]    .   D===eER    .    .    .  .   vpcmpgtw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,19]    .   D==eE-R    .    .    .  .   vpcmpgtb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,20]    .    D==eER    .    .    .  .   vpcmpgtd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,21]    .    D===eER   .    .    .  .   vpcmpgtq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,22]    .    D====eER  .    .    .  .   vpcmpgtw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,23]    .    D=====eER .    .    .  .   vpcmpgtb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,24]    .    .D====eER .    .    .  .   vpcmpgtd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,25]    .    .D====eER .    .    .  .   vpcmpgtq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,26]    .    .D====eER .    .    .  .   vpcmpgtw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,27]    .    .D=eE---R .    .    .  .   psubb	%mm2, %mm2
+# CHECK-NEXT: [0,28]    .    . D=eE--R .    .    .  .   psubd	%mm2, %mm2
+# CHECK-NEXT: [0,29]    .    . D==eE-R .    .    .  .   psubq	%mm2, %mm2
+# CHECK-NEXT: [0,30]    .    . D====eER.    .    .  .   psubw	%mm2, %mm2
+# CHECK-NEXT: [0,31]    .    . DeE----R.    .    .  .   psubb	%xmm2, %xmm2
+# CHECK-NEXT: [0,32]    .    .  DeE---R.    .    .  .   psubd	%xmm2, %xmm2
+# CHECK-NEXT: [0,33]    .    .  D=eE--R.    .    .  .   psubq	%xmm2, %xmm2
+# CHECK-NEXT: [0,34]    .    .  D===eER.    .    .  .   psubw	%xmm2, %xmm2
+# CHECK-NEXT: [0,35]    .    .  D===eER.    .    .  .   vpsubb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,36]    .    .   D===eER    .    .  .   vpsubd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,37]    .    .   D====eER   .    .  .   vpsubq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,38]    .    .   D=====eER  .    .  .   vpsubw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,39]    .    .   D======eER .    .  .   vpsubb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,40]    .    .    D======eER.    .  .   vpsubd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,41]    .    .    D=======eER    .  .   vpsubq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,42]    .    .    D========eER   .  .   vpsubw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,43]    .    .    D=========eER  .  .   vpsubb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,44]    .    .    .D========eER  .  .   vpsubd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,45]    .    .    .D========eER  .  .   vpsubq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,46]    .    .    .D========eER  .  .   vpsubw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,47]    .    .    .D=========eER .  .   vpsubb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,48]    .    .    . D========eER .  .   vpsubd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,49]    .    .    . D========eER .  .   vpsubq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,50]    .    .    . D========eER .  .   vpsubw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,51]    .    .    . DeE--------R .  .   andnps	%xmm0, %xmm0
+# CHECK-NEXT: [0,52]    .    .    .  DeE-------R .  .   andnpd	%xmm1, %xmm1
+# CHECK-NEXT: [0,53]    .    .    .  DeE-------R .  .   vandnps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: [0,54]    .    .    .  D=eE------R .  .   vandnpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: [0,55]    .    .    .  D=eE-------R.  .   vandnps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT: [0,56]    .    .    .   D=eE------R.  .   vandnpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT: [0,57]    .    .    .   DeE-------R.  .   pandn	%mm2, %mm2
+# CHECK-NEXT: [0,58]    .    .    .   D=eE------R.  .   pandn	%xmm2, %xmm2
+# CHECK-NEXT: [0,59]    .    .    .   D=======eER.  .   vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,60]    .    .    .    D=======eER  .   vpandn	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,61]    .    .    .    D=eE------R  .   vandnps	%xmm2, %xmm2, %xmm5
+# CHECK-NEXT: [0,62]    .    .    .    D=eE------R  .   vandnpd	%xmm1, %xmm1, %xmm5
+# CHECK-NEXT: [0,63]    .    .    .    D========eER .   vpandn	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,64]    .    .    .    .DeE-------R .   vandnps	%ymm2, %ymm2, %ymm5
+# CHECK-NEXT: [0,65]    .    .    .    .D=eE------R .   vandnpd	%ymm1, %ymm1, %ymm5
+# CHECK-NEXT: [0,66]    .    .    .    .D=======eER .   vpandn	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: [0,67]    .    .    .    .D=eE------R .   xorps	%xmm0, %xmm0
+# CHECK-NEXT: [0,68]    .    .    .    . DeE------R .   xorpd	%xmm1, %xmm1
+# CHECK-NEXT: [0,69]    .    .    .    . D=eE-----R .   vxorps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: [0,70]    .    .    .    . D=eE-----R .   vxorpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: [0,71]    .    .    .    . D====eE---R.   vxorps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT: [0,72]    .    .    .    .  D===eE---R.   vxorpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT: [0,73]    .    .    .    .  DeE------R.   pxor	%mm2, %mm2
+# CHECK-NEXT: [0,74]    .    .    .    .  D====eE--R.   pxor	%xmm2, %xmm2
+# CHECK-NEXT: [0,75]    .    .    .    .  D=====eE-R.   vpxor	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,76]    .    .    .    .   D=====eER.   vpxor	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: [0,77]    .    .    .    .   D==eE---R.   vxorps	%xmm4, %xmm4, %xmm5
+# CHECK-NEXT: [0,78]    .    .    .    .   D===eE--R.   vxorpd	%xmm1, %xmm1, %xmm3
+# CHECK-NEXT: [0,79]    .    .    .    .   D====eE--R   vxorps	%ymm4, %ymm4, %ymm5
+# CHECK-NEXT: [0,80]    .    .    .    .    D==eE---R   vxorpd	%ymm1, %ymm1, %ymm3
+# CHECK-NEXT: [0,81]    .    .    .    .    D====eE-R   vpxor	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: [0,82]    .    .    .    .    D====eE-R   vpxor	%ymm3, %ymm3, %ymm5
+
+# CHECK:      Average Wait times (based on the timeline view):
+# CHECK-NEXT: [0]: Executions
+# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
+# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
+# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
+
+# CHECK:            [0]    [1]    [2]    [3]
+# CHECK-NEXT: 0.     1     1.0    1.0    0.0       subl	%eax, %eax
+# CHECK-NEXT: 1.     1     2.0    0.0    0.0       subq	%rax, %rax
+# CHECK-NEXT: 2.     1     3.0    0.0    0.0       xorl	%eax, %eax
+# CHECK-NEXT: 3.     1     4.0    0.0    0.0       xorq	%rax, %rax
+# CHECK-NEXT: 4.     1     1.0    1.0    2.0       pcmpgtb	%mm2, %mm2
+# CHECK-NEXT: 5.     1     2.0    0.0    1.0       pcmpgtd	%mm2, %mm2
+# CHECK-NEXT: 6.     1     3.0    0.0    0.0       pcmpgtw	%mm2, %mm2
+# CHECK-NEXT: 7.     1     1.0    1.0    2.0       pcmpgtb	%xmm2, %xmm2
+# CHECK-NEXT: 8.     1     1.0    0.0    1.0       pcmpgtd	%xmm2, %xmm2
+# CHECK-NEXT: 9.     1     2.0    0.0    0.0       pcmpgtq	%xmm2, %xmm2
+# CHECK-NEXT: 10.    1     3.0    0.0    0.0       pcmpgtw	%xmm2, %xmm2
+# CHECK-NEXT: 11.    1     1.0    1.0    2.0       vpcmpgtb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 12.    1     1.0    0.0    1.0       vpcmpgtd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 13.    1     2.0    0.0    0.0       vpcmpgtq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 14.    1     3.0    0.0    0.0       vpcmpgtw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 15.    1     4.0    0.0    0.0       vpcmpgtb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 16.    1     3.0    0.0    0.0       vpcmpgtd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 17.    1     3.0    0.0    0.0       vpcmpgtq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 18.    1     4.0    1.0    0.0       vpcmpgtw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 19.    1     3.0    0.0    1.0       vpcmpgtb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 20.    1     3.0    0.0    0.0       vpcmpgtd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 21.    1     4.0    0.0    0.0       vpcmpgtq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 22.    1     5.0    0.0    0.0       vpcmpgtw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 23.    1     6.0    0.0    0.0       vpcmpgtb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 24.    1     5.0    0.0    0.0       vpcmpgtd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 25.    1     5.0    0.0    0.0       vpcmpgtq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 26.    1     5.0    0.0    0.0       vpcmpgtw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 27.    1     2.0    2.0    3.0       psubb	%mm2, %mm2
+# CHECK-NEXT: 28.    1     2.0    0.0    2.0       psubd	%mm2, %mm2
+# CHECK-NEXT: 29.    1     3.0    0.0    1.0       psubq	%mm2, %mm2
+# CHECK-NEXT: 30.    1     5.0    1.0    0.0       psubw	%mm2, %mm2
+# CHECK-NEXT: 31.    1     1.0    1.0    4.0       psubb	%xmm2, %xmm2
+# CHECK-NEXT: 32.    1     1.0    0.0    3.0       psubd	%xmm2, %xmm2
+# CHECK-NEXT: 33.    1     2.0    0.0    2.0       psubq	%xmm2, %xmm2
+# CHECK-NEXT: 34.    1     4.0    1.0    0.0       psubw	%xmm2, %xmm2
+# CHECK-NEXT: 35.    1     4.0    1.0    0.0       vpsubb	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 36.    1     4.0    0.0    0.0       vpsubd	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 37.    1     5.0    0.0    0.0       vpsubq	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 38.    1     6.0    0.0    0.0       vpsubw	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 39.    1     7.0    0.0    0.0       vpsubb	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 40.    1     7.0    0.0    0.0       vpsubd	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 41.    1     8.0    0.0    0.0       vpsubq	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 42.    1     9.0    0.0    0.0       vpsubw	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 43.    1     10.0   0.0    0.0       vpsubb	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 44.    1     9.0    0.0    0.0       vpsubd	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 45.    1     9.0    0.0    0.0       vpsubq	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 46.    1     9.0    0.0    0.0       vpsubw	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 47.    1     10.0   1.0    0.0       vpsubb	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 48.    1     9.0    1.0    0.0       vpsubd	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 49.    1     9.0    1.0    0.0       vpsubq	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 50.    1     9.0    1.0    0.0       vpsubw	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 51.    1     1.0    1.0    8.0       andnps	%xmm0, %xmm0
+# CHECK-NEXT: 52.    1     1.0    1.0    7.0       andnpd	%xmm1, %xmm1
+# CHECK-NEXT: 53.    1     1.0    1.0    7.0       vandnps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: 54.    1     2.0    0.0    6.0       vandnpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: 55.    1     2.0    0.0    7.0       vandnps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT: 56.    1     2.0    0.0    6.0       vandnpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT: 57.    1     1.0    1.0    7.0       pandn	%mm2, %mm2
+# CHECK-NEXT: 58.    1     2.0    0.0    6.0       pandn	%xmm2, %xmm2
+# CHECK-NEXT: 59.    1     8.0    2.0    0.0       vpandn	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 60.    1     8.0    0.0    0.0       vpandn	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 61.    1     2.0    0.0    6.0       vandnps	%xmm2, %xmm2, %xmm5
+# CHECK-NEXT: 62.    1     2.0    0.0    6.0       vandnpd	%xmm1, %xmm1, %xmm5
+# CHECK-NEXT: 63.    1     9.0    0.0    0.0       vpandn	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 64.    1     1.0    0.0    7.0       vandnps	%ymm2, %ymm2, %ymm5
+# CHECK-NEXT: 65.    1     2.0    1.0    6.0       vandnpd	%ymm1, %ymm1, %ymm5
+# CHECK-NEXT: 66.    1     8.0    0.0    0.0       vpandn	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT: 67.    1     2.0    2.0    6.0       xorps	%xmm0, %xmm0
+# CHECK-NEXT: 68.    1     1.0    1.0    6.0       xorpd	%xmm1, %xmm1
+# CHECK-NEXT: 69.    1     2.0    2.0    5.0       vxorps	%xmm2, %xmm2, %xmm2
+# CHECK-NEXT: 70.    1     2.0    0.0    5.0       vxorpd	%xmm1, %xmm1, %xmm1
+# CHECK-NEXT: 71.    1     5.0    2.0    3.0       vxorps	%ymm2, %ymm2, %ymm2
+# CHECK-NEXT: 72.    1     4.0    2.0    3.0       vxorpd	%ymm1, %ymm1, %ymm1
+# CHECK-NEXT: 73.    1     1.0    1.0    6.0       pxor	%mm2, %mm2
+# CHECK-NEXT: 74.    1     5.0    0.0    2.0       pxor	%xmm2, %xmm2
+# CHECK-NEXT: 75.    1     6.0    0.0    1.0       vpxor	%xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 76.    1     6.0    0.0    0.0       vpxor	%ymm3, %ymm3, %ymm3
+# CHECK-NEXT: 77.    1     3.0    3.0    3.0       vxorps	%xmm4, %xmm4, %xmm5
+# CHECK-NEXT: 78.    1     4.0    0.0    2.0       vxorpd	%xmm1, %xmm1, %xmm3
+# CHECK-NEXT: 79.    1     5.0    5.0    2.0       vxorps	%ymm4, %ymm4, %ymm5
+# CHECK-NEXT: 80.    1     3.0    0.0    3.0       vxorpd	%ymm1, %ymm1, %ymm3
+# CHECK-NEXT: 81.    1     5.0    1.0    1.0       vpxor	%xmm3, %xmm3, %xmm5
+# CHECK-NEXT: 82.    1     5.0    1.0    1.0       vpxor	%ymm3, %ymm3, %ymm5
+# CHECK-NEXT:        1     4.0    0.5    1.8       <total>


        


More information about the llvm-commits mailing list