[llvm] r331169 - [llvm-mca] Support for in-order CPU for -instruction-tables testing.

Andrea Di Biagio via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 30 05:05:34 PDT 2018


Author: adibiagio
Date: Mon Apr 30 05:05:34 2018
New Revision: 331169

URL: http://llvm.org/viewvc/llvm-project?rev=331169&view=rev
Log:
[llvm-mca] Support for in-order CPU for -instruction-tables testing.

Added Intel Atom tests to verify that the tool correctly generates instruction
tables even if the CPU is in-order.

Fixes PR37282.

Added:
    llvm/trunk/test/tools/llvm-mca/X86/Atom/
    llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-mmx.s
    llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s
    llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse2.s
    llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse3.s
    llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-ssse3.s
    llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
    llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x87.s
Modified:
    llvm/trunk/tools/llvm-mca/llvm-mca.cpp

Added: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-mmx.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-mmx.s?rev=331169&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-mmx.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-mmx.s Mon Apr 30 05:05:34 2018
@@ -0,0 +1,388 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s
+
+emms
+
+movd        %eax, %mm2
+movd        (%rax), %mm2
+
+movd        %mm0, %ecx
+movd        %mm0, (%rax)
+
+movq        %rax, %mm2
+movq        (%rax), %mm2
+
+movq        %mm0, %rcx
+movq        %mm0, (%rax)
+
+packsswb    %mm0, %mm2
+packsswb    (%rax), %mm2
+
+packssdw    %mm0, %mm2
+packssdw    (%rax), %mm2
+
+packuswb    %mm0, %mm2
+packuswb    (%rax), %mm2
+
+paddb       %mm0, %mm2
+paddb       (%rax), %mm2
+
+paddd       %mm0, %mm2
+paddd       (%rax), %mm2
+
+paddsb      %mm0, %mm2
+paddsb      (%rax), %mm2
+
+paddsw      %mm0, %mm2
+paddsw      (%rax), %mm2
+
+paddusb     %mm0, %mm2
+paddusb     (%rax), %mm2
+
+paddusw     %mm0, %mm2
+paddusw     (%rax), %mm2
+
+paddw       %mm0, %mm2
+paddw       (%rax), %mm2
+
+pand        %mm0, %mm2
+pand        (%rax), %mm2
+
+pandn       %mm0, %mm2
+pandn       (%rax), %mm2
+
+pcmpeqb     %mm0, %mm2
+pcmpeqb     (%rax), %mm2
+
+pcmpeqd     %mm0, %mm2
+pcmpeqd     (%rax), %mm2
+
+pcmpeqw     %mm0, %mm2
+pcmpeqw     (%rax), %mm2
+
+pcmpgtb     %mm0, %mm2
+pcmpgtb     (%rax), %mm2
+
+pcmpgtd     %mm0, %mm2
+pcmpgtd     (%rax), %mm2
+
+pcmpgtw     %mm0, %mm2
+pcmpgtw     (%rax), %mm2
+
+pmaddwd     %mm0, %mm2
+pmaddwd     (%rax), %mm2
+
+pmulhw      %mm0, %mm2
+pmulhw      (%rax), %mm2
+
+pmullw      %mm0, %mm2
+pmullw      (%rax), %mm2
+
+por         %mm0, %mm2
+por         (%rax), %mm2
+
+pslld       $1, %mm2
+pslld       %mm0, %mm2
+pslld       (%rax), %mm2
+
+psllq       $1, %mm2
+psllq       %mm0, %mm2
+psllq       (%rax), %mm2
+
+psllw       $1, %mm2
+psllw       %mm0, %mm2
+psllw       (%rax), %mm2
+
+psrad       $1, %mm2
+psrad       %mm0, %mm2
+psrad       (%rax), %mm2
+
+psraw       $1, %mm2
+psraw       %mm0, %mm2
+psraw       (%rax), %mm2
+
+psrld       $1, %mm2
+psrld       %mm0, %mm2
+psrld       (%rax), %mm2
+
+psrlq       $1, %mm2
+psrlq       %mm0, %mm2
+psrlq       (%rax), %mm2
+
+psrlw       $1, %mm2
+psrlw       %mm0, %mm2
+psrlw       (%rax), %mm2
+
+psubb       %mm0, %mm2
+psubb       (%rax), %mm2
+
+psubd       %mm0, %mm2
+psubd       (%rax), %mm2
+
+psubsb      %mm0, %mm2
+psubsb      (%rax), %mm2
+
+psubsw      %mm0, %mm2
+psubsw      (%rax), %mm2
+
+psubusb     %mm0, %mm2
+psubusb     (%rax), %mm2
+
+psubusw     %mm0, %mm2
+psubusw     (%rax), %mm2
+
+psubw       %mm0, %mm2
+psubw       (%rax), %mm2
+
+punpckhbw   %mm0, %mm2
+punpckhbw   (%rax), %mm2
+
+punpckhdq   %mm0, %mm2
+punpckhdq   (%rax), %mm2
+
+punpckhwd   %mm0, %mm2
+punpckhwd   (%rax), %mm2
+
+punpcklbw   %mm0, %mm2
+punpcklbw   (%rax), %mm2
+
+punpckldq   %mm0, %mm2
+punpckldq   (%rax), %mm2
+
+punpcklwd   %mm0, %mm2
+punpcklwd   (%rax), %mm2
+
+pxor        %mm0, %mm2
+pxor        (%rax), %mm2
+
+# 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
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      5     2.50    *      *      * 	emms
+# CHECK-NEXT:  1      1     1.00                    	movd	%eax, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	movd	(%rax), %mm2
+# CHECK-NEXT:  1      3     3.00                    	movd	%mm0, %ecx
+# CHECK-NEXT:  1      1     1.00           *      * 	movd	%mm0, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	movq	%rax, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	movq	(%rax), %mm2
+# CHECK-NEXT:  1      3     3.00                    	movq	%mm0, %rcx
+# CHECK-NEXT:  1      1     1.00           *        	movq	%mm0, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	packsswb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	packsswb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	packssdw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	packssdw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	packuswb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	packuswb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	paddb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	paddb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	paddd	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	paddd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	paddsb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	paddsb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	paddsw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	paddsw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	paddusb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	paddusb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	paddusw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	paddusw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	paddw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	paddw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pand	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pand	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pandn	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pandn	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpeqb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpeqb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpeqd	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpeqd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpeqw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpeqw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpgtb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpgtb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpgtd	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpgtd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpgtw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpgtw	(%rax), %mm2
+# CHECK-NEXT:  1      4     4.00                    	pmaddwd	%mm0, %mm2
+# CHECK-NEXT:  1      4     4.00    *               	pmaddwd	(%rax), %mm2
+# CHECK-NEXT:  1      4     4.00                    	pmulhw	%mm0, %mm2
+# CHECK-NEXT:  1      4     4.00    *               	pmulhw	(%rax), %mm2
+# CHECK-NEXT:  1      4     4.00                    	pmullw	%mm0, %mm2
+# CHECK-NEXT:  1      4     4.00    *               	pmullw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	por	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	por	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pslld	$1, %mm2
+# CHECK-NEXT:  1      2     1.00                    	pslld	%mm0, %mm2
+# CHECK-NEXT:  1      3     1.50    *               	pslld	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psllq	$1, %mm2
+# CHECK-NEXT:  1      2     1.00                    	psllq	%mm0, %mm2
+# CHECK-NEXT:  1      3     1.50    *               	psllq	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psllw	$1, %mm2
+# CHECK-NEXT:  1      2     1.00                    	psllw	%mm0, %mm2
+# CHECK-NEXT:  1      3     1.50    *               	psllw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psrad	$1, %mm2
+# CHECK-NEXT:  1      2     1.00                    	psrad	%mm0, %mm2
+# CHECK-NEXT:  1      3     1.50    *               	psrad	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psraw	$1, %mm2
+# CHECK-NEXT:  1      2     1.00                    	psraw	%mm0, %mm2
+# CHECK-NEXT:  1      3     1.50    *               	psraw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psrld	$1, %mm2
+# CHECK-NEXT:  1      2     1.00                    	psrld	%mm0, %mm2
+# CHECK-NEXT:  1      3     1.50    *               	psrld	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psrlq	$1, %mm2
+# CHECK-NEXT:  1      2     1.00                    	psrlq	%mm0, %mm2
+# CHECK-NEXT:  1      3     1.50    *               	psrlq	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psrlw	$1, %mm2
+# CHECK-NEXT:  1      2     1.00                    	psrlw	%mm0, %mm2
+# CHECK-NEXT:  1      3     1.50    *               	psrlw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psubb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	psubb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psubd	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	psubd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psubsb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	psubsb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psubsw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	psubsw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psubusb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	psubusb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psubusw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	psubusw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psubw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	psubw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	punpckhbw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	punpckhbw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	punpckhdq	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	punpckhdq	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	punpckhwd	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	punpckhwd	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	punpcklbw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	punpcklbw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	punpckldq	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	punpckldq	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	punpcklwd	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	punpcklwd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pxor	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pxor	(%rax), %mm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - AtomPort0
+# CHECK-NEXT: [1] - AtomPort1
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]
+# CHECK-NEXT: 113.50 41.50
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    	Instructions:
+# CHECK-NEXT: 2.50   2.50   	emms
+# CHECK-NEXT: 1.00    -     	movd	%eax, %mm2
+# CHECK-NEXT: 1.00    -     	movd	(%rax), %mm2
+# CHECK-NEXT: 3.00    -     	movd	%mm0, %ecx
+# CHECK-NEXT: 1.00    -     	movd	%mm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movq	%rax, %mm2
+# CHECK-NEXT: 1.00    -     	movq	(%rax), %mm2
+# CHECK-NEXT: 3.00    -     	movq	%mm0, %rcx
+# CHECK-NEXT: 1.00    -     	movq	%mm0, (%rax)
+# CHECK-NEXT: 0.50   0.50   	packsswb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	packsswb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	packssdw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	packssdw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	packuswb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	packuswb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	paddb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	paddb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	paddd	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	paddd	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	paddsb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	paddsb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	paddsw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	paddsw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	paddusb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	paddusb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	paddusw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	paddusw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	paddw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	paddw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pand	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pand	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pandn	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pandn	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pcmpeqb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pcmpeqb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pcmpeqd	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pcmpeqd	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pcmpeqw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pcmpeqw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pcmpgtb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pcmpgtb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pcmpgtd	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pcmpgtd	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pcmpgtw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pcmpgtw	(%rax), %mm2
+# CHECK-NEXT: 4.00    -     	pmaddwd	%mm0, %mm2
+# CHECK-NEXT: 4.00    -     	pmaddwd	(%rax), %mm2
+# CHECK-NEXT: 4.00    -     	pmulhw	%mm0, %mm2
+# CHECK-NEXT: 4.00    -     	pmulhw	(%rax), %mm2
+# CHECK-NEXT: 4.00    -     	pmullw	%mm0, %mm2
+# CHECK-NEXT: 4.00    -     	pmullw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	por	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	por	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pslld	$1, %mm2
+# CHECK-NEXT: 1.00   1.00   	pslld	%mm0, %mm2
+# CHECK-NEXT: 1.50   1.50   	pslld	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psllq	$1, %mm2
+# CHECK-NEXT: 1.00   1.00   	psllq	%mm0, %mm2
+# CHECK-NEXT: 1.50   1.50   	psllq	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psllw	$1, %mm2
+# CHECK-NEXT: 1.00   1.00   	psllw	%mm0, %mm2
+# CHECK-NEXT: 1.50   1.50   	psllw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psrad	$1, %mm2
+# CHECK-NEXT: 1.00   1.00   	psrad	%mm0, %mm2
+# CHECK-NEXT: 1.50   1.50   	psrad	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psraw	$1, %mm2
+# CHECK-NEXT: 1.00   1.00   	psraw	%mm0, %mm2
+# CHECK-NEXT: 1.50   1.50   	psraw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psrld	$1, %mm2
+# CHECK-NEXT: 1.00   1.00   	psrld	%mm0, %mm2
+# CHECK-NEXT: 1.50   1.50   	psrld	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psrlq	$1, %mm2
+# CHECK-NEXT: 1.00   1.00   	psrlq	%mm0, %mm2
+# CHECK-NEXT: 1.50   1.50   	psrlq	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psrlw	$1, %mm2
+# CHECK-NEXT: 1.00   1.00   	psrlw	%mm0, %mm2
+# CHECK-NEXT: 1.50   1.50   	psrlw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psubb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	psubb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psubd	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	psubd	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psubsb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	psubsb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psubsw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	psubsw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psubusb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	psubusb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psubusw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	psubusw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psubw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	psubw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	punpckhbw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	punpckhbw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	punpckhdq	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	punpckhdq	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	punpckhwd	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	punpckhwd	(%rax), %mm2
+# CHECK-NEXT: 1.00    -     	punpcklbw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	punpcklbw	(%rax), %mm2
+# CHECK-NEXT: 1.00    -     	punpckldq	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	punpckldq	(%rax), %mm2
+# CHECK-NEXT: 1.00    -     	punpcklwd	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	punpcklwd	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pxor	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pxor	(%rax), %mm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s?rev=331169&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s Mon Apr 30 05:05:34 2018
@@ -0,0 +1,456 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s
+
+addps       %xmm0, %xmm2
+addps       (%rax), %xmm2
+
+addss       %xmm0, %xmm2
+addss       (%rax), %xmm2
+
+andnps      %xmm0, %xmm2
+andnps      (%rax), %xmm2
+
+andps       %xmm0, %xmm2
+andps       (%rax), %xmm2
+
+cmpps       $0, %xmm0, %xmm2
+cmpps       $0, (%rax), %xmm2
+
+cmpss       $0, %xmm0, %xmm2
+cmpss       $0, (%rax), %xmm2
+
+comiss      %xmm0, %xmm1
+comiss      (%rax), %xmm1
+
+cvtpi2ps    %mm0, %xmm2
+cvtpi2ps    (%rax), %xmm2
+
+cvtps2pi    %xmm0, %mm2
+cvtps2pi    (%rax), %mm2
+
+cvtsi2ss    %ecx, %xmm2
+cvtsi2ss    %rcx, %xmm2
+cvtsi2ss    (%rax), %xmm2
+cvtsi2ss    (%rax), %xmm2
+
+cvtss2si    %xmm0, %ecx
+cvtss2si    %xmm0, %rcx
+cvtss2si    (%rax), %ecx
+cvtss2si    (%rax), %rcx
+
+cvttps2pi   %xmm0, %mm2
+cvttps2pi   (%rax), %mm2
+
+cvttss2si   %xmm0, %ecx
+cvttss2si   %xmm0, %rcx
+cvttss2si   (%rax), %ecx
+cvttss2si   (%rax), %rcx
+
+divps       %xmm0, %xmm2
+divps       (%rax), %xmm2
+
+divss       %xmm0, %xmm2
+divss       (%rax), %xmm2
+
+ldmxcsr     (%rax)
+
+maskmovq    %mm0, %mm1
+
+maxps       %xmm0, %xmm2
+maxps       (%rax), %xmm2
+
+maxss       %xmm0, %xmm2
+maxss       (%rax), %xmm2
+
+minps       %xmm0, %xmm2
+minps       (%rax), %xmm2
+
+minss       %xmm0, %xmm2
+minss       (%rax), %xmm2
+
+movaps      %xmm0, %xmm2
+movaps      %xmm0, (%rax)
+movaps      (%rax), %xmm2
+
+movhlps     %xmm0, %xmm2
+movlhps     %xmm0, %xmm2
+
+movhps      %xmm0, (%rax)
+movhps      (%rax), %xmm2
+
+movlps      %xmm0, (%rax)
+movlps      (%rax), %xmm2
+
+movmskps    %xmm0, %rcx
+
+movntps     %xmm0, (%rax)
+movntq      %mm0, (%rax)
+
+movss       %xmm0, %xmm2
+movss       %xmm0, (%rax)
+movss       (%rax), %xmm2
+
+movups      %xmm0, %xmm2
+movups      %xmm0, (%rax)
+movups      (%rax), %xmm2
+
+mulps       %xmm0, %xmm2
+mulps       (%rax), %xmm2
+
+mulss       %xmm0, %xmm2
+mulss       (%rax), %xmm2
+
+orps        %xmm0, %xmm2
+orps        (%rax), %xmm2
+
+pavgb       %mm0, %mm2
+pavgb       (%rax), %mm2
+
+pavgw       %mm0, %mm2
+pavgw       (%rax), %mm2
+
+pextrw      $1, %mm0, %rcx
+
+pinsrw      $1, %rax, %mm2
+pinsrw      $1, (%rax), %mm2
+
+pmaxsw      %mm0, %mm2
+pmaxsw      (%rax), %mm2
+
+pmaxub      %mm0, %mm2
+pmaxub      (%rax), %mm2
+
+pminsw      %mm0, %mm2
+pminsw      (%rax), %mm2
+
+pminub      %mm0, %mm2
+pminub      (%rax), %mm2
+
+pmovmskb    %xmm0, %rcx
+
+pmulhuw     %mm0, %mm2
+pmulhuw     (%rax), %mm2
+
+prefetcht0  (%rax)
+prefetcht1  (%rax)
+prefetcht2  (%rax)
+prefetchnta (%rax)
+
+psadbw      %mm0, %mm2
+psadbw      (%rax), %mm2
+
+pshufw      $1, %mm0, %mm2
+pshufw      $1, (%rax), %mm2
+
+rcpps       %xmm0, %xmm2
+rcpps       (%rax), %xmm2
+
+rcpss       %xmm0, %xmm2
+rcpss       (%rax), %xmm2
+
+rsqrtps     %xmm0, %xmm2
+rsqrtps     (%rax), %xmm2
+
+rsqrtss     %xmm0, %xmm2
+rsqrtss     (%rax), %xmm2
+
+sfence
+
+shufps      $1, %xmm0, %xmm2
+shufps      $1, (%rax), %xmm2
+
+sqrtps      %xmm0, %xmm2
+sqrtps      (%rax), %xmm2
+
+sqrtss      %xmm0, %xmm2
+sqrtss      (%rax), %xmm2
+
+stmxcsr     (%rax)
+
+subps       %xmm0, %xmm2
+subps       (%rax), %xmm2
+
+subss       %xmm0, %xmm2
+subss       (%rax), %xmm2
+
+ucomiss     %xmm0, %xmm1
+ucomiss     (%rax), %xmm1
+
+unpckhps    %xmm0, %xmm2
+unpckhps    (%rax), %xmm2
+
+unpcklps    %xmm0, %xmm2
+unpcklps    (%rax), %xmm2
+
+xorps       %xmm0, %xmm2
+xorps       (%rax), %xmm2
+
+# 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
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      5     5.00                    	addps	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	addps	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	addss	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	addss	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	andnps	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	andnps	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	andps	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	andps	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	cmpps	$0, %xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	cmpps	$0, (%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	cmpss	$0, %xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	cmpss	$0, (%rax), %xmm2
+# CHECK-NEXT:  1      9     4.50                    	comiss	%xmm0, %xmm1
+# CHECK-NEXT:  1      10    5.00    *               	comiss	(%rax), %xmm1
+# CHECK-NEXT:  1      5     5.00                    	cvtpi2ps	%mm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	cvtpi2ps	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	cvtps2pi	%xmm0, %mm2
+# CHECK-NEXT:  1      5     5.00    *               	cvtps2pi	(%rax), %mm2
+# CHECK-NEXT:  1      6     3.00                    	cvtsi2ssl	%ecx, %xmm2
+# CHECK-NEXT:  1      6     3.00                    	cvtsi2ssq	%rcx, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	cvtsi2ssl	(%rax), %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	cvtsi2ssl	(%rax), %xmm2
+# CHECK-NEXT:  1      8     4.00                    	cvtss2si	%xmm0, %ecx
+# CHECK-NEXT:  1      9     4.50                    	cvtss2si	%xmm0, %rcx
+# CHECK-NEXT:  1      9     4.50    *               	cvtss2si	(%rax), %ecx
+# CHECK-NEXT:  1      10    5.00    *               	cvtss2si	(%rax), %rcx
+# CHECK-NEXT:  1      5     5.00                    	cvttps2pi	%xmm0, %mm2
+# CHECK-NEXT:  1      5     5.00    *               	cvttps2pi	(%rax), %mm2
+# CHECK-NEXT:  1      8     4.00                    	cvttss2si	%xmm0, %ecx
+# CHECK-NEXT:  1      9     4.50                    	cvttss2si	%xmm0, %rcx
+# CHECK-NEXT:  1      9     4.50    *               	cvttss2si	(%rax), %ecx
+# CHECK-NEXT:  1      10    5.00    *               	cvttss2si	(%rax), %rcx
+# CHECK-NEXT:  1      70    35.00                   	divps	%xmm0, %xmm2
+# CHECK-NEXT:  1      70    35.00   *               	divps	(%rax), %xmm2
+# CHECK-NEXT:  1      34    17.00                   	divss	%xmm0, %xmm2
+# CHECK-NEXT:  1      34    17.00   *               	divss	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.50    *      *      * 	ldmxcsr	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *      * 	maskmovq	%mm0, %mm1
+# CHECK-NEXT:  1      5     5.00                    	maxps	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	maxps	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	maxss	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	maxss	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	minps	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	minps	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	minss	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	minss	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	movaps	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movaps	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	movaps	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movhlps	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movlhps	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movhps	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	movhps	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movlps	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	movlps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     3.00                    	movmskps	%xmm0, %ecx
+# CHECK-NEXT:  1      1     1.00           *        	movntps	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *      * 	movntq	%mm0, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	movss	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movss	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	movss	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	movups	%xmm0, %xmm2
+# CHECK-NEXT:  1      2     1.00           *        	movups	%xmm0, (%rax)
+# CHECK-NEXT:  1      3     1.50    *               	movups	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	mulps	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	mulps	(%rax), %xmm2
+# CHECK-NEXT:  1      4     4.00                    	mulss	%xmm0, %xmm2
+# CHECK-NEXT:  1      4     4.00    *               	mulss	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	orps	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	orps	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pavgb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pavgb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pavgw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pavgw	(%rax), %mm2
+# CHECK-NEXT:  1      4     2.00                    	pextrw	$1, %mm0, %ecx
+# CHECK-NEXT:  1      1     1.00                    	pinsrw	$1, %eax, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pinsrw	$1, (%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pmaxsw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pmaxsw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pmaxub	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pmaxub	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pminsw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pminsw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pminub	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pminub	(%rax), %mm2
+# CHECK-NEXT:  1      3     3.00                    	pmovmskb	%xmm0, %ecx
+# CHECK-NEXT:  1      4     4.00                    	pmulhuw	%mm0, %mm2
+# CHECK-NEXT:  1      4     4.00    *               	pmulhuw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00    *      *        	prefetcht0	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	prefetcht1	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	prefetcht2	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	prefetchnta	(%rax)
+# CHECK-NEXT:  1      4     2.00                    	psadbw	%mm0, %mm2
+# CHECK-NEXT:  1      4     2.00    *               	psadbw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	pshufw	$1, %mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pshufw	$1, (%rax), %mm2
+# CHECK-NEXT:  1      9     4.50                    	rcpps	%xmm0, %xmm2
+# CHECK-NEXT:  1      10    5.00    *               	rcpps	(%rax), %xmm2
+# CHECK-NEXT:  1      4     4.00                    	rcpss	%xmm0, %xmm2
+# CHECK-NEXT:  1      4     4.00    *               	rcpss	(%rax), %xmm2
+# CHECK-NEXT:  1      9     4.50                    	rsqrtps	%xmm0, %xmm2
+# CHECK-NEXT:  1      10    5.00    *               	rsqrtps	(%rax), %xmm2
+# CHECK-NEXT:  1      4     4.00                    	rsqrtss	%xmm0, %xmm2
+# CHECK-NEXT:  1      4     4.00    *               	rsqrtss	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00    *      *      * 	sfence
+# CHECK-NEXT:  1      1     1.00                    	shufps	$1, %xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	shufps	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      70    35.00                   	sqrtps	%xmm0, %xmm2
+# CHECK-NEXT:  1      70    35.00   *               	sqrtps	(%rax), %xmm2
+# CHECK-NEXT:  1      34    17.00                   	sqrtss	%xmm0, %xmm2
+# CHECK-NEXT:  1      34    17.00   *               	sqrtss	(%rax), %xmm2
+# CHECK-NEXT:  1      15    7.50    *      *      * 	stmxcsr	(%rax)
+# CHECK-NEXT:  1      5     5.00                    	subps	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	subps	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	subss	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	subss	(%rax), %xmm2
+# CHECK-NEXT:  1      9     4.50                    	ucomiss	%xmm0, %xmm1
+# CHECK-NEXT:  1      10    5.00    *               	ucomiss	(%rax), %xmm1
+# CHECK-NEXT:  1      1     1.00                    	unpckhps	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	unpckhps	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	unpcklps	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	unpcklps	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	xorps	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	xorps	(%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - AtomPort0
+# CHECK-NEXT: [1] - AtomPort1
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]
+# CHECK-NEXT: 516.00 350.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    	Instructions:
+# CHECK-NEXT: 5.00    -     	addps	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	addps	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	addss	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	addss	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	andnps	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	andnps	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	andps	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	andps	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	cmpps	$0, %xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	cmpps	$0, (%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	cmpss	$0, %xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	cmpss	$0, (%rax), %xmm2
+# CHECK-NEXT: 4.50   4.50   	comiss	%xmm0, %xmm1
+# CHECK-NEXT: 5.00   5.00   	comiss	(%rax), %xmm1
+# CHECK-NEXT:  -     5.00   	cvtpi2ps	%mm0, %xmm2
+# CHECK-NEXT:  -     5.00   	cvtpi2ps	(%rax), %xmm2
+# CHECK-NEXT:  -     5.00   	cvtps2pi	%xmm0, %mm2
+# CHECK-NEXT: 5.00   5.00   	cvtps2pi	(%rax), %mm2
+# CHECK-NEXT: 3.00   3.00   	cvtsi2ssl	%ecx, %xmm2
+# CHECK-NEXT: 3.00   3.00   	cvtsi2ssq	%rcx, %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtsi2ssl	(%rax), %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtsi2ssl	(%rax), %xmm2
+# CHECK-NEXT: 4.00   4.00   	cvtss2si	%xmm0, %ecx
+# CHECK-NEXT: 4.50   4.50   	cvtss2si	%xmm0, %rcx
+# CHECK-NEXT: 4.50   4.50   	cvtss2si	(%rax), %ecx
+# CHECK-NEXT: 5.00   5.00   	cvtss2si	(%rax), %rcx
+# CHECK-NEXT:  -     5.00   	cvttps2pi	%xmm0, %mm2
+# CHECK-NEXT: 5.00   5.00   	cvttps2pi	(%rax), %mm2
+# CHECK-NEXT: 4.00   4.00   	cvttss2si	%xmm0, %ecx
+# CHECK-NEXT: 4.50   4.50   	cvttss2si	%xmm0, %rcx
+# CHECK-NEXT: 4.50   4.50   	cvttss2si	(%rax), %ecx
+# CHECK-NEXT: 5.00   5.00   	cvttss2si	(%rax), %rcx
+# CHECK-NEXT: 35.00  35.00  	divps	%xmm0, %xmm2
+# CHECK-NEXT: 35.00  35.00  	divps	(%rax), %xmm2
+# CHECK-NEXT: 17.00  17.00  	divss	%xmm0, %xmm2
+# CHECK-NEXT: 17.00  17.00  	divss	(%rax), %xmm2
+# CHECK-NEXT: 2.50   2.50   	ldmxcsr	(%rax)
+# CHECK-NEXT: 1.00    -     	maskmovq	%mm0, %mm1
+# CHECK-NEXT: 5.00    -     	maxps	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	maxps	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	maxss	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	maxss	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	minps	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	minps	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	minss	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	minss	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	movaps	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	movaps	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movaps	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	movhlps	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	movlhps	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	movhps	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movhps	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	movlps	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movlps	(%rax), %xmm2
+# CHECK-NEXT: 3.00    -     	movmskps	%xmm0, %ecx
+# CHECK-NEXT: 1.00    -     	movntps	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movntq	%mm0, (%rax)
+# CHECK-NEXT: 0.50   0.50   	movss	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	movss	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movss	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	movups	%xmm0, %xmm2
+# CHECK-NEXT: 1.00   1.00   	movups	%xmm0, (%rax)
+# CHECK-NEXT: 1.50   1.50   	movups	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	mulps	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	mulps	(%rax), %xmm2
+# CHECK-NEXT: 4.00    -     	mulss	%xmm0, %xmm2
+# CHECK-NEXT: 4.00    -     	mulss	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	orps	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	orps	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pavgb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pavgb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pavgw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pavgw	(%rax), %mm2
+# CHECK-NEXT: 2.00   2.00   	pextrw	$1, %mm0, %ecx
+# CHECK-NEXT: 1.00    -     	pinsrw	$1, %eax, %mm2
+# CHECK-NEXT: 1.00    -     	pinsrw	$1, (%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pmaxsw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pmaxsw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pmaxub	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pmaxub	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pminsw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pminsw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pminub	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pminub	(%rax), %mm2
+# CHECK-NEXT: 3.00    -     	pmovmskb	%xmm0, %ecx
+# CHECK-NEXT: 4.00    -     	pmulhuw	%mm0, %mm2
+# CHECK-NEXT: 4.00    -     	pmulhuw	(%rax), %mm2
+# CHECK-NEXT: 1.00    -     	prefetcht0	(%rax)
+# CHECK-NEXT: 1.00    -     	prefetcht1	(%rax)
+# CHECK-NEXT: 1.00    -     	prefetcht2	(%rax)
+# CHECK-NEXT: 1.00    -     	prefetchnta	(%rax)
+# CHECK-NEXT: 2.00   2.00   	psadbw	%mm0, %mm2
+# CHECK-NEXT: 2.00   2.00   	psadbw	(%rax), %mm2
+# CHECK-NEXT: 1.00    -     	pshufw	$1, %mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pshufw	$1, (%rax), %mm2
+# CHECK-NEXT: 4.50   4.50   	rcpps	%xmm0, %xmm2
+# CHECK-NEXT: 5.00   5.00   	rcpps	(%rax), %xmm2
+# CHECK-NEXT: 4.00    -     	rcpss	%xmm0, %xmm2
+# CHECK-NEXT: 4.00    -     	rcpss	(%rax), %xmm2
+# CHECK-NEXT: 4.50   4.50   	rsqrtps	%xmm0, %xmm2
+# CHECK-NEXT: 5.00   5.00   	rsqrtps	(%rax), %xmm2
+# CHECK-NEXT: 4.00    -     	rsqrtss	%xmm0, %xmm2
+# CHECK-NEXT: 4.00    -     	rsqrtss	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	sfence
+# CHECK-NEXT: 1.00    -     	shufps	$1, %xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	shufps	$1, (%rax), %xmm2
+# CHECK-NEXT: 35.00  35.00  	sqrtps	%xmm0, %xmm2
+# CHECK-NEXT: 35.00  35.00  	sqrtps	(%rax), %xmm2
+# CHECK-NEXT: 17.00  17.00  	sqrtss	%xmm0, %xmm2
+# CHECK-NEXT: 17.00  17.00  	sqrtss	(%rax), %xmm2
+# CHECK-NEXT: 7.50   7.50   	stmxcsr	(%rax)
+# CHECK-NEXT: 5.00    -     	subps	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	subps	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	subss	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	subss	(%rax), %xmm2
+# CHECK-NEXT: 4.50   4.50   	ucomiss	%xmm0, %xmm1
+# CHECK-NEXT: 5.00   5.00   	ucomiss	(%rax), %xmm1
+# CHECK-NEXT: 1.00    -     	unpckhps	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	unpckhps	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	unpcklps	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	unpcklps	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	xorps	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	xorps	(%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse2.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse2.s?rev=331169&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse2.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse2.s Mon Apr 30 05:05:34 2018
@@ -0,0 +1,944 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s
+
+addpd       %xmm0, %xmm2
+addpd       (%rax), %xmm2
+
+addsd       %xmm0, %xmm2
+addsd       (%rax), %xmm2
+
+addsubpd    %xmm0, %xmm2
+addsubpd    (%rax), %xmm2
+
+andnpd      %xmm0, %xmm2
+andnpd      (%rax), %xmm2
+
+andpd       %xmm0, %xmm2
+andpd       (%rax), %xmm2
+
+clflush     (%rax)
+
+cmppd       $0, %xmm0, %xmm2
+cmppd       $0, (%rax), %xmm2
+
+cmpsd       $0, %xmm0, %xmm2
+cmpsd       $0, (%rax), %xmm2
+
+comisd      %xmm0, %xmm1
+comisd      (%rax), %xmm1
+
+cvtdq2pd    %xmm0, %xmm2
+cvtdq2pd    (%rax), %xmm2
+
+cvtdq2ps    %xmm0, %xmm2
+cvtdq2ps    (%rax), %xmm2
+
+cvtpd2dq    %xmm0, %xmm2
+cvtpd2dq    (%rax), %xmm2
+
+cvtpd2pi    %xmm0, %mm2
+cvtpd2pi    (%rax), %mm2
+
+cvtpd2ps    %xmm0, %xmm2
+cvtpd2ps    (%rax), %xmm2
+
+cvtpi2pd    %mm0, %xmm2
+cvtpi2pd    (%rax), %xmm2
+
+cvtps2dq    %xmm0, %xmm2
+cvtps2dq    (%rax), %xmm2
+
+cvtps2pd    %xmm0, %xmm2
+cvtps2pd    (%rax), %xmm2
+
+cvtsd2si    %xmm0, %ecx
+cvtsd2si    %xmm0, %rcx
+cvtsd2si    (%rax), %ecx
+cvtsd2si    (%rax), %rcx
+
+cvtsd2ss    %xmm0, %xmm2
+cvtsd2ss    (%rax), %xmm2
+
+cvtsi2sd    %ecx, %xmm2
+cvtsi2sd    %rcx, %xmm2
+cvtsi2sd    (%rax), %xmm2
+cvtsi2sd    (%rax), %xmm2
+
+cvtss2sd    %xmm0, %xmm2
+cvtss2sd    (%rax), %xmm2
+
+cvttpd2dq   %xmm0, %xmm2
+cvttpd2dq   (%rax), %xmm2
+
+cvttpd2pi   %xmm0, %mm2
+cvttpd2pi   (%rax), %mm2
+
+cvttps2dq   %xmm0, %xmm2
+cvttps2dq   (%rax), %xmm2
+
+cvttsd2si   %xmm0, %ecx
+cvttsd2si   %xmm0, %rcx
+cvttsd2si   (%rax), %ecx
+cvttsd2si   (%rax), %rcx
+
+divpd       %xmm0, %xmm2
+divpd       (%rax), %xmm2
+
+divsd       %xmm0, %xmm2
+divsd       (%rax), %xmm2
+
+lfence
+
+maskmovdqu  %xmm0, %xmm1
+
+maxpd       %xmm0, %xmm2
+maxpd       (%rax), %xmm2
+
+maxsd       %xmm0, %xmm2
+maxsd       (%rax), %xmm2
+
+minpd       %xmm0, %xmm2
+minpd       (%rax), %xmm2
+
+minsd       %xmm0, %xmm2
+minsd       (%rax), %xmm2
+
+movapd      %xmm0, %xmm2
+movapd      %xmm0, (%rax)
+movapd      (%rax), %xmm2
+
+movd        %eax, %xmm2
+movd        (%rax), %xmm2
+
+movd        %xmm0, %ecx
+movd        %xmm0, (%rax)
+
+movdqa      %xmm0, %xmm2
+movdqa      %xmm0, (%rax)
+movdqa      (%rax), %xmm2
+
+movdqu      %xmm0, %xmm2
+movdqu      %xmm0, (%rax)
+movdqu      (%rax), %xmm2
+
+movdq2q     %xmm0, %mm2
+
+movhpd      %xmm0, (%rax)
+movhpd      (%rax), %xmm2
+
+movlpd      %xmm0, (%rax)
+movlpd      (%rax), %xmm2
+
+movmskpd    %xmm0, %rcx
+
+movntdq     %xmm0, (%rax)
+movntpd     %xmm0, (%rax)
+
+movq        %xmm0, %xmm2
+
+movq        %rax, %xmm2
+movq        (%rax), %xmm2
+
+movq        %xmm0, %rcx
+movq        %xmm0, (%rax)
+
+movq2dq     %mm0, %xmm2
+
+movsd       %xmm0, %xmm2
+movsd       %xmm0, (%rax)
+movsd       (%rax), %xmm2
+
+movupd      %xmm0, %xmm2
+movupd      %xmm0, (%rax)
+movupd      (%rax), %xmm2
+
+mulpd       %xmm0, %xmm2
+mulpd       (%rax), %xmm2
+
+mulsd       %xmm0, %xmm2
+mulsd       (%rax), %xmm2
+
+orpd        %xmm0, %xmm2
+orpd        (%rax), %xmm2
+
+packssdw    %xmm0, %xmm2
+packssdw    (%rax), %xmm2
+
+packsswb    %xmm0, %xmm2
+packsswb    (%rax), %xmm2
+
+packuswb    %xmm0, %xmm2
+packuswb    (%rax), %xmm2
+
+paddb       %xmm0, %xmm2
+paddb       (%rax), %xmm2
+
+paddd       %xmm0, %xmm2
+paddd       (%rax), %xmm2
+
+paddq       %mm0, %mm2
+paddq       (%rax), %mm2
+
+paddq       %xmm0, %xmm2
+paddq       (%rax), %xmm2
+
+paddsb      %xmm0, %xmm2
+paddsb      (%rax), %xmm2
+
+paddsw      %xmm0, %xmm2
+paddsw      (%rax), %xmm2
+
+paddusb     %xmm0, %xmm2
+paddusb     (%rax), %xmm2
+
+paddusw     %xmm0, %xmm2
+paddusw     (%rax), %xmm2
+
+paddw       %xmm0, %xmm2
+paddw       (%rax), %xmm2
+
+pand        %xmm0, %xmm2
+pand        (%rax), %xmm2
+
+pandn       %xmm0, %xmm2
+pandn       (%rax), %xmm2
+
+pavgb       %xmm0, %xmm2
+pavgb       (%rax), %xmm2
+
+pavgw       %xmm0, %xmm2
+pavgw       (%rax), %xmm2
+
+pcmpeqb     %xmm0, %xmm2
+pcmpeqb     (%rax), %xmm2
+
+pcmpeqd     %xmm0, %xmm2
+pcmpeqd     (%rax), %xmm2
+
+pcmpeqw     %xmm0, %xmm2
+pcmpeqw     (%rax), %xmm2
+
+pcmpgtb     %xmm0, %xmm2
+pcmpgtb     (%rax), %xmm2
+
+pcmpgtd     %xmm0, %xmm2
+pcmpgtd     (%rax), %xmm2
+
+pcmpgtw     %xmm0, %xmm2
+pcmpgtw     (%rax), %xmm2
+
+pextrw      $1, %xmm0, %rcx
+
+pmaddwd     %xmm0, %xmm2
+pmaddwd     (%rax), %xmm2
+
+pmaxsw      %xmm0, %xmm2
+pmaxsw      (%rax), %xmm2
+
+pmaxub      %xmm0, %xmm2
+pmaxub      (%rax), %xmm2
+
+pminsw      %xmm0, %xmm2
+pminsw      (%rax), %xmm2
+
+pminub      %xmm0, %xmm2
+pminub      (%rax), %xmm2
+
+pmovmskb    %xmm0, %rcx
+
+pmulhuw     %xmm0, %xmm2
+pmulhuw     (%rax), %xmm2
+
+pmulhw      %xmm0, %xmm2
+pmulhw      (%rax), %xmm2
+
+pmullw      %xmm0, %xmm2
+pmullw      (%rax), %xmm2
+
+pmuludq     %mm0, %mm2
+pmuludq     (%rax), %mm2
+
+pmuludq     %xmm0, %xmm2
+pmuludq     (%rax), %xmm2
+
+por         %xmm0, %xmm2
+por         (%rax), %xmm2
+
+psadbw      %xmm0, %xmm2
+psadbw      (%rax), %xmm2
+
+pshufd      $1, %xmm0, %xmm2
+pshufd      $1, (%rax), %xmm2
+
+pshufhw     $1, %xmm0, %xmm2
+pshufhw     $1, (%rax), %xmm2
+
+pshuflw     $1, %xmm0, %xmm2
+pshuflw     $1, (%rax), %xmm2
+
+pslld       $1, %xmm2
+pslld       %xmm0, %xmm2
+pslld       (%rax), %xmm2
+
+pslldq      $1, %xmm2
+
+psllq       $1, %xmm2
+psllq       %xmm0, %xmm2
+psllq       (%rax), %xmm2
+
+psllw       $1, %xmm2
+psllw       %xmm0, %xmm2
+psllw       (%rax), %xmm2
+
+psrad       $1, %xmm2
+psrad       %xmm0, %xmm2
+psrad       (%rax), %xmm2
+
+psraw       $1, %xmm2
+psraw       %xmm0, %xmm2
+psraw       (%rax), %xmm2
+
+psrld       $1, %xmm2
+psrld       %xmm0, %xmm2
+psrld       (%rax), %xmm2
+
+psrldq      $1, %xmm2
+
+psrlq       $1, %xmm2
+psrlq       %xmm0, %xmm2
+psrlq       (%rax), %xmm2
+
+psrlw       $1, %xmm2
+psrlw       %xmm0, %xmm2
+psrlw       (%rax), %xmm2
+
+psubb       %xmm0, %xmm2
+psubb       (%rax), %xmm2
+
+psubd       %xmm0, %xmm2
+psubd       (%rax), %xmm2
+
+psubq       %mm0, %mm2
+psubq       (%rax), %mm2
+
+psubq       %xmm0, %xmm2
+psubq       (%rax), %xmm2
+
+psubsb      %xmm0, %xmm2
+psubsb      (%rax), %xmm2
+
+psubsw      %xmm0, %xmm2
+psubsw      (%rax), %xmm2
+
+psubusb     %xmm0, %xmm2
+psubusb     (%rax), %xmm2
+
+psubusw     %xmm0, %xmm2
+psubusw     (%rax), %xmm2
+
+psubw       %xmm0, %xmm2
+psubw       (%rax), %xmm2
+
+punpckhbw   %xmm0, %xmm2
+punpckhbw   (%rax), %xmm2
+
+punpckhdq   %xmm0, %xmm2
+punpckhdq   (%rax), %xmm2
+
+punpckhqdq  %xmm0, %xmm2
+punpckhqdq  (%rax), %xmm2
+
+punpckhwd   %xmm0, %xmm2
+punpckhwd   (%rax), %xmm2
+
+punpcklbw   %xmm0, %xmm2
+punpcklbw   (%rax), %xmm2
+
+punpckldq   %xmm0, %xmm2
+punpckldq   (%rax), %xmm2
+
+punpcklqdq  %xmm0, %xmm2
+punpcklqdq  (%rax), %xmm2
+
+punpcklwd   %xmm0, %xmm2
+punpcklwd   (%rax), %xmm2
+
+pxor        %xmm0, %xmm2
+pxor        (%rax), %xmm2
+
+shufpd      $1, %xmm0, %xmm2
+shufpd      $1, (%rax), %xmm2
+
+sqrtpd      %xmm0, %xmm2
+sqrtpd      (%rax), %xmm2
+
+sqrtsd      %xmm0, %xmm2
+sqrtsd      (%rax), %xmm2
+
+subpd       %xmm0, %xmm2
+subpd       (%rax), %xmm2
+
+subsd       %xmm0, %xmm2
+subsd       (%rax), %xmm2
+
+ucomisd     %xmm0, %xmm1
+ucomisd     (%rax), %xmm1
+
+unpckhpd    %xmm0, %xmm2
+unpckhpd    (%rax), %xmm2
+
+unpcklpd    %xmm0, %xmm2
+unpcklpd    (%rax), %xmm2
+
+xorpd       %xmm0, %xmm2
+xorpd       (%rax), %xmm2
+
+# 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
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      6     3.00                    	addpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	addpd	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	addsd	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	addsd	(%rax), %xmm2
+# CHECK-NEXT:  1      6     3.00                    	addsubpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      6     3.00    *               	addsubpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	andnpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	andnpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	andpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	andpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00    *      *      * 	clflush	(%rax)
+# CHECK-NEXT:  1      6     3.00                    	cmppd	$0, %xmm0, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	cmppd	$0, (%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	cmpsd	$0, %xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	cmpsd	$0, (%rax), %xmm2
+# CHECK-NEXT:  1      9     4.50                    	comisd	%xmm0, %xmm1
+# CHECK-NEXT:  1      10    5.00    *               	comisd	(%rax), %xmm1
+# CHECK-NEXT:  1      7     3.50                    	cvtdq2pd	%xmm0, %xmm2
+# CHECK-NEXT:  1      8     4.00    *               	cvtdq2pd	(%rax), %xmm2
+# CHECK-NEXT:  1      6     3.00                    	cvtdq2ps	%xmm0, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	cvtdq2ps	(%rax), %xmm2
+# CHECK-NEXT:  1      7     3.50                    	cvtpd2dq	%xmm0, %xmm2
+# CHECK-NEXT:  1      8     4.00    *               	cvtpd2dq	(%rax), %xmm2
+# CHECK-NEXT:  1      7     3.50                    	cvtpd2pi	%xmm0, %mm2
+# CHECK-NEXT:  1      8     4.00    *               	cvtpd2pi	(%rax), %mm2
+# CHECK-NEXT:  1      7     3.50                    	cvtpd2ps	%xmm0, %xmm2
+# CHECK-NEXT:  1      8     4.00    *               	cvtpd2ps	(%rax), %xmm2
+# CHECK-NEXT:  1      7     3.50                    	cvtpi2pd	%mm0, %xmm2
+# CHECK-NEXT:  1      8     4.00    *               	cvtpi2pd	(%rax), %xmm2
+# CHECK-NEXT:  1      6     3.00                    	cvtps2dq	%xmm0, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	cvtps2dq	(%rax), %xmm2
+# CHECK-NEXT:  1      7     3.50                    	cvtps2pd	%xmm0, %xmm2
+# CHECK-NEXT:  1      8     4.00    *               	cvtps2pd	(%rax), %xmm2
+# CHECK-NEXT:  1      8     4.00                    	cvtsd2si	%xmm0, %ecx
+# CHECK-NEXT:  1      8     4.00                    	cvtsd2si	%xmm0, %rcx
+# CHECK-NEXT:  1      9     4.50    *               	cvtsd2si	(%rax), %ecx
+# CHECK-NEXT:  1      9     4.50    *               	cvtsd2si	(%rax), %rcx
+# CHECK-NEXT:  1      6     3.00                    	cvtsd2ss	%xmm0, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	cvtsd2ss	(%rax), %xmm2
+# CHECK-NEXT:  1      6     3.00                    	cvtsi2sdl	%ecx, %xmm2
+# CHECK-NEXT:  1      6     3.00                    	cvtsi2sdq	%rcx, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	cvtsi2sdl	(%rax), %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	cvtsi2sdl	(%rax), %xmm2
+# CHECK-NEXT:  1      6     3.00                    	cvtss2sd	%xmm0, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	cvtss2sd	(%rax), %xmm2
+# CHECK-NEXT:  1      7     3.50                    	cvttpd2dq	%xmm0, %xmm2
+# CHECK-NEXT:  1      8     4.00    *               	cvttpd2dq	(%rax), %xmm2
+# CHECK-NEXT:  1      7     3.50                    	cvttpd2pi	%xmm0, %mm2
+# CHECK-NEXT:  1      8     4.00    *               	cvttpd2pi	(%rax), %mm2
+# CHECK-NEXT:  1      6     3.00                    	cvttps2dq	%xmm0, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	cvttps2dq	(%rax), %xmm2
+# CHECK-NEXT:  1      8     4.00                    	cvttsd2si	%xmm0, %ecx
+# CHECK-NEXT:  1      8     4.00                    	cvttsd2si	%xmm0, %rcx
+# CHECK-NEXT:  1      9     4.50    *               	cvttsd2si	(%rax), %ecx
+# CHECK-NEXT:  1      9     4.50    *               	cvttsd2si	(%rax), %rcx
+# CHECK-NEXT:  1      125   62.50                   	divpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      125   62.50   *               	divpd	(%rax), %xmm2
+# CHECK-NEXT:  1      62    31.00                   	divsd	%xmm0, %xmm2
+# CHECK-NEXT:  1      62    31.00   *               	divsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50    *      *      * 	lfence
+# CHECK-NEXT:  1      2     1.00    *      *      * 	maskmovdqu	%xmm0, %xmm1
+# CHECK-NEXT:  1      6     3.00                    	maxpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	maxpd	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	maxsd	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	maxsd	(%rax), %xmm2
+# CHECK-NEXT:  1      6     3.00                    	minpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	minpd	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	minsd	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	minsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	movapd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movapd	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	movapd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movd	%eax, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	movd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     3.00                    	movd	%xmm0, %ecx
+# CHECK-NEXT:  1      1     1.00           *        	movd	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	movdqa	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movdqa	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	movdqa	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	movdqu	%xmm0, %xmm2
+# CHECK-NEXT:  1      2     1.00           *        	movdqu	%xmm0, (%rax)
+# CHECK-NEXT:  1      3     1.50    *               	movdqu	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	movdq2q	%xmm0, %mm2
+# CHECK-NEXT:  1      1     1.00           *        	movhpd	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	movhpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movlpd	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	movlpd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     3.00                    	movmskpd	%xmm0, %ecx
+# CHECK-NEXT:  1      1     1.00           *        	movntdq	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00           *        	movntpd	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	movq	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movq	%rax, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	movq	(%rax), %xmm2
+# CHECK-NEXT:  1      3     3.00                    	movq	%xmm0, %rcx
+# CHECK-NEXT:  1      1     1.00           *        	movq	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	movq2dq	%mm0, %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movsd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movsd	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	movsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	movupd	%xmm0, %xmm2
+# CHECK-NEXT:  1      2     1.00           *        	movupd	%xmm0, (%rax)
+# CHECK-NEXT:  1      3     1.50    *               	movupd	(%rax), %xmm2
+# CHECK-NEXT:  1      9     4.50                    	mulpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      10    5.00    *               	mulpd	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	mulsd	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	mulsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	orpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	orpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	packssdw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	packssdw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	packsswb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	packsswb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	packuswb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	packuswb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	paddb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	paddd	(%rax), %xmm2
+# CHECK-NEXT:  1      2     1.00                    	paddq	%mm0, %mm2
+# CHECK-NEXT:  1      3     1.50    *               	paddq	(%rax), %mm2
+# CHECK-NEXT:  1      2     1.00                    	paddq	%xmm0, %xmm2
+# CHECK-NEXT:  1      3     1.50    *               	paddq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddsb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	paddsb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	paddsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddusb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	paddusb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddusw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	paddusw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	paddw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pand	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pand	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pandn	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pandn	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pavgb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pavgb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pavgw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pavgw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpeqb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpeqb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpeqd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpeqd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpeqw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpeqw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpgtb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpgtb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpgtd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpgtd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpgtw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pcmpgtw	(%rax), %xmm2
+# CHECK-NEXT:  1      4     2.00                    	pextrw	$1, %xmm0, %ecx
+# CHECK-NEXT:  1      5     5.00                    	pmaddwd	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	pmaddwd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmaxsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pmaxsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmaxub	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pmaxub	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pminsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pminsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pminub	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pminub	(%rax), %xmm2
+# CHECK-NEXT:  1      3     3.00                    	pmovmskb	%xmm0, %ecx
+# CHECK-NEXT:  1      5     5.00                    	pmulhuw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	pmulhuw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	pmulhw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	pmulhw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	pmullw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	pmullw	(%rax), %xmm2
+# CHECK-NEXT:  1      4     4.00                    	pmuludq	%mm0, %mm2
+# CHECK-NEXT:  1      4     4.00    *               	pmuludq	(%rax), %mm2
+# CHECK-NEXT:  1      5     5.00                    	pmuludq	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	pmuludq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	por	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	por	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	psadbw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	psadbw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	pshufd	$1, %xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pshufd	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	pshufhw	$1, %xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pshufhw	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	pshuflw	$1, %xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pshuflw	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pslld	$1, %xmm2
+# CHECK-NEXT:  1      2     1.00                    	pslld	%xmm0, %xmm2
+# CHECK-NEXT:  1      3     1.50    *               	pslld	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pslldq	$1, %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psllq	$1, %xmm2
+# CHECK-NEXT:  1      2     1.00                    	psllq	%xmm0, %xmm2
+# CHECK-NEXT:  1      3     1.50    *               	psllq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psllw	$1, %xmm2
+# CHECK-NEXT:  1      2     1.00                    	psllw	%xmm0, %xmm2
+# CHECK-NEXT:  1      3     1.50    *               	psllw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psrad	$1, %xmm2
+# CHECK-NEXT:  1      2     1.00                    	psrad	%xmm0, %xmm2
+# CHECK-NEXT:  1      3     1.50    *               	psrad	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psraw	$1, %xmm2
+# CHECK-NEXT:  1      2     1.00                    	psraw	%xmm0, %xmm2
+# CHECK-NEXT:  1      3     1.50    *               	psraw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psrld	$1, %xmm2
+# CHECK-NEXT:  1      2     1.00                    	psrld	%xmm0, %xmm2
+# CHECK-NEXT:  1      3     1.50    *               	psrld	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psrldq	$1, %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psrlq	$1, %xmm2
+# CHECK-NEXT:  1      2     1.00                    	psrlq	%xmm0, %xmm2
+# CHECK-NEXT:  1      3     1.50    *               	psrlq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psrlw	$1, %xmm2
+# CHECK-NEXT:  1      2     1.00                    	psrlw	%xmm0, %xmm2
+# CHECK-NEXT:  1      3     1.50    *               	psrlw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	psubb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	psubd	(%rax), %xmm2
+# CHECK-NEXT:  1      2     1.00                    	psubq	%mm0, %mm2
+# CHECK-NEXT:  1      3     1.50    *               	psubq	(%rax), %mm2
+# CHECK-NEXT:  1      2     1.00                    	psubq	%xmm0, %xmm2
+# CHECK-NEXT:  1      3     1.50    *               	psubq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubsb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	psubsb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	psubsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubusb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	psubusb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubusw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	psubusw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	psubw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	punpckhbw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	punpckhbw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	punpckhdq	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	punpckhdq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	punpckhqdq	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	punpckhqdq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	punpckhwd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	punpckhwd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	punpcklbw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	punpcklbw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	punpckldq	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	punpckldq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	punpcklqdq	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	punpcklqdq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	punpcklwd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	punpcklwd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pxor	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pxor	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	shufpd	$1, %xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	shufpd	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      125   62.50                   	sqrtpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      125   62.50   *               	sqrtpd	(%rax), %xmm2
+# CHECK-NEXT:  1      62    31.00                   	sqrtsd	%xmm0, %xmm2
+# CHECK-NEXT:  1      62    31.00   *               	sqrtsd	(%rax), %xmm2
+# CHECK-NEXT:  1      6     3.00                    	subpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      7     3.50    *               	subpd	(%rax), %xmm2
+# CHECK-NEXT:  1      5     5.00                    	subsd	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	subsd	(%rax), %xmm2
+# CHECK-NEXT:  1      9     4.50                    	ucomisd	%xmm0, %xmm1
+# CHECK-NEXT:  1      10    5.00    *               	ucomisd	(%rax), %xmm1
+# CHECK-NEXT:  1      1     1.00                    	unpckhpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	unpckhpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	unpcklpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	unpcklpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	xorpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	xorpd	(%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - AtomPort0
+# CHECK-NEXT: [1] - AtomPort1
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]
+# CHECK-NEXT: 872.50 644.50
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    	Instructions:
+# CHECK-NEXT: 3.00   3.00   	addpd	%xmm0, %xmm2
+# CHECK-NEXT: 3.50   3.50   	addpd	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	addsd	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	addsd	(%rax), %xmm2
+# CHECK-NEXT: 3.00   3.00   	addsubpd	%xmm0, %xmm2
+# CHECK-NEXT: 3.00   3.00   	addsubpd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	andnpd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	andnpd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	andpd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	andpd	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	clflush	(%rax)
+# CHECK-NEXT: 3.00   3.00   	cmppd	$0, %xmm0, %xmm2
+# CHECK-NEXT: 3.50   3.50   	cmppd	$0, (%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	cmpsd	$0, %xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	cmpsd	$0, (%rax), %xmm2
+# CHECK-NEXT: 4.50   4.50   	comisd	%xmm0, %xmm1
+# CHECK-NEXT: 5.00   5.00   	comisd	(%rax), %xmm1
+# CHECK-NEXT: 3.50   3.50   	cvtdq2pd	%xmm0, %xmm2
+# CHECK-NEXT: 4.00   4.00   	cvtdq2pd	(%rax), %xmm2
+# CHECK-NEXT: 3.00   3.00   	cvtdq2ps	%xmm0, %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtdq2ps	(%rax), %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtpd2dq	%xmm0, %xmm2
+# CHECK-NEXT: 4.00   4.00   	cvtpd2dq	(%rax), %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtpd2pi	%xmm0, %mm2
+# CHECK-NEXT: 4.00   4.00   	cvtpd2pi	(%rax), %mm2
+# CHECK-NEXT: 3.50   3.50   	cvtpd2ps	%xmm0, %xmm2
+# CHECK-NEXT: 4.00   4.00   	cvtpd2ps	(%rax), %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtpi2pd	%mm0, %xmm2
+# CHECK-NEXT: 4.00   4.00   	cvtpi2pd	(%rax), %xmm2
+# CHECK-NEXT: 3.00   3.00   	cvtps2dq	%xmm0, %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtps2dq	(%rax), %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtps2pd	%xmm0, %xmm2
+# CHECK-NEXT: 4.00   4.00   	cvtps2pd	(%rax), %xmm2
+# CHECK-NEXT: 4.00   4.00   	cvtsd2si	%xmm0, %ecx
+# CHECK-NEXT: 4.00   4.00   	cvtsd2si	%xmm0, %rcx
+# CHECK-NEXT: 4.50   4.50   	cvtsd2si	(%rax), %ecx
+# CHECK-NEXT: 4.50   4.50   	cvtsd2si	(%rax), %rcx
+# CHECK-NEXT: 3.00   3.00   	cvtsd2ss	%xmm0, %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtsd2ss	(%rax), %xmm2
+# CHECK-NEXT: 3.00   3.00   	cvtsi2sdl	%ecx, %xmm2
+# CHECK-NEXT: 3.00   3.00   	cvtsi2sdq	%rcx, %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtsi2sdl	(%rax), %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtsi2sdl	(%rax), %xmm2
+# CHECK-NEXT: 3.00   3.00   	cvtss2sd	%xmm0, %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvtss2sd	(%rax), %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvttpd2dq	%xmm0, %xmm2
+# CHECK-NEXT: 4.00   4.00   	cvttpd2dq	(%rax), %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvttpd2pi	%xmm0, %mm2
+# CHECK-NEXT: 4.00   4.00   	cvttpd2pi	(%rax), %mm2
+# CHECK-NEXT: 3.00   3.00   	cvttps2dq	%xmm0, %xmm2
+# CHECK-NEXT: 3.50   3.50   	cvttps2dq	(%rax), %xmm2
+# CHECK-NEXT: 4.00   4.00   	cvttsd2si	%xmm0, %ecx
+# CHECK-NEXT: 4.00   4.00   	cvttsd2si	%xmm0, %rcx
+# CHECK-NEXT: 4.50   4.50   	cvttsd2si	(%rax), %ecx
+# CHECK-NEXT: 4.50   4.50   	cvttsd2si	(%rax), %rcx
+# CHECK-NEXT: 62.50  62.50  	divpd	%xmm0, %xmm2
+# CHECK-NEXT: 62.50  62.50  	divpd	(%rax), %xmm2
+# CHECK-NEXT: 31.00  31.00  	divsd	%xmm0, %xmm2
+# CHECK-NEXT: 31.00  31.00  	divsd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	lfence
+# CHECK-NEXT: 1.00   1.00   	maskmovdqu	%xmm0, %xmm1
+# CHECK-NEXT: 3.00   3.00   	maxpd	%xmm0, %xmm2
+# CHECK-NEXT: 3.50   3.50   	maxpd	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	maxsd	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	maxsd	(%rax), %xmm2
+# CHECK-NEXT: 3.00   3.00   	minpd	%xmm0, %xmm2
+# CHECK-NEXT: 3.50   3.50   	minpd	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	minsd	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	minsd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	movapd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	movapd	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movapd	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	movd	%eax, %xmm2
+# CHECK-NEXT: 1.00    -     	movd	(%rax), %xmm2
+# CHECK-NEXT: 3.00    -     	movd	%xmm0, %ecx
+# CHECK-NEXT: 1.00    -     	movd	%xmm0, (%rax)
+# CHECK-NEXT: 0.50   0.50   	movdqa	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	movdqa	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movdqa	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	movdqu	%xmm0, %xmm2
+# CHECK-NEXT: 1.00   1.00   	movdqu	%xmm0, (%rax)
+# CHECK-NEXT: 1.50   1.50   	movdqu	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	movdq2q	%xmm0, %mm2
+# CHECK-NEXT: 1.00    -     	movhpd	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movhpd	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	movlpd	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movlpd	(%rax), %xmm2
+# CHECK-NEXT: 3.00    -     	movmskpd	%xmm0, %ecx
+# CHECK-NEXT: 1.00    -     	movntdq	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movntpd	%xmm0, (%rax)
+# CHECK-NEXT: 0.50   0.50   	movq	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	movq	%rax, %xmm2
+# CHECK-NEXT: 1.00    -     	movq	(%rax), %xmm2
+# CHECK-NEXT: 3.00    -     	movq	%xmm0, %rcx
+# CHECK-NEXT: 1.00    -     	movq	%xmm0, (%rax)
+# CHECK-NEXT: 0.50   0.50   	movq2dq	%mm0, %xmm2
+# CHECK-NEXT: 1.00    -     	movsd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	movsd	%xmm0, (%rax)
+# CHECK-NEXT: 1.00    -     	movsd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	movupd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00   1.00   	movupd	%xmm0, (%rax)
+# CHECK-NEXT: 1.50   1.50   	movupd	(%rax), %xmm2
+# CHECK-NEXT: 4.50   4.50   	mulpd	%xmm0, %xmm2
+# CHECK-NEXT: 5.00   5.00   	mulpd	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	mulsd	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	mulsd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	orpd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	orpd	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	packssdw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	packssdw	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	packsswb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	packsswb	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	packuswb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	packuswb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	paddb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	paddb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	paddd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	paddd	(%rax), %xmm2
+# CHECK-NEXT: 1.00   1.00   	paddq	%mm0, %mm2
+# CHECK-NEXT: 1.50   1.50   	paddq	(%rax), %mm2
+# CHECK-NEXT: 1.00   1.00   	paddq	%xmm0, %xmm2
+# CHECK-NEXT: 1.50   1.50   	paddq	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	paddsb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	paddsb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	paddsw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	paddsw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	paddusb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	paddusb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	paddusw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	paddusw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	paddw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	paddw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pand	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pand	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pandn	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pandn	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pavgb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pavgb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pavgw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pavgw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pcmpeqb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pcmpeqb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pcmpeqd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pcmpeqd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pcmpeqw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pcmpeqw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pcmpgtb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pcmpgtb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pcmpgtd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pcmpgtd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pcmpgtw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pcmpgtw	(%rax), %xmm2
+# CHECK-NEXT: 2.00   2.00   	pextrw	$1, %xmm0, %ecx
+# CHECK-NEXT: 5.00    -     	pmaddwd	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	pmaddwd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pmaxsw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pmaxsw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pmaxub	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pmaxub	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pminsw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pminsw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pminub	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pminub	(%rax), %xmm2
+# CHECK-NEXT: 3.00    -     	pmovmskb	%xmm0, %ecx
+# CHECK-NEXT: 5.00    -     	pmulhuw	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	pmulhuw	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	pmulhw	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	pmulhw	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	pmullw	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	pmullw	(%rax), %xmm2
+# CHECK-NEXT: 4.00    -     	pmuludq	%mm0, %mm2
+# CHECK-NEXT: 4.00    -     	pmuludq	(%rax), %mm2
+# CHECK-NEXT: 5.00    -     	pmuludq	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	pmuludq	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	por	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	por	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	psadbw	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	psadbw	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	pshufd	$1, %xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pshufd	$1, (%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	pshufhw	$1, %xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pshufhw	$1, (%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	pshuflw	$1, %xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pshuflw	$1, (%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pslld	$1, %xmm2
+# CHECK-NEXT: 1.00   1.00   	pslld	%xmm0, %xmm2
+# CHECK-NEXT: 1.50   1.50   	pslld	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pslldq	$1, %xmm2
+# CHECK-NEXT: 0.50   0.50   	psllq	$1, %xmm2
+# CHECK-NEXT: 1.00   1.00   	psllq	%xmm0, %xmm2
+# CHECK-NEXT: 1.50   1.50   	psllq	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psllw	$1, %xmm2
+# CHECK-NEXT: 1.00   1.00   	psllw	%xmm0, %xmm2
+# CHECK-NEXT: 1.50   1.50   	psllw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psrad	$1, %xmm2
+# CHECK-NEXT: 1.00   1.00   	psrad	%xmm0, %xmm2
+# CHECK-NEXT: 1.50   1.50   	psrad	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psraw	$1, %xmm2
+# CHECK-NEXT: 1.00   1.00   	psraw	%xmm0, %xmm2
+# CHECK-NEXT: 1.50   1.50   	psraw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psrld	$1, %xmm2
+# CHECK-NEXT: 1.00   1.00   	psrld	%xmm0, %xmm2
+# CHECK-NEXT: 1.50   1.50   	psrld	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psrldq	$1, %xmm2
+# CHECK-NEXT: 0.50   0.50   	psrlq	$1, %xmm2
+# CHECK-NEXT: 1.00   1.00   	psrlq	%xmm0, %xmm2
+# CHECK-NEXT: 1.50   1.50   	psrlq	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psrlw	$1, %xmm2
+# CHECK-NEXT: 1.00   1.00   	psrlw	%xmm0, %xmm2
+# CHECK-NEXT: 1.50   1.50   	psrlw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psubb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	psubb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psubd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	psubd	(%rax), %xmm2
+# CHECK-NEXT: 1.00   1.00   	psubq	%mm0, %mm2
+# CHECK-NEXT: 1.50   1.50   	psubq	(%rax), %mm2
+# CHECK-NEXT: 1.00   1.00   	psubq	%xmm0, %xmm2
+# CHECK-NEXT: 1.50   1.50   	psubq	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psubsb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	psubsb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psubsw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	psubsw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psubusb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	psubusb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psubusw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	psubusw	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psubw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	psubw	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	punpckhbw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	punpckhbw	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	punpckhdq	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	punpckhdq	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	punpckhqdq	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	punpckhqdq	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	punpckhwd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	punpckhwd	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	punpcklbw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	punpcklbw	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	punpckldq	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	punpckldq	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	punpcklqdq	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	punpcklqdq	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	punpcklwd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	punpcklwd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pxor	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pxor	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	shufpd	$1, %xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	shufpd	$1, (%rax), %xmm2
+# CHECK-NEXT: 62.50  62.50  	sqrtpd	%xmm0, %xmm2
+# CHECK-NEXT: 62.50  62.50  	sqrtpd	(%rax), %xmm2
+# CHECK-NEXT: 31.00  31.00  	sqrtsd	%xmm0, %xmm2
+# CHECK-NEXT: 31.00  31.00  	sqrtsd	(%rax), %xmm2
+# CHECK-NEXT: 3.00   3.00   	subpd	%xmm0, %xmm2
+# CHECK-NEXT: 3.50   3.50   	subpd	(%rax), %xmm2
+# CHECK-NEXT: 5.00    -     	subsd	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	subsd	(%rax), %xmm2
+# CHECK-NEXT: 4.50   4.50   	ucomisd	%xmm0, %xmm1
+# CHECK-NEXT: 5.00   5.00   	ucomisd	(%rax), %xmm1
+# CHECK-NEXT: 1.00    -     	unpckhpd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	unpckhpd	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	unpcklpd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	unpcklpd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	xorpd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	xorpd	(%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse3.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse3.s?rev=331169&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse3.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse3.s Mon Apr 30 05:05:34 2018
@@ -0,0 +1,97 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=slm -instruction-tables < %s | FileCheck %s
+
+addsubpd  %xmm0, %xmm2
+addsubpd  (%rax),  %xmm2
+
+addsubps  %xmm0, %xmm2
+addsubps  (%rax), %xmm2
+
+haddpd    %xmm0, %xmm2
+haddpd    (%rax), %xmm2
+
+haddps    %xmm0, %xmm2
+haddps    (%rax), %xmm2
+
+hsubpd    %xmm0, %xmm2
+hsubpd    (%rax), %xmm2
+
+hsubps    %xmm0, %xmm2
+hsubps    (%rax), %xmm2
+
+lddqu     (%rax), %xmm2
+
+movddup   %xmm0, %xmm2
+movddup   (%rax), %xmm2
+
+movshdup  %xmm0, %xmm2
+movshdup  (%rax), %xmm2
+
+movsldup  %xmm0, %xmm2
+movsldup  (%rax), %xmm2
+
+# 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
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      3     1.00                    	addsubpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      6     1.00    *               	addsubpd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	addsubps	%xmm0, %xmm2
+# CHECK-NEXT:  1      6     1.00    *               	addsubps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	haddpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      6     1.00    *               	haddpd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	haddps	%xmm0, %xmm2
+# CHECK-NEXT:  1      6     1.00    *               	haddps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	hsubpd	%xmm0, %xmm2
+# CHECK-NEXT:  1      6     1.00    *               	hsubpd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	hsubps	%xmm0, %xmm2
+# CHECK-NEXT:  1      6     1.00    *               	hsubps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00    *               	lddqu	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movddup	%xmm0, %xmm2
+# CHECK-NEXT:  1      4     1.00    *               	movddup	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movshdup	%xmm0, %xmm2
+# CHECK-NEXT:  1      4     1.00    *               	movshdup	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movsldup	%xmm0, %xmm2
+# CHECK-NEXT:  1      4     1.00    *               	movsldup	(%rax), %xmm2
+
+# 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:  -      -      -     14.00  12.00   -      -     10.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    	Instructions:
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	addsubpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	addsubpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	addsubps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	addsubps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00   1.00    -      -      -     	haddpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00   1.00    -      -     1.00   	haddpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00   1.00    -      -      -     	haddps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00   1.00    -      -     1.00   	haddps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00   1.00    -      -      -     	hsubpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00   1.00    -      -     1.00   	hsubpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00   1.00    -      -      -     	hsubps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00   1.00    -      -     1.00   	hsubps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   	lddqu	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	movddup	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -     1.00   	movddup	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	movshdup	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -     1.00   	movshdup	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	movsldup	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -     1.00   	movsldup	(%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-ssse3.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-ssse3.s?rev=331169&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-ssse3.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-ssse3.s Mon Apr 30 05:05:34 2018
@@ -0,0 +1,248 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s
+
+pabsb       %mm0, %mm2
+pabsb       (%rax), %mm2
+
+pabsb       %xmm0, %xmm2
+pabsb       (%rax), %xmm2
+
+pabsd       %mm0, %mm2
+pabsd       (%rax), %mm2
+
+pabsd       %xmm0, %xmm2
+pabsd       (%rax), %xmm2
+
+pabsw       %mm0, %mm2
+pabsw       (%rax), %mm2
+
+pabsw       %xmm0, %xmm2
+pabsw       (%rax), %xmm2
+
+palignr     $1, %mm0, %mm2
+palignr     $1, (%rax), %mm2
+
+palignr     $1, %xmm0, %xmm2
+palignr     $1, (%rax), %xmm2
+
+phaddd      %mm0, %mm2
+phaddd      (%rax), %mm2
+
+phaddd      %xmm0, %xmm2
+phaddd      (%rax), %xmm2
+
+phaddsw     %mm0, %mm2
+phaddsw     (%rax), %mm2
+
+phaddsw     %xmm0, %xmm2
+phaddsw     (%rax), %xmm2
+
+phaddw      %mm0, %mm2
+phaddw      (%rax), %mm2
+
+phaddw      %xmm0, %xmm2
+phaddw      (%rax), %xmm2
+
+phsubd      %mm0, %mm2
+phsubd      (%rax), %mm2
+
+phsubd      %xmm0, %xmm2
+phsubd      (%rax), %xmm2
+
+phsubsw     %mm0, %mm2
+phsubsw     (%rax), %mm2
+
+phsubsw     %xmm0, %xmm2
+phsubsw     (%rax), %xmm2
+
+phsubw      %mm0, %mm2
+phsubw      (%rax), %mm2
+
+phsubw      %xmm0, %xmm2
+phsubw      (%rax), %xmm2
+
+pmaddubsw   %mm0, %mm2
+pmaddubsw   (%rax), %mm2
+
+pmaddubsw   %xmm0, %xmm2
+pmaddubsw   (%rax), %xmm2
+
+pmulhrsw    %mm0, %mm2
+pmulhrsw    (%rax), %mm2
+
+pmulhrsw    %xmm0, %xmm2
+pmulhrsw    (%rax), %xmm2
+
+pshufb      %mm0, %mm2
+pshufb      (%rax), %mm2
+
+pshufb      %xmm0, %xmm2
+pshufb      (%rax), %xmm2
+
+psignb      %mm0, %mm2
+psignb      (%rax), %mm2
+
+psignb      %xmm0, %xmm2
+psignb      (%rax), %xmm2
+
+psignd      %mm0, %mm2
+psignd      (%rax), %mm2
+
+psignd      %xmm0, %xmm2
+psignd      (%rax), %xmm2
+
+psignw      %mm0, %mm2
+psignw      (%rax), %mm2
+
+psignw      %xmm0, %xmm2
+psignw      (%rax), %xmm2
+
+# 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
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      1     0.50                    	pabsb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pabsb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pabsb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pabsb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pabsd	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pabsd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pabsd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pabsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pabsw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pabsw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pabsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	pabsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	palignr	$1, %mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	palignr	$1, (%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	palignr	$1, %xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	palignr	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      3     1.50                    	phaddd	%mm0, %mm2
+# CHECK-NEXT:  1      4     2.00    *               	phaddd	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.50                    	phaddd	%xmm0, %xmm2
+# CHECK-NEXT:  1      4     2.00    *               	phaddd	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.50                    	phaddsw	%mm0, %mm2
+# CHECK-NEXT:  1      6     3.00    *               	phaddsw	(%rax), %mm2
+# CHECK-NEXT:  1      7     3.50                    	phaddsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      8     4.00    *               	phaddsw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.50                    	phaddw	%mm0, %mm2
+# CHECK-NEXT:  1      6     3.00    *               	phaddw	(%rax), %mm2
+# CHECK-NEXT:  1      7     3.50                    	phaddw	%xmm0, %xmm2
+# CHECK-NEXT:  1      8     4.00    *               	phaddw	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.50                    	phsubd	%mm0, %mm2
+# CHECK-NEXT:  1      4     2.00    *               	phsubd	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.50                    	phsubd	%xmm0, %xmm2
+# CHECK-NEXT:  1      4     2.00    *               	phsubd	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.50                    	phsubsw	%mm0, %mm2
+# CHECK-NEXT:  1      6     3.00    *               	phsubsw	(%rax), %mm2
+# CHECK-NEXT:  1      7     3.50                    	phsubsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      8     4.00    *               	phsubsw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.50                    	phsubw	%mm0, %mm2
+# CHECK-NEXT:  1      6     3.00    *               	phsubw	(%rax), %mm2
+# CHECK-NEXT:  1      7     3.50                    	phsubw	%xmm0, %xmm2
+# CHECK-NEXT:  1      8     4.00    *               	phsubw	(%rax), %xmm2
+# CHECK-NEXT:  1      4     4.00                    	pmaddubsw	%mm0, %mm2
+# CHECK-NEXT:  1      4     4.00    *               	pmaddubsw	(%rax), %mm2
+# CHECK-NEXT:  1      5     5.00                    	pmaddubsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	pmaddubsw	(%rax), %xmm2
+# CHECK-NEXT:  1      4     4.00                    	pmulhrsw	%mm0, %mm2
+# CHECK-NEXT:  1      4     4.00    *               	pmulhrsw	(%rax), %mm2
+# CHECK-NEXT:  1      5     5.00                    	pmulhrsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     5.00    *               	pmulhrsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	pshufb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	pshufb	(%rax), %mm2
+# CHECK-NEXT:  1      4     2.00                    	pshufb	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     2.50    *               	pshufb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psignb	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	psignb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psignb	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	psignb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psignd	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	psignd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psignd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	psignd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psignw	%mm0, %mm2
+# CHECK-NEXT:  1      1     1.00    *               	psignw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psignw	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00    *               	psignw	(%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - AtomPort0
+# CHECK-NEXT: [1] - AtomPort1
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]
+# CHECK-NEXT: 130.50 76.50
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    	Instructions:
+# CHECK-NEXT: 0.50   0.50   	pabsb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pabsb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pabsb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pabsb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pabsd	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pabsd	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pabsd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pabsd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	pabsw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pabsw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	pabsw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	pabsw	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	palignr	$1, %mm0, %mm2
+# CHECK-NEXT: 1.00    -     	palignr	$1, (%rax), %mm2
+# CHECK-NEXT: 1.00    -     	palignr	$1, %xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	palignr	$1, (%rax), %xmm2
+# CHECK-NEXT: 1.50   1.50   	phaddd	%mm0, %mm2
+# CHECK-NEXT: 2.00   2.00   	phaddd	(%rax), %mm2
+# CHECK-NEXT: 1.50   1.50   	phaddd	%xmm0, %xmm2
+# CHECK-NEXT: 2.00   2.00   	phaddd	(%rax), %xmm2
+# CHECK-NEXT: 2.50   2.50   	phaddsw	%mm0, %mm2
+# CHECK-NEXT: 3.00   3.00   	phaddsw	(%rax), %mm2
+# CHECK-NEXT: 3.50   3.50   	phaddsw	%xmm0, %xmm2
+# CHECK-NEXT: 4.00   4.00   	phaddsw	(%rax), %xmm2
+# CHECK-NEXT: 2.50   2.50   	phaddw	%mm0, %mm2
+# CHECK-NEXT: 3.00   3.00   	phaddw	(%rax), %mm2
+# CHECK-NEXT: 3.50   3.50   	phaddw	%xmm0, %xmm2
+# CHECK-NEXT: 4.00   4.00   	phaddw	(%rax), %xmm2
+# CHECK-NEXT: 1.50   1.50   	phsubd	%mm0, %mm2
+# CHECK-NEXT: 2.00   2.00   	phsubd	(%rax), %mm2
+# CHECK-NEXT: 1.50   1.50   	phsubd	%xmm0, %xmm2
+# CHECK-NEXT: 2.00   2.00   	phsubd	(%rax), %xmm2
+# CHECK-NEXT: 2.50   2.50   	phsubsw	%mm0, %mm2
+# CHECK-NEXT: 3.00   3.00   	phsubsw	(%rax), %mm2
+# CHECK-NEXT: 3.50   3.50   	phsubsw	%xmm0, %xmm2
+# CHECK-NEXT: 4.00   4.00   	phsubsw	(%rax), %xmm2
+# CHECK-NEXT: 2.50   2.50   	phsubw	%mm0, %mm2
+# CHECK-NEXT: 3.00   3.00   	phsubw	(%rax), %mm2
+# CHECK-NEXT: 3.50   3.50   	phsubw	%xmm0, %xmm2
+# CHECK-NEXT: 4.00   4.00   	phsubw	(%rax), %xmm2
+# CHECK-NEXT: 4.00    -     	pmaddubsw	%mm0, %mm2
+# CHECK-NEXT: 4.00    -     	pmaddubsw	(%rax), %mm2
+# CHECK-NEXT: 5.00    -     	pmaddubsw	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	pmaddubsw	(%rax), %xmm2
+# CHECK-NEXT: 4.00    -     	pmulhrsw	%mm0, %mm2
+# CHECK-NEXT: 4.00    -     	pmulhrsw	(%rax), %mm2
+# CHECK-NEXT: 5.00    -     	pmulhrsw	%xmm0, %xmm2
+# CHECK-NEXT: 5.00    -     	pmulhrsw	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     	pshufb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	pshufb	(%rax), %mm2
+# CHECK-NEXT: 2.00   2.00   	pshufb	%xmm0, %xmm2
+# CHECK-NEXT: 2.50   2.50   	pshufb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psignb	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	psignb	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psignb	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	psignb	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psignd	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	psignd	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psignd	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	psignd	(%rax), %xmm2
+# CHECK-NEXT: 0.50   0.50   	psignw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     	psignw	(%rax), %mm2
+# CHECK-NEXT: 0.50   0.50   	psignw	%xmm0, %xmm2
+# CHECK-NEXT: 1.00    -     	psignw	(%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s?rev=331169&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s Mon Apr 30 05:05:34 2018
@@ -0,0 +1,1138 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s
+
+adcb $7, %al
+adcb $7, %dil
+adcb $7, (%rax)
+adcb %dil, %dil
+adcb %dil, (%rax)
+adcb (%rax), %dil
+
+adcw $511, %ax
+adcw $511, %di
+adcw $511, (%rax)
+adcw $7, %di
+adcw $7, (%rax)
+adcw %di, %di
+adcw %di, (%rax)
+adcw (%rax), %di
+
+adcl $665536, %eax
+adcl $665536, %edi
+adcl $665536, (%rax)
+adcl $7, %edi
+adcl $7, (%rax)
+adcl %edi, %edi
+adcl %edi, (%rax)
+adcl (%rax), %edi
+
+adcq $665536, %rax
+adcq $665536, %rdi
+adcq $665536, (%rax)
+adcq $7, %rdi
+adcq $7, (%rax)
+adcq %rdi, %rdi
+adcq %rdi, (%rax)
+adcq (%rax), %rdi
+
+addb $7, %al
+addb $7, %dil
+addb $7, (%rax)
+addb %dil, %dil
+addb %dil, (%rax)
+addb (%rax), %dil
+
+addw $511, %ax
+addw $511, %di
+addw $511, (%rax)
+addw $7, %di
+addw $7, (%rax)
+addw %di, %di
+addw %di, (%rax)
+addw (%rax), %di
+
+addl $665536, %eax
+addl $665536, %edi
+addl $665536, (%rax)
+addl $7, %edi
+addl $7, (%rax)
+addl %edi, %edi
+addl %edi, (%rax)
+addl (%rax), %edi
+
+addq $665536, %rax
+addq $665536, %rdi
+addq $665536, (%rax)
+addq $7, %rdi
+addq $7, (%rax)
+addq %rdi, %rdi
+addq %rdi, (%rax)
+addq (%rax), %rdi
+
+btw  %si, %di
+btcw %si, %di
+btrw %si, %di
+btsw %si, %di
+btw  %si, (%rax)
+btcw %si, (%rax)
+btrw %si, (%rax)
+btsw %si, (%rax)
+btw  $7, %di
+btcw $7, %di
+btrw $7, %di
+btsw $7, %di
+btw  $7, (%rax)
+btcw $7, (%rax)
+btrw $7, (%rax)
+btsw $7, (%rax)
+
+btl  %esi, %edi
+btcl %esi, %edi
+btrl %esi, %edi
+btsl %esi, %edi
+btl  %esi, (%rax)
+btcl %esi, (%rax)
+btrl %esi, (%rax)
+btsl %esi, (%rax)
+btl  $7, %edi
+btcl $7, %edi
+btrl $7, %edi
+btsl $7, %edi
+btl  $7, (%rax)
+btcl $7, (%rax)
+btrl $7, (%rax)
+btsl $7, (%rax)
+
+btq  %rsi, %rdi
+btcq %rsi, %rdi
+btrq %rsi, %rdi
+btsq %rsi, %rdi
+btq  %rsi, (%rax)
+btcq %rsi, (%rax)
+btrq %rsi, (%rax)
+btsq %rsi, (%rax)
+btq  $7, %rdi
+btcq $7, %rdi
+btrq $7, %rdi
+btsq $7, %rdi
+btq  $7, (%rax)
+btcq $7, (%rax)
+btrq $7, (%rax)
+btsq $7, (%rax)
+
+rclb %dil
+rcrb %dil
+rclb (%rax)
+rcrb (%rax)
+rclb $7, %dil
+rcrb $7, %dil
+rclb $7, (%rax)
+rcrb $7, (%rax)
+rclb %cl, %dil
+rcrb %cl, %dil
+rclb %cl, (%rax)
+rcrb %cl, (%rax)
+
+rclw %di
+rcrw %di
+rclw (%rax)
+rcrw (%rax)
+rclw $7, %di
+rcrw $7, %di
+rclw $7, (%rax)
+rcrw $7, (%rax)
+rclw %cl, %di
+rcrw %cl, %di
+rclw %cl, (%rax)
+rcrw %cl, (%rax)
+
+rcll %edi
+rcrl %edi
+rcll (%rax)
+rcrl (%rax)
+rcll $7, %edi
+rcrl $7, %edi
+rcll $7, (%rax)
+rcrl $7, (%rax)
+rcll %cl, %edi
+rcrl %cl, %edi
+rcll %cl, (%rax)
+rcrl %cl, (%rax)
+
+rclq %rdi
+rcrq %rdi
+rclq (%rax)
+rcrq (%rax)
+rclq $7, %rdi
+rcrq $7, %rdi
+rclq $7, (%rax)
+rcrq $7, (%rax)
+rclq %cl, %rdi
+rcrq %cl, %rdi
+rclq %cl, (%rax)
+rcrq %cl, (%rax)
+
+rolb %dil
+rorb %dil
+rolb (%rax)
+rorb (%rax)
+rolb $7, %dil
+rorb $7, %dil
+rolb $7, (%rax)
+rorb $7, (%rax)
+rolb %cl, %dil
+rorb %cl, %dil
+rolb %cl, (%rax)
+rorb %cl, (%rax)
+
+rolw %di
+rorw %di
+rolw (%rax)
+rorw (%rax)
+rolw $7, %di
+rorw $7, %di
+rolw $7, (%rax)
+rorw $7, (%rax)
+rolw %cl, %di
+rorw %cl, %di
+rolw %cl, (%rax)
+rorw %cl, (%rax)
+
+roll %edi
+rorl %edi
+roll (%rax)
+rorl (%rax)
+roll $7, %edi
+rorl $7, %edi
+roll $7, (%rax)
+rorl $7, (%rax)
+roll %cl, %edi
+rorl %cl, %edi
+roll %cl, (%rax)
+rorl %cl, (%rax)
+
+rolq %rdi
+rorq %rdi
+rolq (%rax)
+rorq (%rax)
+rolq $7, %rdi
+rorq $7, %rdi
+rolq $7, (%rax)
+rorq $7, (%rax)
+rolq %cl, %rdi
+rorq %cl, %rdi
+rolq %cl, (%rax)
+rorq %cl, (%rax)
+
+sarb %dil
+shlb %dil
+shrb %dil
+sarb (%rax)
+shlb (%rax)
+shrb (%rax)
+sarb $7, %dil
+shlb $7, %dil
+shrb $7, %dil
+sarb $7, (%rax)
+shlb $7, (%rax)
+shrb $7, (%rax)
+sarb %cl, %dil
+shlb %cl, %dil
+shrb %cl, %dil
+sarb %cl, (%rax)
+shlb %cl, (%rax)
+shrb %cl, (%rax)
+
+sarw %di
+shlw %di
+shrw %di
+sarw (%rax)
+shlw (%rax)
+shrw (%rax)
+sarw $7, %di
+shlw $7, %di
+shrw $7, %di
+sarw $7, (%rax)
+shlw $7, (%rax)
+shrw $7, (%rax)
+sarw %cl, %di
+shlw %cl, %di
+shrw %cl, %di
+sarw %cl, (%rax)
+shlw %cl, (%rax)
+shrw %cl, (%rax)
+
+sarl %edi
+shll %edi
+shrl %edi
+sarl (%rax)
+shll (%rax)
+shrl (%rax)
+sarl $7, %edi
+shll $7, %edi
+shrl $7, %edi
+sarl $7, (%rax)
+shll $7, (%rax)
+shrl $7, (%rax)
+sarl %cl, %edi
+shll %cl, %edi
+shrl %cl, %edi
+sarl %cl, (%rax)
+shll %cl, (%rax)
+shrl %cl, (%rax)
+
+sarq %rdi
+shlq %rdi
+shrq %rdi
+sarq (%rax)
+shlq (%rax)
+shrq (%rax)
+sarq $7, %rdi
+shlq $7, %rdi
+shrq $7, %rdi
+sarq $7, (%rax)
+shlq $7, (%rax)
+shrq $7, (%rax)
+sarq %cl, %rdi
+shlq %cl, %rdi
+shrq %cl, %rdi
+sarq %cl, (%rax)
+shlq %cl, (%rax)
+shrq %cl, (%rax)
+
+sbbb $7, %al
+sbbb $7, %dil
+sbbb $7, (%rax)
+sbbb %dil, %dil
+sbbb %dil, (%rax)
+sbbb (%rax), %dil
+
+sbbw $511, %ax
+sbbw $511, %di
+sbbw $511, (%rax)
+sbbw $7, %di
+sbbw $7, (%rax)
+sbbw %di, %di
+sbbw %di, (%rax)
+sbbw (%rax), %di
+
+sbbl $665536, %eax
+sbbl $665536, %edi
+sbbl $665536, (%rax)
+sbbl $7, %edi
+sbbl $7, (%rax)
+sbbl %edi, %edi
+sbbl %edi, (%rax)
+sbbl (%rax), %edi
+
+sbbq $665536, %rax
+sbbq $665536, %rdi
+sbbq $665536, (%rax)
+sbbq $7, %rdi
+sbbq $7, (%rax)
+sbbq %rdi, %rdi
+sbbq %rdi, (%rax)
+sbbq (%rax), %rdi
+
+shldw %cl, %si, %di
+shrdw %cl, %si, %di
+shldw %cl, %si, (%rax)
+shrdw %cl, %si, (%rax)
+shldw $7, %si, %di
+shrdw $7, %si, %di
+shldw $7, %si, (%rax)
+shrdw $7, %si, (%rax)
+
+shldl %cl, %esi, %edi
+shrdl %cl, %esi, %edi
+shldl %cl, %esi, (%rax)
+shrdl %cl, %esi, (%rax)
+shldl $7, %esi, %edi
+shrdl $7, %esi, %edi
+shldl $7, %esi, (%rax)
+shrdl $7, %esi, (%rax)
+
+shldq %cl, %rsi, %rdi
+shrdq %cl, %rsi, %rdi
+shldq %cl, %rsi, (%rax)
+shrdq %cl, %rsi, (%rax)
+shldq $7, %rsi, %rdi
+shrdq $7, %rsi, %rdi
+shldq $7, %rsi, (%rax)
+shrdq $7, %rsi, (%rax)
+
+subb $7, %al
+subb $7, %dil
+subb $7, (%rax)
+subb %dil, %dil
+subb %dil, (%rax)
+subb (%rax), %dil
+
+subw $511, %ax
+subw $511, %di
+subw $511, (%rax)
+subw $7, %di
+subw $7, (%rax)
+subw %di, %di
+subw %di, (%rax)
+subw (%rax), %di
+
+subl $665536, %eax
+subl $665536, %edi
+subl $665536, (%rax)
+subl $7, %edi
+subl $7, (%rax)
+subl %edi, %edi
+subl %edi, (%rax)
+subl (%rax), %edi
+
+subq $665536, %rax
+subq $665536, %rdi
+subq $665536, (%rax)
+subq $7, %rdi
+subq $7, (%rax)
+subq %rdi, %rdi
+subq %rdi, (%rax)
+subq (%rax), %rdi
+
+# 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
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      1     0.50                    	adcb	$7, %al
+# CHECK-NEXT:  1      1     0.50                    	adcb	$7, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	adcb	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	adcb	%dil, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	adcb	%dil, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	adcb	(%rax), %dil
+# CHECK-NEXT:  1      1     0.50                    	adcw	$511, %ax
+# CHECK-NEXT:  1      1     0.50                    	adcw	$511, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	adcw	$511, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	adcw	$7, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	adcw	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	adcw	%di, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	adcw	%di, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	adcw	(%rax), %di
+# CHECK-NEXT:  1      1     0.50                    	adcl	$665536, %eax
+# CHECK-NEXT:  1      1     0.50                    	adcl	$665536, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	adcl	$665536, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	adcl	$7, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	adcl	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	adcl	%edi, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	adcl	%edi, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	adcl	(%rax), %edi
+# CHECK-NEXT:  1      1     0.50                    	adcq	$665536, %rax
+# CHECK-NEXT:  1      1     0.50                    	adcq	$665536, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	adcq	$665536, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	adcq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	adcq	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	adcq	%rdi, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	adcq	%rdi, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	adcq	(%rax), %rdi
+# CHECK-NEXT:  1      1     0.50                    	addb	$7, %al
+# CHECK-NEXT:  1      1     0.50                    	addb	$7, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	addb	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	addb	%dil, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	addb	%dil, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	addb	(%rax), %dil
+# CHECK-NEXT:  1      1     0.50                    	addw	$511, %ax
+# CHECK-NEXT:  1      1     0.50                    	addw	$511, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	addw	$511, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	addw	$7, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	addw	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	addw	%di, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	addw	%di, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	addw	(%rax), %di
+# CHECK-NEXT:  1      1     0.50                    	addl	$665536, %eax
+# CHECK-NEXT:  1      1     0.50                    	addl	$665536, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	addl	$665536, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	addl	$7, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	addl	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	addl	%edi, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	addl	%edi, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	addl	(%rax), %edi
+# CHECK-NEXT:  1      1     0.50                    	addq	$665536, %rax
+# CHECK-NEXT:  1      1     0.50                    	addq	$665536, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	addq	$665536, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	addq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	addq	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	addq	%rdi, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	addq	%rdi, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	addq	(%rax), %rdi
+# CHECK-NEXT:  1      1     1.00                    	btw	%si, %di
+# CHECK-NEXT:  1      1     1.00                    	btcw	%si, %di
+# CHECK-NEXT:  1      1     1.00                    	btrw	%si, %di
+# CHECK-NEXT:  1      1     1.00                    	btsw	%si, %di
+# CHECK-NEXT:  1      9     4.50    *               	btw	%si, (%rax)
+# CHECK-NEXT:  1      11    5.50    *      *        	btcw	%si, (%rax)
+# CHECK-NEXT:  1      11    5.50    *      *        	btrw	%si, (%rax)
+# CHECK-NEXT:  1      11    5.50    *      *        	btsw	%si, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	btw	$7, %di
+# CHECK-NEXT:  1      1     1.00                    	btcw	$7, %di
+# CHECK-NEXT:  1      1     1.00                    	btrw	$7, %di
+# CHECK-NEXT:  1      1     1.00                    	btsw	$7, %di
+# CHECK-NEXT:  1      1     0.50    *               	btw	$7, (%rax)
+# CHECK-NEXT:  1      2     1.00    *      *        	btcw	$7, (%rax)
+# CHECK-NEXT:  1      2     1.00    *      *        	btrw	$7, (%rax)
+# CHECK-NEXT:  1      2     1.00    *      *        	btsw	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	btl	%esi, %edi
+# CHECK-NEXT:  1      1     1.00                    	btcl	%esi, %edi
+# CHECK-NEXT:  1      1     1.00                    	btrl	%esi, %edi
+# CHECK-NEXT:  1      1     1.00                    	btsl	%esi, %edi
+# CHECK-NEXT:  1      9     4.50    *               	btl	%esi, (%rax)
+# CHECK-NEXT:  1      11    5.50    *      *        	btcl	%esi, (%rax)
+# CHECK-NEXT:  1      11    5.50    *      *        	btrl	%esi, (%rax)
+# CHECK-NEXT:  1      11    5.50    *      *        	btsl	%esi, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	btl	$7, %edi
+# CHECK-NEXT:  1      1     1.00                    	btcl	$7, %edi
+# CHECK-NEXT:  1      1     1.00                    	btrl	$7, %edi
+# CHECK-NEXT:  1      1     1.00                    	btsl	$7, %edi
+# CHECK-NEXT:  1      1     0.50    *               	btl	$7, (%rax)
+# CHECK-NEXT:  1      2     1.00    *      *        	btcl	$7, (%rax)
+# CHECK-NEXT:  1      2     1.00    *      *        	btrl	$7, (%rax)
+# CHECK-NEXT:  1      2     1.00    *      *        	btsl	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	btq	%rsi, %rdi
+# CHECK-NEXT:  1      1     1.00                    	btcq	%rsi, %rdi
+# CHECK-NEXT:  1      1     1.00                    	btrq	%rsi, %rdi
+# CHECK-NEXT:  1      1     1.00                    	btsq	%rsi, %rdi
+# CHECK-NEXT:  1      9     4.50    *               	btq	%rsi, (%rax)
+# CHECK-NEXT:  1      11    5.50    *      *        	btcq	%rsi, (%rax)
+# CHECK-NEXT:  1      11    5.50    *      *        	btrq	%rsi, (%rax)
+# CHECK-NEXT:  1      11    5.50    *      *        	btsq	%rsi, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	btq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00                    	btcq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00                    	btrq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00                    	btsq	$7, %rdi
+# CHECK-NEXT:  1      1     0.50    *               	btq	$7, (%rax)
+# CHECK-NEXT:  1      2     1.00    *      *        	btcq	$7, (%rax)
+# CHECK-NEXT:  1      2     1.00    *      *        	btrq	$7, (%rax)
+# CHECK-NEXT:  1      2     1.00    *      *        	btsq	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rclb	%dil
+# CHECK-NEXT:  1      1     1.00                    	rcrb	%dil
+# CHECK-NEXT:  1      1     1.00           *        	rclb	(%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrb	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	rclb	$7, %dil
+# CHECK-NEXT:  1      1     1.00                    	rcrb	$7, %dil
+# CHECK-NEXT:  1      1     1.00           *        	rclb	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrb	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rclb	%cl, %dil
+# CHECK-NEXT:  1      1     1.00                    	rcrb	%cl, %dil
+# CHECK-NEXT:  1      1     1.00           *        	rclb	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrb	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rclw	%di
+# CHECK-NEXT:  1      1     1.00                    	rcrw	%di
+# CHECK-NEXT:  1      1     1.00           *        	rclw	(%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrw	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	rclw	$7, %di
+# CHECK-NEXT:  1      1     1.00                    	rcrw	$7, %di
+# CHECK-NEXT:  1      1     1.00           *        	rclw	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrw	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rclw	%cl, %di
+# CHECK-NEXT:  1      1     1.00                    	rcrw	%cl, %di
+# CHECK-NEXT:  1      1     1.00           *        	rclw	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrw	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rcll	%edi
+# CHECK-NEXT:  1      1     1.00                    	rcrl	%edi
+# CHECK-NEXT:  1      1     1.00           *        	rcll	(%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrl	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	rcll	$7, %edi
+# CHECK-NEXT:  1      1     1.00                    	rcrl	$7, %edi
+# CHECK-NEXT:  1      1     1.00           *        	rcll	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrl	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rcll	%cl, %edi
+# CHECK-NEXT:  1      1     1.00                    	rcrl	%cl, %edi
+# CHECK-NEXT:  1      1     1.00           *        	rcll	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrl	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rclq	%rdi
+# CHECK-NEXT:  1      1     1.00                    	rcrq	%rdi
+# CHECK-NEXT:  1      1     1.00           *        	rclq	(%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrq	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	rclq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00                    	rcrq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00           *        	rclq	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrq	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rclq	%cl, %rdi
+# CHECK-NEXT:  1      1     1.00                    	rcrq	%cl, %rdi
+# CHECK-NEXT:  1      1     1.00           *        	rclq	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00           *        	rcrq	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rolb	%dil
+# CHECK-NEXT:  1      1     1.00                    	rorb	%dil
+# CHECK-NEXT:  1      1     1.00    *      *        	rolb	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorb	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	rolb	$7, %dil
+# CHECK-NEXT:  1      1     1.00                    	rorb	$7, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	rolb	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorb	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rolb	%cl, %dil
+# CHECK-NEXT:  1      1     1.00                    	rorb	%cl, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	rolb	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorb	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rolw	%di
+# CHECK-NEXT:  1      1     1.00                    	rorw	%di
+# CHECK-NEXT:  1      1     1.00    *      *        	rolw	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorw	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	rolw	$7, %di
+# CHECK-NEXT:  1      1     1.00                    	rorw	$7, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	rolw	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorw	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rolw	%cl, %di
+# CHECK-NEXT:  1      1     1.00                    	rorw	%cl, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	rolw	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorw	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	roll	%edi
+# CHECK-NEXT:  1      1     1.00                    	rorl	%edi
+# CHECK-NEXT:  1      1     1.00    *      *        	roll	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorl	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	roll	$7, %edi
+# CHECK-NEXT:  1      1     1.00                    	rorl	$7, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	roll	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorl	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	roll	%cl, %edi
+# CHECK-NEXT:  1      1     1.00                    	rorl	%cl, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	roll	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorl	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rolq	%rdi
+# CHECK-NEXT:  1      1     1.00                    	rorq	%rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	rolq	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorq	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	rolq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00                    	rorq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	rolq	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorq	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	rolq	%cl, %rdi
+# CHECK-NEXT:  1      1     1.00                    	rorq	%cl, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	rolq	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	rorq	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarb	%dil
+# CHECK-NEXT:  1      1     1.00                    	shlb	%dil
+# CHECK-NEXT:  1      1     1.00                    	shrb	%dil
+# CHECK-NEXT:  1      1     1.00    *      *        	sarb	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shlb	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrb	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarb	$7, %dil
+# CHECK-NEXT:  1      1     1.00                    	shlb	$7, %dil
+# CHECK-NEXT:  1      1     1.00                    	shrb	$7, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	sarb	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shlb	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrb	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarb	%cl, %dil
+# CHECK-NEXT:  1      1     1.00                    	shlb	%cl, %dil
+# CHECK-NEXT:  1      1     1.00                    	shrb	%cl, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	sarb	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shlb	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrb	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarw	%di
+# CHECK-NEXT:  1      1     1.00                    	shlw	%di
+# CHECK-NEXT:  1      1     1.00                    	shrw	%di
+# CHECK-NEXT:  1      1     1.00    *      *        	sarw	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shlw	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrw	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarw	$7, %di
+# CHECK-NEXT:  1      1     1.00                    	shlw	$7, %di
+# CHECK-NEXT:  1      1     1.00                    	shrw	$7, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	sarw	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shlw	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrw	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarw	%cl, %di
+# CHECK-NEXT:  1      1     1.00                    	shlw	%cl, %di
+# CHECK-NEXT:  1      1     1.00                    	shrw	%cl, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	sarw	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shlw	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrw	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarl	%edi
+# CHECK-NEXT:  1      1     1.00                    	shll	%edi
+# CHECK-NEXT:  1      1     1.00                    	shrl	%edi
+# CHECK-NEXT:  1      1     1.00    *      *        	sarl	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shll	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrl	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarl	$7, %edi
+# CHECK-NEXT:  1      1     1.00                    	shll	$7, %edi
+# CHECK-NEXT:  1      1     1.00                    	shrl	$7, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	sarl	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shll	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrl	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarl	%cl, %edi
+# CHECK-NEXT:  1      1     1.00                    	shll	%cl, %edi
+# CHECK-NEXT:  1      1     1.00                    	shrl	%cl, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	sarl	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shll	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrl	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarq	%rdi
+# CHECK-NEXT:  1      1     1.00                    	shlq	%rdi
+# CHECK-NEXT:  1      1     1.00                    	shrq	%rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	sarq	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shlq	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrq	(%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00                    	shlq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00                    	shrq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	sarq	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shlq	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrq	$7, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	sarq	%cl, %rdi
+# CHECK-NEXT:  1      1     1.00                    	shlq	%cl, %rdi
+# CHECK-NEXT:  1      1     1.00                    	shrq	%cl, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	sarq	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shlq	%cl, (%rax)
+# CHECK-NEXT:  1      1     1.00    *      *        	shrq	%cl, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	sbbb	$7, %al
+# CHECK-NEXT:  1      1     0.50                    	sbbb	$7, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbb	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	sbbb	%dil, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbb	%dil, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	sbbb	(%rax), %dil
+# CHECK-NEXT:  1      1     0.50                    	sbbw	$511, %ax
+# CHECK-NEXT:  1      1     0.50                    	sbbw	$511, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbw	$511, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	sbbw	$7, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbw	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	sbbw	%di, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbw	%di, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	sbbw	(%rax), %di
+# CHECK-NEXT:  1      1     0.50                    	sbbl	$665536, %eax
+# CHECK-NEXT:  1      1     0.50                    	sbbl	$665536, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbl	$665536, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	sbbl	$7, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbl	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	sbbl	%edi, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbl	%edi, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	sbbl	(%rax), %edi
+# CHECK-NEXT:  1      1     0.50                    	sbbq	$665536, %rax
+# CHECK-NEXT:  1      1     0.50                    	sbbq	$665536, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbq	$665536, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	sbbq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbq	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	sbbq	%rdi, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	sbbq	%rdi, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	sbbq	(%rax), %rdi
+# CHECK-NEXT:  1      6     3.00                    	shldw	%cl, %si, %di
+# CHECK-NEXT:  1      6     3.00                    	shrdw	%cl, %si, %di
+# CHECK-NEXT:  1      6     3.00    *      *        	shldw	%cl, %si, (%rax)
+# CHECK-NEXT:  1      6     3.00    *      *        	shrdw	%cl, %si, (%rax)
+# CHECK-NEXT:  1      6     3.00                    	shldw	$7, %si, %di
+# CHECK-NEXT:  1      6     3.00                    	shrdw	$7, %si, %di
+# CHECK-NEXT:  1      6     3.00    *      *        	shldw	$7, %si, (%rax)
+# CHECK-NEXT:  1      6     3.00    *      *        	shrdw	$7, %si, (%rax)
+# CHECK-NEXT:  1      2     1.00                    	shldl	%cl, %esi, %edi
+# CHECK-NEXT:  1      2     1.00                    	shrdl	%cl, %esi, %edi
+# CHECK-NEXT:  1      4     2.00    *      *        	shldl	%cl, %esi, (%rax)
+# CHECK-NEXT:  1      4     2.00    *      *        	shrdl	%cl, %esi, (%rax)
+# CHECK-NEXT:  1      2     1.00                    	shldl	$7, %esi, %edi
+# CHECK-NEXT:  1      2     1.00                    	shrdl	$7, %esi, %edi
+# CHECK-NEXT:  1      4     2.00    *      *        	shldl	$7, %esi, (%rax)
+# CHECK-NEXT:  1      4     2.00    *      *        	shrdl	$7, %esi, (%rax)
+# CHECK-NEXT:  1      8     4.00                    	shldq	%cl, %rsi, %rdi
+# CHECK-NEXT:  1      8     4.00                    	shrdq	%cl, %rsi, %rdi
+# CHECK-NEXT:  1      9     4.50    *      *        	shldq	%cl, %rsi, (%rax)
+# CHECK-NEXT:  1      9     4.50    *      *        	shrdq	%cl, %rsi, (%rax)
+# CHECK-NEXT:  1      9     4.50                    	shldq	$7, %rsi, %rdi
+# CHECK-NEXT:  1      9     4.50                    	shrdq	$7, %rsi, %rdi
+# CHECK-NEXT:  1      9     4.50    *      *        	shldq	$7, %rsi, (%rax)
+# CHECK-NEXT:  1      9     4.50    *      *        	shrdq	$7, %rsi, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	subb	$7, %al
+# CHECK-NEXT:  1      1     0.50                    	subb	$7, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	subb	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	subb	%dil, %dil
+# CHECK-NEXT:  1      1     1.00    *      *        	subb	%dil, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	subb	(%rax), %dil
+# CHECK-NEXT:  1      1     0.50                    	subw	$511, %ax
+# CHECK-NEXT:  1      1     0.50                    	subw	$511, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	subw	$511, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	subw	$7, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	subw	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	subw	%di, %di
+# CHECK-NEXT:  1      1     1.00    *      *        	subw	%di, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	subw	(%rax), %di
+# CHECK-NEXT:  1      1     0.50                    	subl	$665536, %eax
+# CHECK-NEXT:  1      1     0.50                    	subl	$665536, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	subl	$665536, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	subl	$7, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	subl	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	subl	%edi, %edi
+# CHECK-NEXT:  1      1     1.00    *      *        	subl	%edi, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	subl	(%rax), %edi
+# CHECK-NEXT:  1      1     0.50                    	subq	$665536, %rax
+# CHECK-NEXT:  1      1     0.50                    	subq	$665536, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	subq	$665536, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	subq	$7, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	subq	$7, (%rax)
+# CHECK-NEXT:  1      1     0.50                    	subq	%rdi, %rdi
+# CHECK-NEXT:  1      1     1.00    *      *        	subq	%rdi, (%rax)
+# CHECK-NEXT:  1      1     1.00    *               	subq	(%rax), %rdi
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - AtomPort0
+# CHECK-NEXT: [1] - AtomPort1
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]
+# CHECK-NEXT: 402.50 198.50
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    	Instructions:
+# CHECK-NEXT: 0.50   0.50   	adcb	$7, %al
+# CHECK-NEXT: 0.50   0.50   	adcb	$7, %dil
+# CHECK-NEXT: 1.00    -     	adcb	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	adcb	%dil, %dil
+# CHECK-NEXT: 1.00    -     	adcb	%dil, (%rax)
+# CHECK-NEXT: 1.00    -     	adcb	(%rax), %dil
+# CHECK-NEXT: 0.50   0.50   	adcw	$511, %ax
+# CHECK-NEXT: 0.50   0.50   	adcw	$511, %di
+# CHECK-NEXT: 1.00    -     	adcw	$511, (%rax)
+# CHECK-NEXT: 0.50   0.50   	adcw	$7, %di
+# CHECK-NEXT: 1.00    -     	adcw	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	adcw	%di, %di
+# CHECK-NEXT: 1.00    -     	adcw	%di, (%rax)
+# CHECK-NEXT: 1.00    -     	adcw	(%rax), %di
+# CHECK-NEXT: 0.50   0.50   	adcl	$665536, %eax
+# CHECK-NEXT: 0.50   0.50   	adcl	$665536, %edi
+# CHECK-NEXT: 1.00    -     	adcl	$665536, (%rax)
+# CHECK-NEXT: 0.50   0.50   	adcl	$7, %edi
+# CHECK-NEXT: 1.00    -     	adcl	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	adcl	%edi, %edi
+# CHECK-NEXT: 1.00    -     	adcl	%edi, (%rax)
+# CHECK-NEXT: 1.00    -     	adcl	(%rax), %edi
+# CHECK-NEXT: 0.50   0.50   	adcq	$665536, %rax
+# CHECK-NEXT: 0.50   0.50   	adcq	$665536, %rdi
+# CHECK-NEXT: 1.00    -     	adcq	$665536, (%rax)
+# CHECK-NEXT: 0.50   0.50   	adcq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	adcq	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	adcq	%rdi, %rdi
+# CHECK-NEXT: 1.00    -     	adcq	%rdi, (%rax)
+# CHECK-NEXT: 1.00    -     	adcq	(%rax), %rdi
+# CHECK-NEXT: 0.50   0.50   	addb	$7, %al
+# CHECK-NEXT: 0.50   0.50   	addb	$7, %dil
+# CHECK-NEXT: 1.00    -     	addb	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	addb	%dil, %dil
+# CHECK-NEXT: 1.00    -     	addb	%dil, (%rax)
+# CHECK-NEXT: 1.00    -     	addb	(%rax), %dil
+# CHECK-NEXT: 0.50   0.50   	addw	$511, %ax
+# CHECK-NEXT: 0.50   0.50   	addw	$511, %di
+# CHECK-NEXT: 1.00    -     	addw	$511, (%rax)
+# CHECK-NEXT: 0.50   0.50   	addw	$7, %di
+# CHECK-NEXT: 1.00    -     	addw	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	addw	%di, %di
+# CHECK-NEXT: 1.00    -     	addw	%di, (%rax)
+# CHECK-NEXT: 1.00    -     	addw	(%rax), %di
+# CHECK-NEXT: 0.50   0.50   	addl	$665536, %eax
+# CHECK-NEXT: 0.50   0.50   	addl	$665536, %edi
+# CHECK-NEXT: 1.00    -     	addl	$665536, (%rax)
+# CHECK-NEXT: 0.50   0.50   	addl	$7, %edi
+# CHECK-NEXT: 1.00    -     	addl	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	addl	%edi, %edi
+# CHECK-NEXT: 1.00    -     	addl	%edi, (%rax)
+# CHECK-NEXT: 1.00    -     	addl	(%rax), %edi
+# CHECK-NEXT: 0.50   0.50   	addq	$665536, %rax
+# CHECK-NEXT: 0.50   0.50   	addq	$665536, %rdi
+# CHECK-NEXT: 1.00    -     	addq	$665536, (%rax)
+# CHECK-NEXT: 0.50   0.50   	addq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	addq	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	addq	%rdi, %rdi
+# CHECK-NEXT: 1.00    -     	addq	%rdi, (%rax)
+# CHECK-NEXT: 1.00    -     	addq	(%rax), %rdi
+# CHECK-NEXT:  -     1.00   	btw	%si, %di
+# CHECK-NEXT:  -     1.00   	btcw	%si, %di
+# CHECK-NEXT:  -     1.00   	btrw	%si, %di
+# CHECK-NEXT:  -     1.00   	btsw	%si, %di
+# CHECK-NEXT: 4.50   4.50   	btw	%si, (%rax)
+# CHECK-NEXT: 5.50   5.50   	btcw	%si, (%rax)
+# CHECK-NEXT: 5.50   5.50   	btrw	%si, (%rax)
+# CHECK-NEXT: 5.50   5.50   	btsw	%si, (%rax)
+# CHECK-NEXT:  -     1.00   	btw	$7, %di
+# CHECK-NEXT:  -     1.00   	btcw	$7, %di
+# CHECK-NEXT:  -     1.00   	btrw	$7, %di
+# CHECK-NEXT:  -     1.00   	btsw	$7, %di
+# CHECK-NEXT: 0.50   0.50   	btw	$7, (%rax)
+# CHECK-NEXT: 1.00   1.00   	btcw	$7, (%rax)
+# CHECK-NEXT: 1.00   1.00   	btrw	$7, (%rax)
+# CHECK-NEXT: 1.00   1.00   	btsw	$7, (%rax)
+# CHECK-NEXT:  -     1.00   	btl	%esi, %edi
+# CHECK-NEXT:  -     1.00   	btcl	%esi, %edi
+# CHECK-NEXT:  -     1.00   	btrl	%esi, %edi
+# CHECK-NEXT:  -     1.00   	btsl	%esi, %edi
+# CHECK-NEXT: 4.50   4.50   	btl	%esi, (%rax)
+# CHECK-NEXT: 5.50   5.50   	btcl	%esi, (%rax)
+# CHECK-NEXT: 5.50   5.50   	btrl	%esi, (%rax)
+# CHECK-NEXT: 5.50   5.50   	btsl	%esi, (%rax)
+# CHECK-NEXT:  -     1.00   	btl	$7, %edi
+# CHECK-NEXT:  -     1.00   	btcl	$7, %edi
+# CHECK-NEXT:  -     1.00   	btrl	$7, %edi
+# CHECK-NEXT:  -     1.00   	btsl	$7, %edi
+# CHECK-NEXT: 0.50   0.50   	btl	$7, (%rax)
+# CHECK-NEXT: 1.00   1.00   	btcl	$7, (%rax)
+# CHECK-NEXT: 1.00   1.00   	btrl	$7, (%rax)
+# CHECK-NEXT: 1.00   1.00   	btsl	$7, (%rax)
+# CHECK-NEXT:  -     1.00   	btq	%rsi, %rdi
+# CHECK-NEXT:  -     1.00   	btcq	%rsi, %rdi
+# CHECK-NEXT:  -     1.00   	btrq	%rsi, %rdi
+# CHECK-NEXT:  -     1.00   	btsq	%rsi, %rdi
+# CHECK-NEXT: 4.50   4.50   	btq	%rsi, (%rax)
+# CHECK-NEXT: 5.50   5.50   	btcq	%rsi, (%rax)
+# CHECK-NEXT: 5.50   5.50   	btrq	%rsi, (%rax)
+# CHECK-NEXT: 5.50   5.50   	btsq	%rsi, (%rax)
+# CHECK-NEXT:  -     1.00   	btq	$7, %rdi
+# CHECK-NEXT:  -     1.00   	btcq	$7, %rdi
+# CHECK-NEXT:  -     1.00   	btrq	$7, %rdi
+# CHECK-NEXT:  -     1.00   	btsq	$7, %rdi
+# CHECK-NEXT: 0.50   0.50   	btq	$7, (%rax)
+# CHECK-NEXT: 1.00   1.00   	btcq	$7, (%rax)
+# CHECK-NEXT: 1.00   1.00   	btrq	$7, (%rax)
+# CHECK-NEXT: 1.00   1.00   	btsq	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rclb	%dil
+# CHECK-NEXT: 1.00    -     	rcrb	%dil
+# CHECK-NEXT: 1.00    -     	rclb	(%rax)
+# CHECK-NEXT: 1.00    -     	rcrb	(%rax)
+# CHECK-NEXT: 1.00    -     	rclb	$7, %dil
+# CHECK-NEXT: 1.00    -     	rcrb	$7, %dil
+# CHECK-NEXT: 1.00    -     	rclb	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rcrb	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rclb	%cl, %dil
+# CHECK-NEXT: 1.00    -     	rcrb	%cl, %dil
+# CHECK-NEXT: 1.00    -     	rclb	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rcrb	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rclw	%di
+# CHECK-NEXT: 1.00    -     	rcrw	%di
+# CHECK-NEXT: 1.00    -     	rclw	(%rax)
+# CHECK-NEXT: 1.00    -     	rcrw	(%rax)
+# CHECK-NEXT: 1.00    -     	rclw	$7, %di
+# CHECK-NEXT: 1.00    -     	rcrw	$7, %di
+# CHECK-NEXT: 1.00    -     	rclw	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rcrw	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rclw	%cl, %di
+# CHECK-NEXT: 1.00    -     	rcrw	%cl, %di
+# CHECK-NEXT: 1.00    -     	rclw	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rcrw	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rcll	%edi
+# CHECK-NEXT: 1.00    -     	rcrl	%edi
+# CHECK-NEXT: 1.00    -     	rcll	(%rax)
+# CHECK-NEXT: 1.00    -     	rcrl	(%rax)
+# CHECK-NEXT: 1.00    -     	rcll	$7, %edi
+# CHECK-NEXT: 1.00    -     	rcrl	$7, %edi
+# CHECK-NEXT: 1.00    -     	rcll	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rcrl	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rcll	%cl, %edi
+# CHECK-NEXT: 1.00    -     	rcrl	%cl, %edi
+# CHECK-NEXT: 1.00    -     	rcll	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rcrl	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rclq	%rdi
+# CHECK-NEXT: 1.00    -     	rcrq	%rdi
+# CHECK-NEXT: 1.00    -     	rclq	(%rax)
+# CHECK-NEXT: 1.00    -     	rcrq	(%rax)
+# CHECK-NEXT: 1.00    -     	rclq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	rcrq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	rclq	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rcrq	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rclq	%cl, %rdi
+# CHECK-NEXT: 1.00    -     	rcrq	%cl, %rdi
+# CHECK-NEXT: 1.00    -     	rclq	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rcrq	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rolb	%dil
+# CHECK-NEXT: 1.00    -     	rorb	%dil
+# CHECK-NEXT: 1.00    -     	rolb	(%rax)
+# CHECK-NEXT: 1.00    -     	rorb	(%rax)
+# CHECK-NEXT: 1.00    -     	rolb	$7, %dil
+# CHECK-NEXT: 1.00    -     	rorb	$7, %dil
+# CHECK-NEXT: 1.00    -     	rolb	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rorb	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rolb	%cl, %dil
+# CHECK-NEXT: 1.00    -     	rorb	%cl, %dil
+# CHECK-NEXT: 1.00    -     	rolb	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rorb	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rolw	%di
+# CHECK-NEXT: 1.00    -     	rorw	%di
+# CHECK-NEXT: 1.00    -     	rolw	(%rax)
+# CHECK-NEXT: 1.00    -     	rorw	(%rax)
+# CHECK-NEXT: 1.00    -     	rolw	$7, %di
+# CHECK-NEXT: 1.00    -     	rorw	$7, %di
+# CHECK-NEXT: 1.00    -     	rolw	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rorw	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rolw	%cl, %di
+# CHECK-NEXT: 1.00    -     	rorw	%cl, %di
+# CHECK-NEXT: 1.00    -     	rolw	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rorw	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	roll	%edi
+# CHECK-NEXT: 1.00    -     	rorl	%edi
+# CHECK-NEXT: 1.00    -     	roll	(%rax)
+# CHECK-NEXT: 1.00    -     	rorl	(%rax)
+# CHECK-NEXT: 1.00    -     	roll	$7, %edi
+# CHECK-NEXT: 1.00    -     	rorl	$7, %edi
+# CHECK-NEXT: 1.00    -     	roll	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rorl	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	roll	%cl, %edi
+# CHECK-NEXT: 1.00    -     	rorl	%cl, %edi
+# CHECK-NEXT: 1.00    -     	roll	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rorl	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rolq	%rdi
+# CHECK-NEXT: 1.00    -     	rorq	%rdi
+# CHECK-NEXT: 1.00    -     	rolq	(%rax)
+# CHECK-NEXT: 1.00    -     	rorq	(%rax)
+# CHECK-NEXT: 1.00    -     	rolq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	rorq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	rolq	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rorq	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	rolq	%cl, %rdi
+# CHECK-NEXT: 1.00    -     	rorq	%cl, %rdi
+# CHECK-NEXT: 1.00    -     	rolq	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	rorq	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	sarb	%dil
+# CHECK-NEXT: 1.00    -     	shlb	%dil
+# CHECK-NEXT: 1.00    -     	shrb	%dil
+# CHECK-NEXT: 1.00    -     	sarb	(%rax)
+# CHECK-NEXT: 1.00    -     	shlb	(%rax)
+# CHECK-NEXT: 1.00    -     	shrb	(%rax)
+# CHECK-NEXT: 1.00    -     	sarb	$7, %dil
+# CHECK-NEXT: 1.00    -     	shlb	$7, %dil
+# CHECK-NEXT: 1.00    -     	shrb	$7, %dil
+# CHECK-NEXT: 1.00    -     	sarb	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	shlb	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	shrb	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	sarb	%cl, %dil
+# CHECK-NEXT: 1.00    -     	shlb	%cl, %dil
+# CHECK-NEXT: 1.00    -     	shrb	%cl, %dil
+# CHECK-NEXT: 1.00    -     	sarb	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	shlb	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	shrb	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	sarw	%di
+# CHECK-NEXT: 1.00    -     	shlw	%di
+# CHECK-NEXT: 1.00    -     	shrw	%di
+# CHECK-NEXT: 1.00    -     	sarw	(%rax)
+# CHECK-NEXT: 1.00    -     	shlw	(%rax)
+# CHECK-NEXT: 1.00    -     	shrw	(%rax)
+# CHECK-NEXT: 1.00    -     	sarw	$7, %di
+# CHECK-NEXT: 1.00    -     	shlw	$7, %di
+# CHECK-NEXT: 1.00    -     	shrw	$7, %di
+# CHECK-NEXT: 1.00    -     	sarw	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	shlw	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	shrw	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	sarw	%cl, %di
+# CHECK-NEXT: 1.00    -     	shlw	%cl, %di
+# CHECK-NEXT: 1.00    -     	shrw	%cl, %di
+# CHECK-NEXT: 1.00    -     	sarw	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	shlw	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	shrw	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	sarl	%edi
+# CHECK-NEXT: 1.00    -     	shll	%edi
+# CHECK-NEXT: 1.00    -     	shrl	%edi
+# CHECK-NEXT: 1.00    -     	sarl	(%rax)
+# CHECK-NEXT: 1.00    -     	shll	(%rax)
+# CHECK-NEXT: 1.00    -     	shrl	(%rax)
+# CHECK-NEXT: 1.00    -     	sarl	$7, %edi
+# CHECK-NEXT: 1.00    -     	shll	$7, %edi
+# CHECK-NEXT: 1.00    -     	shrl	$7, %edi
+# CHECK-NEXT: 1.00    -     	sarl	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	shll	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	shrl	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	sarl	%cl, %edi
+# CHECK-NEXT: 1.00    -     	shll	%cl, %edi
+# CHECK-NEXT: 1.00    -     	shrl	%cl, %edi
+# CHECK-NEXT: 1.00    -     	sarl	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	shll	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	shrl	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	sarq	%rdi
+# CHECK-NEXT: 1.00    -     	shlq	%rdi
+# CHECK-NEXT: 1.00    -     	shrq	%rdi
+# CHECK-NEXT: 1.00    -     	sarq	(%rax)
+# CHECK-NEXT: 1.00    -     	shlq	(%rax)
+# CHECK-NEXT: 1.00    -     	shrq	(%rax)
+# CHECK-NEXT: 1.00    -     	sarq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	shlq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	shrq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	sarq	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	shlq	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	shrq	$7, (%rax)
+# CHECK-NEXT: 1.00    -     	sarq	%cl, %rdi
+# CHECK-NEXT: 1.00    -     	shlq	%cl, %rdi
+# CHECK-NEXT: 1.00    -     	shrq	%cl, %rdi
+# CHECK-NEXT: 1.00    -     	sarq	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	shlq	%cl, (%rax)
+# CHECK-NEXT: 1.00    -     	shrq	%cl, (%rax)
+# CHECK-NEXT: 0.50   0.50   	sbbb	$7, %al
+# CHECK-NEXT: 0.50   0.50   	sbbb	$7, %dil
+# CHECK-NEXT: 1.00    -     	sbbb	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	sbbb	%dil, %dil
+# CHECK-NEXT: 1.00    -     	sbbb	%dil, (%rax)
+# CHECK-NEXT: 1.00    -     	sbbb	(%rax), %dil
+# CHECK-NEXT: 0.50   0.50   	sbbw	$511, %ax
+# CHECK-NEXT: 0.50   0.50   	sbbw	$511, %di
+# CHECK-NEXT: 1.00    -     	sbbw	$511, (%rax)
+# CHECK-NEXT: 0.50   0.50   	sbbw	$7, %di
+# CHECK-NEXT: 1.00    -     	sbbw	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	sbbw	%di, %di
+# CHECK-NEXT: 1.00    -     	sbbw	%di, (%rax)
+# CHECK-NEXT: 1.00    -     	sbbw	(%rax), %di
+# CHECK-NEXT: 0.50   0.50   	sbbl	$665536, %eax
+# CHECK-NEXT: 0.50   0.50   	sbbl	$665536, %edi
+# CHECK-NEXT: 1.00    -     	sbbl	$665536, (%rax)
+# CHECK-NEXT: 0.50   0.50   	sbbl	$7, %edi
+# CHECK-NEXT: 1.00    -     	sbbl	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	sbbl	%edi, %edi
+# CHECK-NEXT: 1.00    -     	sbbl	%edi, (%rax)
+# CHECK-NEXT: 1.00    -     	sbbl	(%rax), %edi
+# CHECK-NEXT: 0.50   0.50   	sbbq	$665536, %rax
+# CHECK-NEXT: 0.50   0.50   	sbbq	$665536, %rdi
+# CHECK-NEXT: 1.00    -     	sbbq	$665536, (%rax)
+# CHECK-NEXT: 0.50   0.50   	sbbq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	sbbq	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	sbbq	%rdi, %rdi
+# CHECK-NEXT: 1.00    -     	sbbq	%rdi, (%rax)
+# CHECK-NEXT: 1.00    -     	sbbq	(%rax), %rdi
+# CHECK-NEXT: 3.00   3.00   	shldw	%cl, %si, %di
+# CHECK-NEXT: 3.00   3.00   	shrdw	%cl, %si, %di
+# CHECK-NEXT: 3.00   3.00   	shldw	%cl, %si, (%rax)
+# CHECK-NEXT: 3.00   3.00   	shrdw	%cl, %si, (%rax)
+# CHECK-NEXT: 3.00   3.00   	shldw	$7, %si, %di
+# CHECK-NEXT: 3.00   3.00   	shrdw	$7, %si, %di
+# CHECK-NEXT: 3.00   3.00   	shldw	$7, %si, (%rax)
+# CHECK-NEXT: 3.00   3.00   	shrdw	$7, %si, (%rax)
+# CHECK-NEXT: 1.00   1.00   	shldl	%cl, %esi, %edi
+# CHECK-NEXT: 1.00   1.00   	shrdl	%cl, %esi, %edi
+# CHECK-NEXT: 2.00   2.00   	shldl	%cl, %esi, (%rax)
+# CHECK-NEXT: 2.00   2.00   	shrdl	%cl, %esi, (%rax)
+# CHECK-NEXT: 1.00   1.00   	shldl	$7, %esi, %edi
+# CHECK-NEXT: 1.00   1.00   	shrdl	$7, %esi, %edi
+# CHECK-NEXT: 2.00   2.00   	shldl	$7, %esi, (%rax)
+# CHECK-NEXT: 2.00   2.00   	shrdl	$7, %esi, (%rax)
+# CHECK-NEXT: 4.00   4.00   	shldq	%cl, %rsi, %rdi
+# CHECK-NEXT: 4.00   4.00   	shrdq	%cl, %rsi, %rdi
+# CHECK-NEXT: 4.50   4.50   	shldq	%cl, %rsi, (%rax)
+# CHECK-NEXT: 4.50   4.50   	shrdq	%cl, %rsi, (%rax)
+# CHECK-NEXT: 4.50   4.50   	shldq	$7, %rsi, %rdi
+# CHECK-NEXT: 4.50   4.50   	shrdq	$7, %rsi, %rdi
+# CHECK-NEXT: 4.50   4.50   	shldq	$7, %rsi, (%rax)
+# CHECK-NEXT: 4.50   4.50   	shrdq	$7, %rsi, (%rax)
+# CHECK-NEXT: 0.50   0.50   	subb	$7, %al
+# CHECK-NEXT: 0.50   0.50   	subb	$7, %dil
+# CHECK-NEXT: 1.00    -     	subb	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	subb	%dil, %dil
+# CHECK-NEXT: 1.00    -     	subb	%dil, (%rax)
+# CHECK-NEXT: 1.00    -     	subb	(%rax), %dil
+# CHECK-NEXT: 0.50   0.50   	subw	$511, %ax
+# CHECK-NEXT: 0.50   0.50   	subw	$511, %di
+# CHECK-NEXT: 1.00    -     	subw	$511, (%rax)
+# CHECK-NEXT: 0.50   0.50   	subw	$7, %di
+# CHECK-NEXT: 1.00    -     	subw	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	subw	%di, %di
+# CHECK-NEXT: 1.00    -     	subw	%di, (%rax)
+# CHECK-NEXT: 1.00    -     	subw	(%rax), %di
+# CHECK-NEXT: 0.50   0.50   	subl	$665536, %eax
+# CHECK-NEXT: 0.50   0.50   	subl	$665536, %edi
+# CHECK-NEXT: 1.00    -     	subl	$665536, (%rax)
+# CHECK-NEXT: 0.50   0.50   	subl	$7, %edi
+# CHECK-NEXT: 1.00    -     	subl	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	subl	%edi, %edi
+# CHECK-NEXT: 1.00    -     	subl	%edi, (%rax)
+# CHECK-NEXT: 1.00    -     	subl	(%rax), %edi
+# CHECK-NEXT: 0.50   0.50   	subq	$665536, %rax
+# CHECK-NEXT: 0.50   0.50   	subq	$665536, %rdi
+# CHECK-NEXT: 1.00    -     	subq	$665536, (%rax)
+# CHECK-NEXT: 0.50   0.50   	subq	$7, %rdi
+# CHECK-NEXT: 1.00    -     	subq	$7, (%rax)
+# CHECK-NEXT: 0.50   0.50   	subq	%rdi, %rdi
+# CHECK-NEXT: 1.00    -     	subq	%rdi, (%rax)
+# CHECK-NEXT: 1.00    -     	subq	(%rax), %rdi
+

Added: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x87.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x87.s?rev=331169&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x87.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x87.s Mon Apr 30 05:05:34 2018
@@ -0,0 +1,516 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s
+
+f2xm1
+
+fabs
+
+fadd %st(0), %st(1)
+fadd %st(2)
+fadds (%ecx)
+faddl (%ecx)
+faddp %st(1)
+faddp %st(2)
+fiadds (%ecx)
+fiaddl (%ecx)
+
+fbld (%ecx)
+fbstp (%eax)
+
+fchs
+
+fnclex
+
+fcmovb %st(1), %st(0)
+fcmovbe %st(1), %st(0)
+fcmove %st(1), %st(0)
+fcmovnb %st(1), %st(0)
+fcmovnbe %st(1), %st(0)
+fcmovne %st(1), %st(0)
+fcmovnu %st(1), %st(0)
+fcmovu %st(1), %st(0)
+
+fcom %st(1)
+fcom %st(3)
+fcoms (%ecx)
+fcoml (%eax)
+fcomp %st(1)
+fcomp %st(3)
+fcomps (%ecx)
+fcompl (%eax)
+fcompp
+
+fcomi %st(3)
+fcompi %st(3)
+
+fcos
+
+fdecstp
+
+fdiv %st(0), %st(1)
+fdiv %st(2)
+fdivs (%ecx)
+fdivl (%eax)
+fdivp %st(1)
+fdivp %st(2)
+fidivs (%ecx)
+fidivl (%eax)
+
+fdivr %st(0), %st(1)
+fdivr %st(2)
+fdivrs (%ecx)
+fdivrl (%eax)
+fdivrp %st(1)
+fdivrp %st(2)
+fidivrs (%ecx)
+fidivrl (%eax)
+
+ffree %st(0)
+
+ficoms (%ecx)
+ficoml (%eax)
+ficomps (%ecx)
+ficompl (%eax)
+
+filds (%edx)
+fildl (%ecx)
+fildll (%eax)
+
+fincstp
+
+fninit
+
+fists (%edx)
+fistl (%ecx)
+fistps (%edx)
+fistpl (%ecx)
+fistpll (%eax)
+
+fisttps (%edx)
+fisttpl (%ecx)
+fisttpll (%eax)
+
+fld %st(0)
+flds (%edx)
+fldl (%ecx)
+fldt (%eax)
+
+fldcw (%eax)
+fldenv (%eax)
+
+fld1
+fldl2e
+fldl2t
+fldlg2
+fldln2
+fldpi
+fldz
+
+fmul %st(0), %st(1)
+fmul %st(2)
+fmuls (%ecx)
+fmull (%eax)
+fmulp %st(1)
+fmulp %st(2)
+fimuls (%ecx)
+fimull (%eax)
+
+fnop
+
+fpatan
+
+fprem
+fprem1
+
+fptan
+
+frndint
+
+frstor (%eax)
+
+fnsave (%eax)
+
+fscale
+
+fsin
+
+fsincos
+
+fsqrt
+
+fst %st(0)
+fsts (%edx)
+fstl (%ecx)
+fstp %st(0)
+fstpl (%edx)
+fstpl (%ecx)
+fstpt (%eax)
+
+fnstcw (%eax)
+fnstenv (%eax)
+fnstsw (%eax)
+
+frstor (%eax)
+fsave (%eax)
+
+fsub %st(0), %st(1)
+fsub %st(2)
+fsubs (%ecx)
+fsubl (%eax)
+fsubp %st(1)
+fsubp %st(2)
+fisubs (%ecx)
+fisubl (%eax)
+
+fsubr %st(0), %st(1)
+fsubr %st(2)
+fsubrs (%ecx)
+fsubrl (%eax)
+fsubrp %st(1)
+fsubrp %st(2)
+fisubrs (%ecx)
+fisubrl (%eax)
+
+ftst
+
+fucom %st(1)
+fucom %st(3)
+fucomp %st(1)
+fucomp %st(3)
+fucompp
+
+fucomi %st(3)
+fucompi %st(3)
+
+fwait
+
+fxam
+
+fxch %st(1)
+fxch %st(3)
+
+fxrstor (%eax)
+fxsave (%eax)
+
+fxtract
+
+fyl2x
+fyl2xp1
+
+# 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
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      99    49.50                 * 	f2xm1
+# CHECK-NEXT:  1      1     1.00                  * 	fabs
+# CHECK-NEXT:  1      5     5.00                  * 	fadd	%st(0), %st(1)
+# CHECK-NEXT:  1      5     5.00                  * 	fadd	%st(2)
+# CHECK-NEXT:  1      5     5.00    *             * 	fadds	(%ecx)
+# CHECK-NEXT:  1      5     5.00    *             * 	faddl	(%ecx)
+# CHECK-NEXT:  1      5     5.00                  * 	faddp	%st(1)
+# CHECK-NEXT:  1      5     5.00                  * 	faddp	%st(2)
+# CHECK-NEXT:  1      5     5.00    *             * 	fiadds	(%ecx)
+# CHECK-NEXT:  1      5     5.00    *             * 	fiaddl	(%ecx)
+# CHECK-NEXT:  1      100   0.50                  * 	fbld	(%ecx)
+# CHECK-NEXT:  1      100   0.50                  * 	fbstp	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fchs
+# CHECK-NEXT:  1      25    12.50                 * 	fnclex
+# CHECK-NEXT:  1      9     4.50                  * 	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  1      9     4.50                  * 	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  1      9     4.50                  * 	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  1      9     4.50                  * 	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  1      9     4.50                  * 	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  1      9     4.50                  * 	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  1      9     4.50                  * 	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  1      9     4.50                  * 	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  1      5     5.00                  * 	fcom	%st(1)
+# CHECK-NEXT:  1      5     5.00                  * 	fcom	%st(3)
+# CHECK-NEXT:  1      5     5.00                  * 	fcoms	(%ecx)
+# CHECK-NEXT:  1      5     5.00                  * 	fcoml	(%eax)
+# CHECK-NEXT:  1      5     5.00                  * 	fcomp	%st(1)
+# CHECK-NEXT:  1      5     5.00                  * 	fcomp	%st(3)
+# CHECK-NEXT:  1      5     5.00                  * 	fcomps	(%ecx)
+# CHECK-NEXT:  1      5     5.00                  * 	fcompl	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fcompp
+# CHECK-NEXT:  1      9     4.50                  * 	fcomi	%st(3)
+# CHECK-NEXT:  1      9     4.50                  * 	fcompi	%st(3)
+# CHECK-NEXT:  1      174   87.00                 * 	fcos
+# CHECK-NEXT:  1      1     0.50                  * 	fdecstp
+# CHECK-NEXT:  1      34    17.00                 * 	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  1      34    17.00                 * 	fdiv	%st(2)
+# CHECK-NEXT:  1      34    17.00   *             * 	fdivs	(%ecx)
+# CHECK-NEXT:  1      34    17.00   *             * 	fdivl	(%eax)
+# CHECK-NEXT:  1      34    17.00                 * 	fdivp	%st(1)
+# CHECK-NEXT:  1      34    17.00                 * 	fdivp	%st(2)
+# CHECK-NEXT:  1      34    17.00   *             * 	fidivs	(%ecx)
+# CHECK-NEXT:  1      34    17.00   *             * 	fidivl	(%eax)
+# CHECK-NEXT:  1      34    17.00                 * 	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  1      34    17.00                 * 	fdivr	%st(2)
+# CHECK-NEXT:  1      34    17.00   *             * 	fdivrs	(%ecx)
+# CHECK-NEXT:  1      34    17.00   *             * 	fdivrl	(%eax)
+# CHECK-NEXT:  1      34    17.00                 * 	fdivrp	%st(1)
+# CHECK-NEXT:  1      34    17.00                 * 	fdivrp	%st(2)
+# CHECK-NEXT:  1      34    17.00   *             * 	fidivrs	(%ecx)
+# CHECK-NEXT:  1      34    17.00   *             * 	fidivrl	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	ffree	%st(0)
+# CHECK-NEXT:  1      5     5.00                  * 	ficoms	(%ecx)
+# CHECK-NEXT:  1      5     5.00                  * 	ficoml	(%eax)
+# CHECK-NEXT:  1      5     5.00                  * 	ficomps	(%ecx)
+# CHECK-NEXT:  1      5     5.00                  * 	ficompl	(%eax)
+# CHECK-NEXT:  1      5     5.00    *             * 	filds	(%edx)
+# CHECK-NEXT:  1      5     5.00    *             * 	fildl	(%ecx)
+# CHECK-NEXT:  1      5     5.00    *             * 	fildll	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fincstp
+# CHECK-NEXT:  1      63    31.50                 * 	fninit
+# CHECK-NEXT:  1      6     3.00           *      * 	fists	(%edx)
+# CHECK-NEXT:  1      6     3.00           *      * 	fistl	(%ecx)
+# CHECK-NEXT:  1      6     3.00           *      * 	fistps	(%edx)
+# CHECK-NEXT:  1      6     3.00           *      * 	fistpl	(%ecx)
+# CHECK-NEXT:  1      6     3.00           *      * 	fistpll	(%eax)
+# CHECK-NEXT:  1      2     1.00           *      * 	fisttps	(%edx)
+# CHECK-NEXT:  1      2     1.00           *      * 	fisttpl	(%ecx)
+# CHECK-NEXT:  1      2     1.00           *      * 	fisttpll	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fld	%st(0)
+# CHECK-NEXT:  1      1     1.00    *             * 	flds	(%edx)
+# CHECK-NEXT:  1      1     1.00    *             * 	fldl	(%ecx)
+# CHECK-NEXT:  1      4     2.00    *             * 	fldt	(%eax)
+# CHECK-NEXT:  1      5     2.50    *             * 	fldcw	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fldenv	(%eax)
+# CHECK-NEXT:  1      6     3.00                  * 	fld1
+# CHECK-NEXT:  1      10    5.00                  * 	fldl2e
+# CHECK-NEXT:  1      10    5.00                  * 	fldl2t
+# CHECK-NEXT:  1      10    5.00                  * 	fldlg2
+# CHECK-NEXT:  1      10    5.00                  * 	fldln2
+# CHECK-NEXT:  1      10    5.00                  * 	fldpi
+# CHECK-NEXT:  1      1     0.50                  * 	fldz
+# CHECK-NEXT:  1      4     4.00                  * 	fmul	%st(0), %st(1)
+# CHECK-NEXT:  1      4     4.00                  * 	fmul	%st(2)
+# CHECK-NEXT:  1      4     4.00    *             * 	fmuls	(%ecx)
+# CHECK-NEXT:  1      4     4.00    *             * 	fmull	(%eax)
+# CHECK-NEXT:  1      4     4.00                  * 	fmulp	%st(1)
+# CHECK-NEXT:  1      4     4.00                  * 	fmulp	%st(2)
+# CHECK-NEXT:  1      4     4.00    *             * 	fimuls	(%ecx)
+# CHECK-NEXT:  1      4     4.00    *             * 	fimull	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fnop
+# CHECK-NEXT:  1      183   91.50                 * 	fpatan
+# CHECK-NEXT:  1      55    27.50                 * 	fprem
+# CHECK-NEXT:  1      71    35.50                 * 	fprem1
+# CHECK-NEXT:  1      168   84.00                 * 	fptan
+# CHECK-NEXT:  1      46    23.00                 * 	frndint
+# CHECK-NEXT:  1      100   0.50                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      77    38.50                 * 	fscale
+# CHECK-NEXT:  1      174   87.00                 * 	fsin
+# CHECK-NEXT:  1      174   87.00                 * 	fsincos
+# CHECK-NEXT:  1      71    35.50                 * 	fsqrt
+# CHECK-NEXT:  1      2     1.00                  * 	fst	%st(0)
+# CHECK-NEXT:  1      2     1.00           *      * 	fsts	(%edx)
+# CHECK-NEXT:  1      2     1.00           *      * 	fstl	(%ecx)
+# CHECK-NEXT:  1      2     1.00                  * 	fstp	%st(0)
+# CHECK-NEXT:  1      2     1.00           *      * 	fstpl	(%edx)
+# CHECK-NEXT:  1      2     1.00           *      * 	fstpl	(%ecx)
+# CHECK-NEXT:  1      5     2.50           *      * 	fstpt	(%eax)
+# CHECK-NEXT:  1      8     4.00           *      * 	fnstcw	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fnstenv	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fnstsw	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	wait
+# CHECK-NEXT:  1      100   0.50                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      5     5.00                  * 	fsub	%st(0), %st(1)
+# CHECK-NEXT:  1      5     5.00                  * 	fsub	%st(2)
+# CHECK-NEXT:  1      5     5.00    *             * 	fsubs	(%ecx)
+# CHECK-NEXT:  1      5     5.00    *             * 	fsubl	(%eax)
+# CHECK-NEXT:  1      5     5.00                  * 	fsubp	%st(1)
+# CHECK-NEXT:  1      5     5.00                  * 	fsubp	%st(2)
+# CHECK-NEXT:  1      5     5.00    *             * 	fisubs	(%ecx)
+# CHECK-NEXT:  1      5     5.00    *             * 	fisubl	(%eax)
+# CHECK-NEXT:  1      5     5.00                  * 	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  1      5     5.00                  * 	fsubr	%st(2)
+# CHECK-NEXT:  1      5     5.00    *             * 	fsubrs	(%ecx)
+# CHECK-NEXT:  1      5     5.00    *             * 	fsubrl	(%eax)
+# CHECK-NEXT:  1      5     5.00                  * 	fsubrp	%st(1)
+# CHECK-NEXT:  1      5     5.00                  * 	fsubrp	%st(2)
+# CHECK-NEXT:  1      5     5.00    *             * 	fisubrs	(%ecx)
+# CHECK-NEXT:  1      5     5.00    *             * 	fisubrl	(%eax)
+# CHECK-NEXT:  1      9     4.50                  * 	ftst
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(3)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(3)
+# CHECK-NEXT:  1      1     1.00                  * 	fucompp
+# CHECK-NEXT:  1      9     4.50                  * 	fucomi	%st(3)
+# CHECK-NEXT:  1      9     4.50                  * 	fucompi	%st(3)
+# CHECK-NEXT:  1      1     0.50                  * 	wait
+# CHECK-NEXT:  1      1     1.00                  * 	fxam
+# CHECK-NEXT:  1      1     1.00                  * 	fxch	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fxch	%st(3)
+# CHECK-NEXT:  1      141   70.50   *      *      * 	fxrstor	(%eax)
+# CHECK-NEXT:  1      140   70.00   *      *      * 	fxsave	(%eax)
+# CHECK-NEXT:  1      25    12.50                 * 	fxtract
+# CHECK-NEXT:  1      146   73.00                 * 	fyl2x
+# CHECK-NEXT:  1      147   73.50                 * 	fyl2xp1
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - AtomPort0
+# CHECK-NEXT: [1] - AtomPort1
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]
+# CHECK-NEXT: 1624.00 1416.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    	Instructions:
+# CHECK-NEXT: 49.50  49.50  	f2xm1
+# CHECK-NEXT:  -     1.00   	fabs
+# CHECK-NEXT: 5.00    -     	fadd	%st(0), %st(1)
+# CHECK-NEXT: 5.00    -     	fadd	%st(2)
+# CHECK-NEXT: 5.00    -     	fadds	(%ecx)
+# CHECK-NEXT: 5.00    -     	faddl	(%ecx)
+# CHECK-NEXT: 5.00    -     	faddp	%st(1)
+# CHECK-NEXT: 5.00    -     	faddp	%st(2)
+# CHECK-NEXT: 5.00    -     	fiadds	(%ecx)
+# CHECK-NEXT: 5.00    -     	fiaddl	(%ecx)
+# CHECK-NEXT: 0.50   0.50   	fbld	(%ecx)
+# CHECK-NEXT: 0.50   0.50   	fbstp	(%eax)
+# CHECK-NEXT:  -     1.00   	fchs
+# CHECK-NEXT: 12.50  12.50  	fnclex
+# CHECK-NEXT: 4.50   4.50   	fcmovb	%st(1), %st(0)
+# CHECK-NEXT: 4.50   4.50   	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT: 4.50   4.50   	fcmove	%st(1), %st(0)
+# CHECK-NEXT: 4.50   4.50   	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT: 4.50   4.50   	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT: 4.50   4.50   	fcmovne	%st(1), %st(0)
+# CHECK-NEXT: 4.50   4.50   	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT: 4.50   4.50   	fcmovu	%st(1), %st(0)
+# CHECK-NEXT: 5.00    -     	fcom	%st(1)
+# CHECK-NEXT: 5.00    -     	fcom	%st(3)
+# CHECK-NEXT: 5.00    -     	fcoms	(%ecx)
+# CHECK-NEXT: 5.00    -     	fcoml	(%eax)
+# CHECK-NEXT: 5.00    -     	fcomp	%st(1)
+# CHECK-NEXT: 5.00    -     	fcomp	%st(3)
+# CHECK-NEXT: 5.00    -     	fcomps	(%ecx)
+# CHECK-NEXT: 5.00    -     	fcompl	(%eax)
+# CHECK-NEXT:  -     1.00   	fcompp
+# CHECK-NEXT: 4.50   4.50   	fcomi	%st(3)
+# CHECK-NEXT: 4.50   4.50   	fcompi	%st(3)
+# CHECK-NEXT: 87.00  87.00  	fcos
+# CHECK-NEXT: 0.50   0.50   	fdecstp
+# CHECK-NEXT: 17.00  17.00  	fdiv	%st(0), %st(1)
+# CHECK-NEXT: 17.00  17.00  	fdiv	%st(2)
+# CHECK-NEXT: 17.00  17.00  	fdivs	(%ecx)
+# CHECK-NEXT: 17.00  17.00  	fdivl	(%eax)
+# CHECK-NEXT: 17.00  17.00  	fdivp	%st(1)
+# CHECK-NEXT: 17.00  17.00  	fdivp	%st(2)
+# CHECK-NEXT: 17.00  17.00  	fidivs	(%ecx)
+# CHECK-NEXT: 17.00  17.00  	fidivl	(%eax)
+# CHECK-NEXT: 17.00  17.00  	fdivr	%st(0), %st(1)
+# CHECK-NEXT: 17.00  17.00  	fdivr	%st(2)
+# CHECK-NEXT: 17.00  17.00  	fdivrs	(%ecx)
+# CHECK-NEXT: 17.00  17.00  	fdivrl	(%eax)
+# CHECK-NEXT: 17.00  17.00  	fdivrp	%st(1)
+# CHECK-NEXT: 17.00  17.00  	fdivrp	%st(2)
+# CHECK-NEXT: 17.00  17.00  	fidivrs	(%ecx)
+# CHECK-NEXT: 17.00  17.00  	fidivrl	(%eax)
+# CHECK-NEXT: 0.50   0.50   	ffree	%st(0)
+# CHECK-NEXT: 5.00    -     	ficoms	(%ecx)
+# CHECK-NEXT: 5.00    -     	ficoml	(%eax)
+# CHECK-NEXT: 5.00    -     	ficomps	(%ecx)
+# CHECK-NEXT: 5.00    -     	ficompl	(%eax)
+# CHECK-NEXT: 5.00   5.00   	filds	(%edx)
+# CHECK-NEXT: 5.00   5.00   	fildl	(%ecx)
+# CHECK-NEXT: 5.00   5.00   	fildll	(%eax)
+# CHECK-NEXT: 0.50   0.50   	fincstp
+# CHECK-NEXT: 31.50  31.50  	fninit
+# CHECK-NEXT: 3.00   3.00   	fists	(%edx)
+# CHECK-NEXT: 3.00   3.00   	fistl	(%ecx)
+# CHECK-NEXT: 3.00   3.00   	fistps	(%edx)
+# CHECK-NEXT: 3.00   3.00   	fistpl	(%ecx)
+# CHECK-NEXT: 3.00   3.00   	fistpll	(%eax)
+# CHECK-NEXT: 1.00   1.00   	fisttps	(%edx)
+# CHECK-NEXT: 1.00   1.00   	fisttpl	(%ecx)
+# CHECK-NEXT: 1.00   1.00   	fisttpll	(%eax)
+# CHECK-NEXT: 1.00    -     	fld	%st(0)
+# CHECK-NEXT: 1.00    -     	flds	(%edx)
+# CHECK-NEXT: 1.00    -     	fldl	(%ecx)
+# CHECK-NEXT: 2.00   2.00   	fldt	(%eax)
+# CHECK-NEXT: 2.50   2.50   	fldcw	(%eax)
+# CHECK-NEXT: 0.50   0.50   	fldenv	(%eax)
+# CHECK-NEXT: 3.00   3.00   	fld1
+# CHECK-NEXT: 5.00   5.00   	fldl2e
+# CHECK-NEXT: 5.00   5.00   	fldl2t
+# CHECK-NEXT: 5.00   5.00   	fldlg2
+# CHECK-NEXT: 5.00   5.00   	fldln2
+# CHECK-NEXT: 5.00   5.00   	fldpi
+# CHECK-NEXT: 0.50   0.50   	fldz
+# CHECK-NEXT: 4.00    -     	fmul	%st(0), %st(1)
+# CHECK-NEXT: 4.00    -     	fmul	%st(2)
+# CHECK-NEXT: 4.00    -     	fmuls	(%ecx)
+# CHECK-NEXT: 4.00    -     	fmull	(%eax)
+# CHECK-NEXT: 4.00    -     	fmulp	%st(1)
+# CHECK-NEXT: 4.00    -     	fmulp	%st(2)
+# CHECK-NEXT: 4.00    -     	fimuls	(%ecx)
+# CHECK-NEXT: 4.00    -     	fimull	(%eax)
+# CHECK-NEXT: 0.50   0.50   	fnop
+# CHECK-NEXT: 91.50  91.50  	fpatan
+# CHECK-NEXT: 27.50  27.50  	fprem
+# CHECK-NEXT: 35.50  35.50  	fprem1
+# CHECK-NEXT: 84.00  84.00  	fptan
+# CHECK-NEXT: 23.00  23.00  	frndint
+# CHECK-NEXT: 0.50   0.50   	frstor	(%eax)
+# CHECK-NEXT: 0.50   0.50   	fnsave	(%eax)
+# CHECK-NEXT: 38.50  38.50  	fscale
+# CHECK-NEXT: 87.00  87.00  	fsin
+# CHECK-NEXT: 87.00  87.00  	fsincos
+# CHECK-NEXT: 35.50  35.50  	fsqrt
+# CHECK-NEXT: 1.00   1.00   	fst	%st(0)
+# CHECK-NEXT: 1.00   1.00   	fsts	(%edx)
+# CHECK-NEXT: 1.00   1.00   	fstl	(%ecx)
+# CHECK-NEXT: 1.00   1.00   	fstp	%st(0)
+# CHECK-NEXT: 1.00   1.00   	fstpl	(%edx)
+# CHECK-NEXT: 1.00   1.00   	fstpl	(%ecx)
+# CHECK-NEXT: 2.50   2.50   	fstpt	(%eax)
+# CHECK-NEXT: 4.00   4.00   	fnstcw	(%eax)
+# CHECK-NEXT: 0.50   0.50   	fnstenv	(%eax)
+# CHECK-NEXT: 0.50   0.50   	fnstsw	(%eax)
+# CHECK-NEXT: 0.50   0.50   	frstor	(%eax)
+# CHECK-NEXT: 0.50   0.50   	wait
+# CHECK-NEXT: 0.50   0.50   	fnsave	(%eax)
+# CHECK-NEXT: 5.00    -     	fsub	%st(0), %st(1)
+# CHECK-NEXT: 5.00    -     	fsub	%st(2)
+# CHECK-NEXT: 5.00    -     	fsubs	(%ecx)
+# CHECK-NEXT: 5.00    -     	fsubl	(%eax)
+# CHECK-NEXT: 5.00    -     	fsubp	%st(1)
+# CHECK-NEXT: 5.00    -     	fsubp	%st(2)
+# CHECK-NEXT: 5.00    -     	fisubs	(%ecx)
+# CHECK-NEXT: 5.00    -     	fisubl	(%eax)
+# CHECK-NEXT: 5.00    -     	fsubr	%st(0), %st(1)
+# CHECK-NEXT: 5.00    -     	fsubr	%st(2)
+# CHECK-NEXT: 5.00    -     	fsubrs	(%ecx)
+# CHECK-NEXT: 5.00    -     	fsubrl	(%eax)
+# CHECK-NEXT: 5.00    -     	fsubrp	%st(1)
+# CHECK-NEXT: 5.00    -     	fsubrp	%st(2)
+# CHECK-NEXT: 5.00    -     	fisubrs	(%ecx)
+# CHECK-NEXT: 5.00    -     	fisubrl	(%eax)
+# CHECK-NEXT: 4.50   4.50   	ftst
+# CHECK-NEXT:  -     1.00   	fucom	%st(1)
+# CHECK-NEXT:  -     1.00   	fucom	%st(3)
+# CHECK-NEXT:  -     1.00   	fucomp	%st(1)
+# CHECK-NEXT:  -     1.00   	fucomp	%st(3)
+# CHECK-NEXT:  -     1.00   	fucompp
+# CHECK-NEXT: 4.50   4.50   	fucomi	%st(3)
+# CHECK-NEXT: 4.50   4.50   	fucompi	%st(3)
+# CHECK-NEXT: 0.50   0.50   	wait
+# CHECK-NEXT: 1.00    -     	fxam
+# CHECK-NEXT: 1.00   1.00   	fxch	%st(1)
+# CHECK-NEXT: 1.00   1.00   	fxch	%st(3)
+# CHECK-NEXT: 70.50  70.50  	fxrstor	(%eax)
+# CHECK-NEXT: 70.00  70.00  	fxsave	(%eax)
+# CHECK-NEXT: 12.50  12.50  	fxtract
+# CHECK-NEXT: 73.00  73.00  	fyl2x
+# CHECK-NEXT: 73.50  73.50  	fyl2xp1
+

Modified: llvm/trunk/tools/llvm-mca/llvm-mca.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/llvm-mca.cpp?rev=331169&r1=331168&r2=331169&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/llvm-mca.cpp (original)
+++ llvm/trunk/tools/llvm-mca/llvm-mca.cpp Mon Apr 30 05:05:34 2018
@@ -349,7 +349,7 @@ int main(int argc, char **argv) {
   if (!STI->isCPUStringValid(MCPU))
     return 1;
 
-  if (!STI->getSchedModel().isOutOfOrder()) {
+  if (!PrintInstructionTables && !STI->getSchedModel().isOutOfOrder()) {
     WithColor::error() << "please specify an out-of-order cpu. '" << MCPU
                        << "' is an in-order cpu.\n";
     return 1;




More information about the llvm-commits mailing list