[llvm] r330486 - [llvm-mca][X86] Add MMX/SSE/AES/CLMUL resource SandyBridge tests

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 20 15:04:11 PDT 2018


Author: rksimon
Date: Fri Apr 20 15:04:11 2018
New Revision: 330486

URL: http://llvm.org/viewvc/llvm-project?rev=330486&view=rev
Log:
[llvm-mca][X86] Add MMX/SSE/AES/CLMUL resource SandyBridge tests

Added:
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-mmx.s
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse2.s
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse3.s
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse41.s
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-ssse3.s

Added: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s?rev=330486&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-aes.s Fri Apr 20 15:04:11 2018
@@ -0,0 +1,72 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -instruction-tables < %s | FileCheck %s
+
+aesdec          %xmm0, %xmm2
+aesdec          (%rax), %xmm2
+
+aesdeclast      %xmm0, %xmm2
+aesdeclast      (%rax), %xmm2
+
+aesenc          %xmm0, %xmm2
+aesenc          (%rax), %xmm2
+
+aesenclast      %xmm0, %xmm2
+aesenclast      (%rax), %xmm2
+
+aesimc          %xmm0, %xmm2
+aesimc          (%rax), %xmm2
+
+aeskeygenassist $22, %xmm0, %xmm2
+aeskeygenassist $22, (%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:  2      7     1.00                    	aesdec	%xmm0, %xmm2
+# CHECK-NEXT:  3      13    1.00    *               	aesdec	(%rax), %xmm2
+# CHECK-NEXT:  2      7     1.00                    	aesdeclast	%xmm0, %xmm2
+# CHECK-NEXT:  3      13    1.00    *               	aesdeclast	(%rax), %xmm2
+# CHECK-NEXT:  2      7     1.00                    	aesenc	%xmm0, %xmm2
+# CHECK-NEXT:  3      13    1.00    *               	aesenc	(%rax), %xmm2
+# CHECK-NEXT:  2      7     1.00                    	aesenclast	%xmm0, %xmm2
+# CHECK-NEXT:  3      13    1.00    *               	aesenclast	(%rax), %xmm2
+# CHECK-NEXT:  2      12    2.00                    	aesimc	%xmm0, %xmm2
+# CHECK-NEXT:  3      18    2.00    *               	aesimc	(%rax), %xmm2
+# CHECK-NEXT:  1      8     3.67                    	aeskeygenassist	$22, %xmm0, %xmm2
+# CHECK-NEXT:  1      8     3.33    *               	aeskeygenassist	$22, (%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -      -     9.67   9.67    -     21.67  3.00   3.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  	Instructions:
+# CHECK-NEXT:  -      -     0.33   0.33    -     1.33    -      -     	aesdec	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     1.33   0.50   0.50   	aesdec	(%rax), %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     1.33    -      -     	aesdeclast	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     1.33   0.50   0.50   	aesdeclast	(%rax), %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     1.33    -      -     	aesenc	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     1.33   0.50   0.50   	aesenc	(%rax), %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     1.33    -      -     	aesenclast	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     1.33   0.50   0.50   	aesenclast	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     2.00    -      -     	aesimc	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     2.00   0.50   0.50   	aesimc	(%rax), %xmm2
+# CHECK-NEXT:  -      -     3.67   3.67    -     3.67    -      -     	aeskeygenassist	$22, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     3.33   3.33    -     3.33   0.50   0.50   	aeskeygenassist	$22, (%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s?rev=330486&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-clmul.s Fri Apr 20 15:04:11 2018
@@ -0,0 +1,37 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -instruction-tables < %s | FileCheck %s
+
+pclmulqdq     $11, %xmm0, %xmm2
+pclmulqdq     $11, (%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      14    6.00                    	pclmulqdq	$11, %xmm0, %xmm2
+# CHECK-NEXT:  1      14    5.67    *               	pclmulqdq	$11, (%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -      -     11.67  11.67   -     11.67  0.50   0.50
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  	Instructions:
+# CHECK-NEXT:  -      -     6.00   6.00    -     6.00    -      -     	pclmulqdq	$11, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     5.67   5.67    -     5.67   0.50   0.50   	pclmulqdq	$11, (%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-mmx.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-mmx.s?rev=330486&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-mmx.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-mmx.s Fri Apr 20 15:04:11 2018
@@ -0,0 +1,394 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -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      100   0.33    *      *      * 	emms
+# CHECK-NEXT:  1      1     0.33                    	movd	%eax, %mm2
+# CHECK-NEXT:  1      5     0.50    *               	movd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.33                    	movd	%mm0, %ecx
+# CHECK-NEXT:  1      1     1.00           *      * 	movd	%mm0, (%rax)
+# CHECK-NEXT:  1      1     0.33                    	movq	%rax, %mm2
+# CHECK-NEXT:  1      5     0.50    *               	movq	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.33                    	movq	%mm0, %rcx
+# CHECK-NEXT:  1      1     1.00           *        	movq	%mm0, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	packsswb	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	packsswb	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	packssdw	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	packssdw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	packuswb	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	packuswb	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	paddb	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	paddb	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	paddd	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	paddd	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	paddsb	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	paddsb	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	paddsw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	paddsw	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	paddusb	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	paddusb	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	paddusw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	paddusw	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	paddw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	paddw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.33                    	pand	%mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	pand	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.33                    	pandn	%mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	pandn	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pcmpeqb	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pcmpeqb	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pcmpeqd	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pcmpeqd	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pcmpeqw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pcmpeqw	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pcmpgtb	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pcmpgtb	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pcmpgtd	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pcmpgtd	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pcmpgtw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pcmpgtw	(%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                    	pmaddwd	%mm0, %mm2
+# CHECK-NEXT:  2      11    1.00    *               	pmaddwd	(%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                    	pmulhw	%mm0, %mm2
+# CHECK-NEXT:  2      11    1.00    *               	pmulhw	(%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                    	pmullw	%mm0, %mm2
+# CHECK-NEXT:  2      11    1.00    *               	pmullw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.33                    	por	%mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	por	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	pslld	$1, %mm2
+# CHECK-NEXT:  1      1     1.00                    	pslld	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	pslld	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	psllq	$1, %mm2
+# CHECK-NEXT:  1      1     1.00                    	psllq	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	psllq	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	psllw	$1, %mm2
+# CHECK-NEXT:  1      1     1.00                    	psllw	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	psllw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	psrad	$1, %mm2
+# CHECK-NEXT:  1      1     1.00                    	psrad	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	psrad	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	psraw	$1, %mm2
+# CHECK-NEXT:  1      1     1.00                    	psraw	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	psraw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	psrld	$1, %mm2
+# CHECK-NEXT:  1      1     1.00                    	psrld	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	psrld	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	psrlq	$1, %mm2
+# CHECK-NEXT:  1      1     1.00                    	psrlq	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	psrlq	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	psrlw	$1, %mm2
+# CHECK-NEXT:  1      1     1.00                    	psrlw	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	psrlw	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	psubb	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	psubb	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	psubd	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	psubd	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	psubsb	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	psubsb	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	psubsw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	psubsw	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	psubusb	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	psubusb	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	psubusw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	psubusw	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	psubw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	psubw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	punpckhbw	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	punpckhbw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	punpckhdq	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	punpckhdq	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	punpckhwd	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	punpckhwd	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	punpcklbw	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	punpcklbw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	punpckldq	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	punpckldq	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	punpcklwd	%mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	punpcklwd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.33                    	pxor	%mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	pxor	(%rax), %mm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -      -     10.33  44.33  2.00   46.33  24.00  24.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  	Instructions:
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	emms
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	movd	%eax, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movd	(%rax), %mm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	movd	%mm0, %ecx
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movd	%mm0, (%rax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	movq	%rax, %mm2
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movq	(%rax), %mm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	movq	%mm0, %rcx
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movq	%mm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	packsswb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	packsswb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	packssdw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	packssdw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	packuswb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	packuswb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	paddb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	paddb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	paddd	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	paddd	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	paddsb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	paddsb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	paddsw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	paddsw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	paddusb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	paddusb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	paddusw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	paddusw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	paddw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	paddw	(%rax), %mm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	pand	%mm0, %mm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33   0.50   0.50   	pand	(%rax), %mm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	pandn	%mm0, %mm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33   0.50   0.50   	pandn	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pcmpeqb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pcmpeqb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pcmpeqd	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pcmpeqd	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pcmpeqw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pcmpeqw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pcmpgtb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pcmpgtb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pcmpgtd	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pcmpgtd	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pcmpgtw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pcmpgtw	(%rax), %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmaddwd	%mm0, %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmaddwd	(%rax), %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmulhw	%mm0, %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmulhw	(%rax), %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmullw	%mm0, %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmullw	(%rax), %mm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	por	%mm0, %mm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33   0.50   0.50   	por	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	pslld	$1, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	pslld	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	pslld	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psllq	$1, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psllq	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	psllq	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psllw	$1, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psllw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	psllw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psrad	$1, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psrad	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	psrad	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psraw	$1, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psraw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	psraw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psrld	$1, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psrld	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	psrld	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psrlq	$1, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psrlq	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	psrlq	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psrlw	$1, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	psrlw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	psrlw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	psubb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	psubb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	psubd	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	psubd	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	psubsb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	psubsb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	psubsw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	psubsw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	psubusb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	psubusb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	psubusw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	psubusw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	psubw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	psubw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	punpckhbw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	punpckhbw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	punpckhdq	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	punpckhdq	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	punpckhwd	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	punpckhwd	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	punpcklbw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	punpcklbw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	punpckldq	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	punpckldq	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	punpcklwd	%mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	punpcklwd	(%rax), %mm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	pxor	%mm0, %mm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33   0.50   0.50   	pxor	(%rax), %mm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s?rev=330486&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s Fri Apr 20 15:04:11 2018
@@ -0,0 +1,462 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -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      3     1.00                    	addps	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	addps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	addss	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	addss	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	andnps	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	andnps	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	andps	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	andps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	cmpps	$0, %xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	cmpps	$0, (%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	cmpss	$0, %xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	cmpss	$0, (%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	comiss	%xmm0, %xmm1
+# CHECK-NEXT:  3      8     1.00    *               	comiss	(%rax), %xmm1
+# CHECK-NEXT:  1      3     1.00                    	cvtpi2ps	%mm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	cvtpi2ps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	cvtps2pi	%xmm0, %mm2
+# CHECK-NEXT:  2      9     1.00    *               	cvtps2pi	(%rax), %mm2
+# CHECK-NEXT:  3      5     2.00                    	cvtsi2ssl	%ecx, %xmm2
+# CHECK-NEXT:  3      5     2.00                    	cvtsi2ssq	%rcx, %xmm2
+# CHECK-NEXT:  3      10    1.00    *               	cvtsi2ssl	(%rax), %xmm2
+# CHECK-NEXT:  3      10    1.00    *               	cvtsi2ssl	(%rax), %xmm2
+# CHECK-NEXT:  2      5     1.00                    	cvtss2si	%xmm0, %ecx
+# CHECK-NEXT:  2      5     1.00                    	cvtss2si	%xmm0, %rcx
+# CHECK-NEXT:  3      9     1.00    *               	cvtss2si	(%rax), %ecx
+# CHECK-NEXT:  3      9     1.00    *               	cvtss2si	(%rax), %rcx
+# CHECK-NEXT:  1      3     1.00                    	cvttps2pi	%xmm0, %mm2
+# CHECK-NEXT:  2      9     1.00    *               	cvttps2pi	(%rax), %mm2
+# CHECK-NEXT:  2      5     1.00                    	cvttss2si	%xmm0, %ecx
+# CHECK-NEXT:  2      5     1.00                    	cvttss2si	%xmm0, %rcx
+# CHECK-NEXT:  3      9     1.00    *               	cvttss2si	(%rax), %ecx
+# CHECK-NEXT:  3      9     1.00    *               	cvttss2si	(%rax), %rcx
+# CHECK-NEXT:  1      14    14.00                   	divps	%xmm0, %xmm2
+# CHECK-NEXT:  2      20    14.00   *               	divps	(%rax), %xmm2
+# CHECK-NEXT:  1      14    14.00                   	divss	%xmm0, %xmm2
+# CHECK-NEXT:  2      20    14.00   *               	divss	(%rax), %xmm2
+# CHECK-NEXT:  4      5     1.00    *      *      * 	ldmxcsr	(%rax)
+# CHECK-NEXT:  1      1     1.00    *      *      * 	maskmovq	%mm0, %mm1
+# CHECK-NEXT:  1      3     1.00                    	maxps	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	maxps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	maxss	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	maxss	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	minps	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	minps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	minss	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	minss	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movaps	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movaps	%xmm0, (%rax)
+# CHECK-NEXT:  1      6     0.50    *               	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:  2      7     1.00    *               	movhps	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movlps	%xmm0, (%rax)
+# CHECK-NEXT:  2      7     1.00    *               	movlps	(%rax), %xmm2
+# CHECK-NEXT:  1      2     1.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     1.00                    	movss	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movss	%xmm0, (%rax)
+# CHECK-NEXT:  1      6     0.50    *               	movss	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movups	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movups	%xmm0, (%rax)
+# CHECK-NEXT:  1      6     0.50    *               	movups	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	mulps	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	mulps	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	mulss	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	mulss	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	orps	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	orps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	pavgb	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pavgb	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pavgw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pavgw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	pextrw	$1, %mm0, %ecx
+# CHECK-NEXT:  1      1     1.00                    	pinsrw	$1, %eax, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	pinsrw	$1, (%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pmaxsw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pmaxsw	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pmaxub	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pmaxub	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pminsw	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pminsw	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	pminub	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	pminub	(%rax), %mm2
+# CHECK-NEXT:  1      2     1.00                    	pmovmskb	%xmm0, %ecx
+# CHECK-NEXT:  1      5     1.00                    	pmulhuw	%mm0, %mm2
+# CHECK-NEXT:  2      11    1.00    *               	pmulhuw	(%rax), %mm2
+# CHECK-NEXT:  1      5     0.50    *      *        	prefetcht0	(%rax)
+# CHECK-NEXT:  1      5     0.50    *      *        	prefetcht1	(%rax)
+# CHECK-NEXT:  1      5     0.50    *      *        	prefetcht2	(%rax)
+# CHECK-NEXT:  1      5     0.50    *      *        	prefetchnta	(%rax)
+# CHECK-NEXT:  1      5     1.00                    	psadbw	%mm0, %mm2
+# CHECK-NEXT:  2      11    1.00    *               	psadbw	(%rax), %mm2
+# CHECK-NEXT:  1      1     1.00                    	pshufw	$1, %mm0, %mm2
+# CHECK-NEXT:  2      6     1.00    *               	pshufw	$1, (%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                    	rcpps	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	rcpps	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	rcpss	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	rcpss	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	rsqrtps	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	rsqrtps	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	rsqrtss	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	rsqrtss	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00    *      *      * 	sfence
+# CHECK-NEXT:  1      1     1.00                    	shufps	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	shufps	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      14    14.00                   	sqrtps	%xmm0, %xmm2
+# CHECK-NEXT:  2      20    14.00   *               	sqrtps	(%rax), %xmm2
+# CHECK-NEXT:  1      14    14.00                   	sqrtss	%xmm0, %xmm2
+# CHECK-NEXT:  2      20    14.00   *               	sqrtss	(%rax), %xmm2
+# CHECK-NEXT:  4      5     1.00    *      *      * 	stmxcsr	(%rax)
+# CHECK-NEXT:  1      3     1.00                    	subps	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	subps	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	subss	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	subss	(%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	ucomiss	%xmm0, %xmm1
+# CHECK-NEXT:  3      8     1.00    *               	ucomiss	(%rax), %xmm1
+# CHECK-NEXT:  1      1     1.00                    	unpckhps	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	unpckhps	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	unpcklps	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	unpcklps	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	xorps	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	xorps	(%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -     112.00 40.00  54.00  10.00  35.00  33.50  33.50
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  	Instructions:
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	addps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	addps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	addss	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	addss	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	andnps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	andnps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	andps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	andps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	cmpps	$0, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cmpps	$0, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	cmpss	$0, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cmpss	$0, (%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	comiss	%xmm0, %xmm1
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	comiss	(%rax), %xmm1
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	cvtpi2ps	%mm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cvtpi2ps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	cvtps2pi	%xmm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cvtps2pi	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -     2.00    -      -     	cvtsi2ssl	%ecx, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     2.00    -      -     	cvtsi2ssq	%rcx, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	cvtsi2ssl	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	cvtsi2ssl	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	cvtss2si	%xmm0, %ecx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	cvtss2si	%xmm0, %rcx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	cvtss2si	(%rax), %ecx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	cvtss2si	(%rax), %rcx
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	cvttps2pi	%xmm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cvttps2pi	(%rax), %mm2
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	cvttss2si	%xmm0, %ecx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	cvttss2si	%xmm0, %rcx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	cvttss2si	(%rax), %ecx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	cvttss2si	(%rax), %rcx
+# CHECK-NEXT:  -     14.00  1.00    -      -      -      -      -     	divps	%xmm0, %xmm2
+# CHECK-NEXT:  -     14.00  1.00    -      -      -     0.50   0.50   	divps	(%rax), %xmm2
+# CHECK-NEXT:  -     14.00  1.00    -      -      -      -      -     	divss	%xmm0, %xmm2
+# CHECK-NEXT:  -     14.00  1.00    -      -      -     0.50   0.50   	divss	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -     1.00   1.00   0.50   0.50   	ldmxcsr	(%rax)
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	maskmovq	%mm0, %mm1
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	maxps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	maxps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	maxss	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	maxss	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	minps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	minps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	minss	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	minss	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movaps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movaps	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movaps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movhlps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movlhps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movhps	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	movhps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movlps	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	movlps	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	movmskps	%xmm0, %ecx
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movntps	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movntq	%mm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movss	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movss	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movss	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movups	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movups	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movups	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	mulps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	mulps	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	mulss	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	mulss	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	orps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	orps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pavgb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pavgb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pavgw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pavgw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	pextrw	$1, %mm0, %ecx
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	pinsrw	$1, %eax, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	pinsrw	$1, (%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pmaxsw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pmaxsw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pmaxub	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pmaxub	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pminsw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pminsw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	pminub	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	pminub	(%rax), %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmovmskb	%xmm0, %ecx
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmulhuw	%mm0, %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmulhuw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	prefetcht0	(%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	prefetcht1	(%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	prefetcht2	(%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	prefetchnta	(%rax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	psadbw	%mm0, %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	psadbw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	pshufw	$1, %mm0, %mm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	pshufw	$1, (%rax), %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	rcpps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	rcpps	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	rcpss	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	rcpss	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	rsqrtps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	rsqrtps	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	rsqrtss	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	rsqrtss	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	sfence
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	shufps	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	shufps	$1, (%rax), %xmm2
+# CHECK-NEXT:  -     14.00  1.00    -      -      -      -      -     	sqrtps	%xmm0, %xmm2
+# CHECK-NEXT:  -     14.00  1.00    -      -      -     0.50   0.50   	sqrtps	(%rax), %xmm2
+# CHECK-NEXT:  -     14.00  1.00    -      -      -      -      -     	sqrtss	%xmm0, %xmm2
+# CHECK-NEXT:  -     14.00  1.00    -      -      -     0.50   0.50   	sqrtss	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -     1.00   1.00   0.50   0.50   	stmxcsr	(%rax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	subps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	subps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	subss	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	subss	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	ucomiss	%xmm0, %xmm1
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	ucomiss	(%rax), %xmm1
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	unpckhps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	unpckhps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	unpcklps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	unpcklps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	xorps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	xorps	(%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse2.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse2.s?rev=330486&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse2.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse2.s Fri Apr 20 15:04:11 2018
@@ -0,0 +1,950 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -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      3     1.00                    	addpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	addpd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	addsd	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	addsd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	addsubpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	addsubpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	andnpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	andnpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	andpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	andpd	(%rax), %xmm2
+# CHECK-NEXT:  4      5     1.00    *      *      * 	clflush	(%rax)
+# CHECK-NEXT:  1      3     1.00                    	cmppd	$0, %xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	cmppd	$0, (%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	cmpsd	$0, %xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	cmpsd	$0, (%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	comisd	%xmm0, %xmm1
+# CHECK-NEXT:  3      8     1.00    *               	comisd	(%rax), %xmm1
+# CHECK-NEXT:  2      4     1.00                    	cvtdq2pd	%xmm0, %xmm2
+# CHECK-NEXT:  3      10    1.00    *               	cvtdq2pd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	cvtdq2ps	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	cvtdq2ps	(%rax), %xmm2
+# CHECK-NEXT:  2      4     1.00                    	cvtpd2dq	%xmm0, %xmm2
+# CHECK-NEXT:  3      10    1.00    *               	cvtpd2dq	(%rax), %xmm2
+# CHECK-NEXT:  2      4     1.00                    	cvtpd2pi	%xmm0, %mm2
+# CHECK-NEXT:  3      10    1.00    *               	cvtpd2pi	(%rax), %mm2
+# CHECK-NEXT:  2      4     1.00                    	cvtpd2ps	%xmm0, %xmm2
+# CHECK-NEXT:  3      10    1.00    *               	cvtpd2ps	(%rax), %xmm2
+# CHECK-NEXT:  2      4     1.00                    	cvtpi2pd	%mm0, %xmm2
+# CHECK-NEXT:  3      10    1.00    *               	cvtpi2pd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	cvtps2dq	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	cvtps2dq	(%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	cvtps2pd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	cvtps2pd	(%rax), %xmm2
+# CHECK-NEXT:  2      5     1.00                    	cvtsd2si	%xmm0, %ecx
+# CHECK-NEXT:  2      5     1.00                    	cvtsd2si	%xmm0, %rcx
+# CHECK-NEXT:  3      9     1.00    *               	cvtsd2si	(%rax), %ecx
+# CHECK-NEXT:  3      9     1.00    *               	cvtsd2si	(%rax), %rcx
+# CHECK-NEXT:  2      4     1.00                    	cvtsd2ss	%xmm0, %xmm2
+# CHECK-NEXT:  3      10    1.00    *               	cvtsd2ss	(%rax), %xmm2
+# CHECK-NEXT:  2      4     1.00                    	cvtsi2sdl	%ecx, %xmm2
+# CHECK-NEXT:  2      4     1.00                    	cvtsi2sdq	%rcx, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	cvtsi2sdl	(%rax), %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	cvtsi2sdl	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	cvtss2sd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	cvtss2sd	(%rax), %xmm2
+# CHECK-NEXT:  2      4     1.00                    	cvttpd2dq	%xmm0, %xmm2
+# CHECK-NEXT:  3      10    1.00    *               	cvttpd2dq	(%rax), %xmm2
+# CHECK-NEXT:  2      4     1.00                    	cvttpd2pi	%xmm0, %mm2
+# CHECK-NEXT:  3      10    1.00    *               	cvttpd2pi	(%rax), %mm2
+# CHECK-NEXT:  1      3     1.00                    	cvttps2dq	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	cvttps2dq	(%rax), %xmm2
+# CHECK-NEXT:  2      5     1.00                    	cvttsd2si	%xmm0, %ecx
+# CHECK-NEXT:  2      5     1.00                    	cvttsd2si	%xmm0, %rcx
+# CHECK-NEXT:  3      9     1.00    *               	cvttsd2si	(%rax), %ecx
+# CHECK-NEXT:  3      9     1.00    *               	cvttsd2si	(%rax), %rcx
+# CHECK-NEXT:  1      22    22.00                   	divpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      28    22.00   *               	divpd	(%rax), %xmm2
+# CHECK-NEXT:  1      22    22.00                   	divsd	%xmm0, %xmm2
+# CHECK-NEXT:  2      28    22.00   *               	divsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00    *      *      * 	lfence
+# CHECK-NEXT:  1      1     1.00    *      *      * 	maskmovdqu	%xmm0, %xmm1
+# CHECK-NEXT:  1      3     1.00                    	maxpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	maxpd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	maxsd	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	maxsd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	minpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	minpd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	minsd	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	minsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movapd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movapd	%xmm0, (%rax)
+# CHECK-NEXT:  1      6     0.50    *               	movapd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movd	%eax, %xmm2
+# CHECK-NEXT:  1      6     0.50    *               	movd	(%rax), %xmm2
+# CHECK-NEXT:  1      2     1.00                    	movd	%xmm0, %ecx
+# CHECK-NEXT:  1      1     1.00           *        	movd	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     0.33                    	movdqa	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movdqa	%xmm0, (%rax)
+# CHECK-NEXT:  1      6     0.50    *               	movdqa	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.33                    	movdqu	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movdqu	%xmm0, (%rax)
+# CHECK-NEXT:  1      6     0.50    *               	movdqu	(%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	movdq2q	%xmm0, %mm2
+# CHECK-NEXT:  1      1     1.00           *        	movhpd	%xmm0, (%rax)
+# CHECK-NEXT:  2      7     1.00    *               	movhpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movlpd	%xmm0, (%rax)
+# CHECK-NEXT:  2      7     1.00    *               	movlpd	(%rax), %xmm2
+# CHECK-NEXT:  1      2     1.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.33                    	movq	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movq	%rax, %xmm2
+# CHECK-NEXT:  1      6     0.50    *               	movq	(%rax), %xmm2
+# CHECK-NEXT:  1      2     1.00                    	movq	%xmm0, %rcx
+# CHECK-NEXT:  1      1     1.00           *        	movq	%xmm0, (%rax)
+# CHECK-NEXT:  1      1     0.33                    	movq2dq	%mm0, %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movsd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movsd	%xmm0, (%rax)
+# CHECK-NEXT:  1      6     0.50    *               	movsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movupd	%xmm0, %xmm2
+# CHECK-NEXT:  1      1     1.00           *        	movupd	%xmm0, (%rax)
+# CHECK-NEXT:  1      6     0.50    *               	movupd	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	mulpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	mulpd	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	mulsd	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	mulsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	orpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	orpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	packssdw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	packssdw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	packsswb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	packsswb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	packuswb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	packuswb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	paddb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	paddd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddq	%mm0, %mm2
+# CHECK-NEXT:  2      7     0.50    *               	paddq	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	paddq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	paddq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddsb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	paddsb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddsw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	paddsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddusb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	paddusb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddusw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	paddusw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	paddw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	paddw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.33                    	pand	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pand	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.33                    	pandn	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pandn	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pavgb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pavgb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pavgw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pavgw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpeqb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pcmpeqb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpeqd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pcmpeqd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpeqw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pcmpeqw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpgtb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pcmpgtb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpgtd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pcmpgtd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpgtw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pcmpgtw	(%rax), %xmm2
+# CHECK-NEXT:  2      3     1.00                    	pextrw	$1, %xmm0, %ecx
+# CHECK-NEXT:  1      5     1.00                    	pmaddwd	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	pmaddwd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmaxsw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmaxsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmaxub	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmaxub	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pminsw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pminsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pminub	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pminub	(%rax), %xmm2
+# CHECK-NEXT:  1      2     1.00                    	pmovmskb	%xmm0, %ecx
+# CHECK-NEXT:  1      5     1.00                    	pmulhuw	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	pmulhuw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	pmulhw	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	pmulhw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	pmullw	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	pmullw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	pmuludq	%mm0, %mm2
+# CHECK-NEXT:  2      11    1.00    *               	pmuludq	(%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                    	pmuludq	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	pmuludq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.33                    	por	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	por	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	psadbw	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	psadbw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pshufd	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pshufd	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pshufhw	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pshufhw	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pshuflw	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pshuflw	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	pslld	$1, %xmm2
+# CHECK-NEXT:  2      2     1.00                    	pslld	%xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	pslld	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pslldq	$1, %xmm2
+# CHECK-NEXT:  1      1     1.00                    	psllq	$1, %xmm2
+# CHECK-NEXT:  2      2     1.00                    	psllq	%xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	psllq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	psllw	$1, %xmm2
+# CHECK-NEXT:  2      2     1.00                    	psllw	%xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	psllw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	psrad	$1, %xmm2
+# CHECK-NEXT:  2      2     1.00                    	psrad	%xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	psrad	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	psraw	$1, %xmm2
+# CHECK-NEXT:  2      2     1.00                    	psraw	%xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	psraw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	psrld	$1, %xmm2
+# CHECK-NEXT:  2      2     1.00                    	psrld	%xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	psrld	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psrldq	$1, %xmm2
+# CHECK-NEXT:  1      1     1.00                    	psrlq	$1, %xmm2
+# CHECK-NEXT:  2      2     1.00                    	psrlq	%xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	psrlq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	psrlw	$1, %xmm2
+# CHECK-NEXT:  2      2     1.00                    	psrlw	%xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	psrlw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psubb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psubd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	psubq	%mm0, %mm2
+# CHECK-NEXT:  2      8     1.00    *               	psubq	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psubq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psubq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubsb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psubsb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubsw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psubsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubusb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psubusb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubusw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psubusw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psubw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psubw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	punpckhbw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	punpckhbw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	punpckhdq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	punpckhdq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	punpckhqdq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	punpckhqdq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	punpckhwd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	punpckhwd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	punpcklbw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	punpcklbw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	punpckldq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	punpckldq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	punpcklqdq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	punpcklqdq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	punpcklwd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	punpcklwd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.33                    	pxor	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pxor	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	shufpd	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	shufpd	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      21    21.00                   	sqrtpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      27    21.00   *               	sqrtpd	(%rax), %xmm2
+# CHECK-NEXT:  1      21    21.00                   	sqrtsd	%xmm0, %xmm2
+# CHECK-NEXT:  2      27    21.00   *               	sqrtsd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	subpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	subpd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	subsd	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	subsd	(%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	ucomisd	%xmm0, %xmm1
+# CHECK-NEXT:  3      8     1.00    *               	ucomisd	(%rax), %xmm1
+# CHECK-NEXT:  1      1     1.00                    	unpckhpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	unpckhpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	unpcklpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	unpcklpd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	xorpd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	xorpd	(%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -     172.00 75.83  119.33 14.00  98.83  65.50  65.50
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  	Instructions:
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	addpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	addpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	addsd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	addsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	addsubpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	addsubpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	andnpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	andnpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	andpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	andpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -     0.50   0.50   1.00   1.00   0.50   0.50   	clflush	(%rax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	cmppd	$0, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cmppd	$0, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	cmpsd	$0, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cmpsd	$0, (%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	comisd	%xmm0, %xmm1
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	comisd	(%rax), %xmm1
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	cvtdq2pd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	cvtdq2pd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	cvtdq2ps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cvtdq2ps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	cvtpd2dq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	cvtpd2dq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	cvtpd2pi	%xmm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	cvtpd2pi	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	cvtpd2ps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	cvtpd2ps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	cvtpi2pd	%mm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	cvtpi2pd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	cvtps2dq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cvtps2dq	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -     1.00    -      -     	cvtps2pd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	cvtps2pd	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	cvtsd2si	%xmm0, %ecx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	cvtsd2si	%xmm0, %rcx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	cvtsd2si	(%rax), %ecx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	cvtsd2si	(%rax), %rcx
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	cvtsd2ss	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	cvtsd2ss	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	cvtsi2sdl	%ecx, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	cvtsi2sdq	%rcx, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cvtsi2sdl	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cvtsi2sdl	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	cvtss2sd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	cvtss2sd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	cvttpd2dq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	cvttpd2dq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	cvttpd2pi	%xmm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	cvttpd2pi	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	cvttps2dq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	cvttps2dq	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	cvttsd2si	%xmm0, %ecx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	cvttsd2si	%xmm0, %rcx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	cvttsd2si	(%rax), %ecx
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	cvttsd2si	(%rax), %rcx
+# CHECK-NEXT:  -     22.00  1.00    -      -      -      -      -     	divpd	%xmm0, %xmm2
+# CHECK-NEXT:  -     22.00  1.00    -      -      -     0.50   0.50   	divpd	(%rax), %xmm2
+# CHECK-NEXT:  -     22.00  1.00    -      -      -      -      -     	divsd	%xmm0, %xmm2
+# CHECK-NEXT:  -     22.00  1.00    -      -      -     0.50   0.50   	divsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	lfence
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	maskmovdqu	%xmm0, %xmm1
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	maxpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	maxpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	maxsd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	maxsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	minpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	minpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	minsd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	minsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movapd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movapd	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movapd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movd	%eax, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movd	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	movd	%xmm0, %ecx
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movd	%xmm0, (%rax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	movdqa	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movdqa	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movdqa	(%rax), %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	movdqu	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movdqu	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movdqu	(%rax), %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     1.33    -      -     	movdq2q	%xmm0, %mm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movhpd	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	movhpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movlpd	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	movlpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	movmskpd	%xmm0, %ecx
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movntdq	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movntpd	%xmm0, (%rax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	movq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movq	%rax, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movq	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	movq	%xmm0, %rcx
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movq	%xmm0, (%rax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	movq2dq	%mm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movsd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movsd	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movupd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -     1.00    -     0.50   0.50   	movupd	%xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movupd	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	mulpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	mulpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	mulsd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	mulsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	orpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	orpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	packssdw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	packssdw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	packsswb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	packsswb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	packuswb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	packuswb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	paddb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	paddb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	paddd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	paddd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	paddq	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	paddq	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	paddq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	paddq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	paddsb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	paddsb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	paddsw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	paddsw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	paddusb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	paddusb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	paddusw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	paddusw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	paddw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	paddw	(%rax), %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	pand	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33   0.50   0.50   	pand	(%rax), %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	pandn	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33   0.50   0.50   	pandn	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pavgb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pavgb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pavgw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pavgw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pcmpeqb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pcmpeqb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pcmpeqd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pcmpeqd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pcmpeqw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pcmpeqw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pcmpgtb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pcmpgtb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pcmpgtd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pcmpgtd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pcmpgtw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pcmpgtw	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	pextrw	$1, %xmm0, %ecx
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmaddwd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmaddwd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmaxsw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmaxsw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmaxub	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmaxub	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pminsw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pminsw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pminub	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pminub	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmovmskb	%xmm0, %ecx
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmulhuw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmulhuw	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmulhw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmulhw	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmullw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmullw	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmuludq	%mm0, %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmuludq	(%rax), %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmuludq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmuludq	(%rax), %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	por	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33   0.50   0.50   	por	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	psadbw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	psadbw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pshufd	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pshufd	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pshufhw	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pshufhw	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pshuflw	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pshuflw	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pslld	$1, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	pslld	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50   0.50   0.50   	pslld	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pslldq	$1, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	psllq	$1, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	psllq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50   0.50   0.50   	psllq	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	psllw	$1, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	psllw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50   0.50   0.50   	psllw	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	psrad	$1, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	psrad	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50   0.50   0.50   	psrad	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	psraw	$1, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	psraw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50   0.50   0.50   	psraw	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	psrld	$1, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	psrld	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50   0.50   0.50   	psrld	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psrldq	$1, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	psrlq	$1, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	psrlq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50   0.50   0.50   	psrlq	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	psrlw	$1, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	psrlw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50   0.50   0.50   	psrlw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psubb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psubb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psubd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psubd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	psubq	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	psubq	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psubq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psubq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psubsb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psubsb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psubsw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psubsw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psubusb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psubusb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psubusw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psubusw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psubw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psubw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	punpckhbw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	punpckhbw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	punpckhdq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	punpckhdq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	punpckhqdq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	punpckhqdq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	punpckhwd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	punpckhwd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	punpcklbw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	punpcklbw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	punpckldq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	punpckldq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	punpcklqdq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	punpcklqdq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	punpcklwd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	punpcklwd	(%rax), %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	pxor	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33   0.50   0.50   	pxor	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	shufpd	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	shufpd	$1, (%rax), %xmm2
+# CHECK-NEXT:  -     21.00  1.00    -      -      -      -      -     	sqrtpd	%xmm0, %xmm2
+# CHECK-NEXT:  -     21.00  1.00    -      -      -     0.50   0.50   	sqrtpd	(%rax), %xmm2
+# CHECK-NEXT:  -     21.00  1.00    -      -      -      -      -     	sqrtsd	%xmm0, %xmm2
+# CHECK-NEXT:  -     21.00  1.00    -      -      -     0.50   0.50   	sqrtsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	subpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	subpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	subsd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	subsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -     	ucomisd	%xmm0, %xmm1
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	ucomisd	(%rax), %xmm1
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	unpckhpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	unpckhpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	unpcklpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	unpcklpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	xorpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	xorpd	(%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse3.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse3.s?rev=330486&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse3.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse3.s Fri Apr 20 15:04:11 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=sandybridge -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:  2      9     1.00    *               	addsubpd	(%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	addsubps	%xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	addsubps	(%rax), %xmm2
+# CHECK-NEXT:  3      5     2.00                    	haddpd	%xmm0, %xmm2
+# CHECK-NEXT:  4      11    2.00    *               	haddpd	(%rax), %xmm2
+# CHECK-NEXT:  3      5     2.00                    	haddps	%xmm0, %xmm2
+# CHECK-NEXT:  4      11    2.00    *               	haddps	(%rax), %xmm2
+# CHECK-NEXT:  3      5     2.00                    	hsubpd	%xmm0, %xmm2
+# CHECK-NEXT:  4      11    2.00    *               	hsubpd	(%rax), %xmm2
+# CHECK-NEXT:  3      5     2.00                    	hsubps	%xmm0, %xmm2
+# CHECK-NEXT:  4      11    2.00    *               	hsubps	(%rax), %xmm2
+# CHECK-NEXT:  1      6     0.50    *               	lddqu	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movddup	%xmm0, %xmm2
+# CHECK-NEXT:  1      6     0.50    *               	movddup	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movshdup	%xmm0, %xmm2
+# CHECK-NEXT:  1      6     0.50    *               	movshdup	(%rax), %xmm2
+# CHECK-NEXT:  1      1     1.00                    	movsldup	%xmm0, %xmm2
+# CHECK-NEXT:  1      6     0.50    *               	movsldup	(%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -      -      -     12.00   -     19.00  5.00   5.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  	Instructions:
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	addsubpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	addsubpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	addsubps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	addsubps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     2.00    -      -     	haddpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     2.00   0.50   0.50   	haddpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     2.00    -      -     	haddps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     2.00   0.50   0.50   	haddps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     2.00    -      -     	hsubpd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     2.00   0.50   0.50   	hsubpd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     2.00    -      -     	hsubps	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     2.00   0.50   0.50   	hsubps	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	lddqu	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movddup	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movddup	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movshdup	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movshdup	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	movsldup	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movsldup	(%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse41.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse41.s?rev=330486&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse41.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse41.s Fri Apr 20 15:04:11 2018
@@ -0,0 +1,367 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -instruction-tables < %s | FileCheck %s
+
+blendpd     $11, %xmm0, %xmm2
+blendpd     $11, (%rax), %xmm2
+
+blendps     $11, %xmm0, %xmm2
+blendps     $11, (%rax), %xmm2
+
+blendvpd    %xmm0, %xmm2
+blendvpd    (%rax), %xmm2
+
+blendvps    %xmm0, %xmm2
+blendvps    (%rax), %xmm2
+
+dppd        $22, %xmm0, %xmm2
+dppd        $22, (%rax), %xmm2
+
+dpps        $22, %xmm0, %xmm2
+dpps        $22, (%rax), %xmm2
+
+extractps   $1, %xmm0, %rcx
+extractps   $1, %xmm0, (%rax)
+
+insertps    $1, %xmm0, %xmm2
+insertps    $1, (%rax), %xmm2
+
+movntdqa    (%rax), %xmm2
+
+mpsadbw     $1, %xmm0, %xmm2
+mpsadbw     $1, (%rax), %xmm2
+
+packusdw    %xmm0, %xmm2
+packusdw    (%rax), %xmm2
+
+pblendvb    %xmm0, %xmm2
+pblendvb    (%rax), %xmm2
+
+pblendw     $11, %xmm0, %xmm2
+pblendw     $11, (%rax), %xmm2
+
+pcmpeqq     %xmm0, %xmm2
+pcmpeqq     (%rax), %xmm2
+
+pextrb      $1, %xmm0, %ecx
+pextrb      $1, %xmm0, (%rax)
+
+pextrd      $1, %xmm0, %ecx
+pextrd      $1, %xmm0, (%rax)
+
+pextrq      $1, %xmm0, %rcx
+pextrq      $1, %xmm0, (%rax)
+
+pextrw      $1, %xmm0, (%rax)
+
+phminposuw  %xmm0, %xmm2
+phminposuw  (%rax), %xmm2
+
+pinsrb      $1, %eax, %xmm1
+pinsrb      $1, (%rax), %xmm1
+
+pinsrd      $1, %eax, %xmm1
+pinsrd      $1, (%rax), %xmm1
+
+pinsrq      $1, %rax, %xmm1
+pinsrq      $1, (%rax), %xmm1
+
+pmaxsb      %xmm0, %xmm2
+pmaxsb      (%rax), %xmm2
+
+pmaxsd      %xmm0, %xmm2
+pmaxsd      (%rax), %xmm2
+
+pmaxud      %xmm0, %xmm2
+pmaxud      (%rax), %xmm2
+
+pmaxuw      %xmm0, %xmm2
+pmaxuw      (%rax), %xmm2
+
+pminsb      %xmm0, %xmm2
+pminsb      (%rax), %xmm2
+
+pminsd      %xmm0, %xmm2
+pminsd      (%rax), %xmm2
+
+pminud      %xmm0, %xmm2
+pminud      (%rax), %xmm2
+
+pminuw      %xmm0, %xmm2
+pminuw      (%rax), %xmm2
+
+pmovsxbd    %xmm0, %xmm2
+pmovsxbd    (%rax), %xmm2
+
+pmovsxbq    %xmm0, %xmm2
+pmovsxbq    (%rax), %xmm2
+
+pmovsxbw    %xmm0, %xmm2
+pmovsxbw    (%rax), %xmm2
+
+pmovsxdq    %xmm0, %xmm2
+pmovsxdq    (%rax), %xmm2
+
+pmovsxwd    %xmm0, %xmm2
+pmovsxwd    (%rax), %xmm2
+
+pmovsxwq    %xmm0, %xmm2
+pmovsxwq    (%rax), %xmm2
+
+pmovzxbd    %xmm0, %xmm2
+pmovzxbd    (%rax), %xmm2
+
+pmovzxbq    %xmm0, %xmm2
+pmovzxbq    (%rax), %xmm2
+
+pmovzxbw    %xmm0, %xmm2
+pmovzxbw    (%rax), %xmm2
+
+pmovzxdq    %xmm0, %xmm2
+pmovzxdq    (%rax), %xmm2
+
+pmovzxwd    %xmm0, %xmm2
+pmovzxwd    (%rax), %xmm2
+
+pmovzxwq    %xmm0, %xmm2
+pmovzxwq    (%rax), %xmm2
+
+pmuldq      %xmm0, %xmm2
+pmuldq      (%rax), %xmm2
+
+pmulld      %xmm0, %xmm2
+pmulld      (%rax), %xmm2
+
+ptest       %xmm0, %xmm1
+ptest       (%rax), %xmm1
+
+roundpd     $1, %xmm0, %xmm2
+roundpd     $1, (%rax), %xmm2
+
+roundps     $1, %xmm0, %xmm2
+roundps     $1, (%rax), %xmm2
+
+roundsd     $1, %xmm0, %xmm2
+roundsd     $1, (%rax), %xmm2
+
+roundss     $1, %xmm0, %xmm2
+roundss     $1, (%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                    	blendpd	$11, %xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	blendpd	$11, (%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	blendps	$11, %xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	blendps	$11, (%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	blendvpd	%xmm0, %xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	blendvpd	%xmm0, (%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	blendvps	%xmm0, %xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	blendvps	%xmm0, (%rax), %xmm2
+# CHECK-NEXT:  3      9     1.00                    	dppd	$22, %xmm0, %xmm2
+# CHECK-NEXT:  4      15    1.00    *               	dppd	$22, (%rax), %xmm2
+# CHECK-NEXT:  4      12    2.00                    	dpps	$22, %xmm0, %xmm2
+# CHECK-NEXT:  5      18    2.00    *               	dpps	$22, (%rax), %xmm2
+# CHECK-NEXT:  2      3     1.00                    	extractps	$1, %xmm0, %ecx
+# CHECK-NEXT:  3      5     1.00           *        	extractps	$1, %xmm0, (%rax)
+# CHECK-NEXT:  1      1     1.00                    	insertps	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      7     1.00    *               	insertps	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      6     0.50    *               	movntdqa	(%rax), %xmm2
+# CHECK-NEXT:  3      7     1.00                    	mpsadbw	$1, %xmm0, %xmm2
+# CHECK-NEXT:  4      13    1.00    *               	mpsadbw	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	packusdw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	packusdw	(%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	pblendvb	%xmm0, %xmm0, %xmm2
+# CHECK-NEXT:  3      8     1.00    *               	pblendvb	%xmm0, (%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pblendw	$11, %xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pblendw	$11, (%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pcmpeqq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pcmpeqq	(%rax), %xmm2
+# CHECK-NEXT:  2      3     1.00                    	pextrb	$1, %xmm0, %ecx
+# CHECK-NEXT:  3      5     1.00           *        	pextrb	$1, %xmm0, (%rax)
+# CHECK-NEXT:  2      3     1.00                    	pextrd	$1, %xmm0, %ecx
+# CHECK-NEXT:  4      5     1.00           *        	pextrd	$1, %xmm0, (%rax)
+# CHECK-NEXT:  2      3     1.00                    	pextrq	$1, %xmm0, %rcx
+# CHECK-NEXT:  4      5     1.00           *        	pextrq	$1, %xmm0, (%rax)
+# CHECK-NEXT:  3      6     1.00           *        	pextrw	$1, %xmm0, (%rax)
+# CHECK-NEXT:  1      5     1.00                    	phminposuw	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	phminposuw	(%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	pinsrb	$1, %eax, %xmm1
+# CHECK-NEXT:  2      7     0.50    *               	pinsrb	$1, (%rax), %xmm1
+# CHECK-NEXT:  2      2     1.00                    	pinsrd	$1, %eax, %xmm1
+# CHECK-NEXT:  2      7     0.50    *               	pinsrd	$1, (%rax), %xmm1
+# CHECK-NEXT:  2      2     1.00                    	pinsrq	$1, %rax, %xmm1
+# CHECK-NEXT:  2      7     0.50    *               	pinsrq	$1, (%rax), %xmm1
+# CHECK-NEXT:  1      1     0.50                    	pmaxsb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmaxsb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmaxsd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmaxsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmaxud	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmaxud	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmaxuw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmaxuw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pminsb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pminsb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pminsd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pminsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pminud	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pminud	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pminuw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pminuw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovsxbd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovsxbd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovsxbq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovsxbq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovsxbw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovsxbw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovsxdq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovsxdq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovsxwd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovsxwd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovsxwq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovsxwq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovzxbd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovzxbd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovzxbq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovzxbq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovzxbw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovzxbw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovzxdq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovzxdq	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovzxwd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovzxwd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pmovzxwq	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pmovzxwq	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	pmuldq	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	pmuldq	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	pmulld	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	pmulld	(%rax), %xmm2
+# CHECK-NEXT:  2      2     1.00                    	ptest	%xmm0, %xmm1
+# CHECK-NEXT:  3      8     1.00    *               	ptest	(%rax), %xmm1
+# CHECK-NEXT:  1      3     1.00                    	roundpd	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	roundpd	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	roundps	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	roundps	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	roundsd	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	roundsd	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      3     1.00                    	roundss	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      9     1.00    *               	roundss	$1, (%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -      -     26.00  47.00  5.00   53.00  25.00  25.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  	Instructions:
+# CHECK-NEXT:  -      -     0.50    -      -     0.50    -      -     	blendpd	$11, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     0.50    -      -     0.50   0.50   0.50   	blendpd	$11, (%rax), %xmm2
+# CHECK-NEXT:  -      -     0.50    -      -     0.50    -      -     	blendps	$11, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     0.50    -      -     0.50   0.50   0.50   	blendps	$11, (%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -     1.00    -      -     	blendvpd	%xmm0, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -     1.00   0.50   0.50   	blendvpd	%xmm0, (%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -     1.00    -      -     	blendvps	%xmm0, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -     1.00   0.50   0.50   	blendvps	%xmm0, (%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     	dppd	$22, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00   0.50   0.50   	dppd	$22, (%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   2.00    -     1.00    -      -     	dpps	$22, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   2.00    -     1.00   0.50   0.50   	dpps	$22, (%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -     1.00    -      -     	extractps	$1, %xmm0, %ecx
+# CHECK-NEXT:  -      -      -      -     1.00   1.00   0.50   0.50   	extractps	$1, %xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	insertps	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   	insertps	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   	movntdqa	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     	mpsadbw	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00   0.50   0.50   	mpsadbw	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	packusdw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	packusdw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -     	pblendvb	%xmm0, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -     1.00   0.50   0.50   	pblendvb	%xmm0, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pblendw	$11, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pblendw	$11, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pcmpeqq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pcmpeqq	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	pextrb	$1, %xmm0, %ecx
+# CHECK-NEXT:  -      -      -     0.50   1.00   0.50   0.50   0.50   	pextrb	$1, %xmm0, (%rax)
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	pextrd	$1, %xmm0, %ecx
+# CHECK-NEXT:  -      -     1.00   0.50   1.00   0.50   0.50   0.50   	pextrd	$1, %xmm0, (%rax)
+# CHECK-NEXT:  -      -     1.00   0.50    -     0.50    -      -     	pextrq	$1, %xmm0, %rcx
+# CHECK-NEXT:  -      -     1.00   0.50   1.00   0.50   0.50   0.50   	pextrq	$1, %xmm0, (%rax)
+# CHECK-NEXT:  -      -      -      -     1.00   1.00   1.00   1.00   	pextrw	$1, %xmm0, (%rax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	phminposuw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	phminposuw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     1.50    -      -     	pinsrb	$1, %eax, %xmm1
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pinsrb	$1, (%rax), %xmm1
+# CHECK-NEXT:  -      -      -     0.50    -     1.50    -      -     	pinsrd	$1, %eax, %xmm1
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pinsrd	$1, (%rax), %xmm1
+# CHECK-NEXT:  -      -      -     0.50    -     1.50    -      -     	pinsrq	$1, %rax, %xmm1
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pinsrq	$1, (%rax), %xmm1
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmaxsb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmaxsb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmaxsd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmaxsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmaxud	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmaxud	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmaxuw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmaxuw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pminsb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pminsb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pminsd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pminsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pminud	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pminud	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pminuw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pminuw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovsxbd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovsxbd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovsxbq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovsxbq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovsxbw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovsxbw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovsxdq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovsxdq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovsxwd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovsxwd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovsxwq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovsxwq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovzxbd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovzxbd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovzxbq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovzxbq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovzxbw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovzxbw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovzxdq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovzxdq	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovzxwd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovzxwd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pmovzxwq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pmovzxwq	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmuldq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmuldq	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmulld	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmulld	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -     1.00    -      -     	ptest	%xmm0, %xmm1
+# CHECK-NEXT:  -      -     1.00    -      -     1.00   0.50   0.50   	ptest	(%rax), %xmm1
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	roundpd	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	roundpd	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	roundps	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	roundps	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	roundsd	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	roundsd	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	roundss	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	roundss	$1, (%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s?rev=330486&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse42.s Fri Apr 20 15:04:11 2018
@@ -0,0 +1,100 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -instruction-tables < %s | FileCheck %s
+
+crc32b      %al, %ecx
+crc32b      (%rax), %ecx
+
+crc32l      %eax, %ecx
+crc32l      (%rax), %ecx
+
+crc32w      %ax, %ecx
+crc32w      (%rax), %ecx
+
+crc32b      %al, %rcx
+crc32b      (%rax), %rcx
+
+crc32q      %rax, %rcx
+crc32q      (%rax), %rcx
+
+pcmpestri   $1, %xmm0, %xmm2
+pcmpestri   $1, (%rax), %xmm2
+
+pcmpestrm   $1, %xmm0, %xmm2
+pcmpestrm   $1, (%rax), %xmm2
+
+pcmpistri   $1, %xmm0, %xmm2
+pcmpistri   $1, (%rax), %xmm2
+
+pcmpistrm   $1, %xmm0, %xmm2
+pcmpistrm   $1, (%rax), %xmm2
+
+pcmpgtq     %xmm0, %xmm2
+pcmpgtq     (%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                    	crc32b	%al, %ecx
+# CHECK-NEXT:  2      8     1.00    *               	crc32b	(%rax), %ecx
+# CHECK-NEXT:  1      3     1.00                    	crc32l	%eax, %ecx
+# CHECK-NEXT:  2      8     1.00    *               	crc32l	(%rax), %ecx
+# CHECK-NEXT:  1      3     1.00                    	crc32w	%ax, %ecx
+# CHECK-NEXT:  2      8     1.00    *               	crc32w	(%rax), %ecx
+# CHECK-NEXT:  1      3     1.00                    	crc32b	%al, %rcx
+# CHECK-NEXT:  2      8     1.00    *               	crc32b	(%rax), %rcx
+# CHECK-NEXT:  1      3     1.00                    	crc32q	%rax, %rcx
+# CHECK-NEXT:  2      8     1.00    *               	crc32q	(%rax), %rcx
+# CHECK-NEXT:  1      4     2.67                    	pcmpestri	$1, %xmm0, %xmm2
+# CHECK-NEXT:  1      4     2.33    *               	pcmpestri	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      11    2.67                    	pcmpestrm	$1, %xmm0, %xmm2
+# CHECK-NEXT:  1      11    2.33    *               	pcmpestrm	$1, (%rax), %xmm2
+# CHECK-NEXT:  3      11    3.00                    	pcmpistri	$1, %xmm0, %xmm2
+# CHECK-NEXT:  4      17    3.00    *               	pcmpistri	$1, (%rax), %xmm2
+# CHECK-NEXT:  3      11    3.00                    	pcmpistrm	$1, %xmm0, %xmm2
+# CHECK-NEXT:  4      17    3.00    *               	pcmpistrm	$1, (%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	pcmpgtq	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	pcmpgtq	(%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -      -     24.00  20.00   -     10.00  5.00   5.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  	Instructions:
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	crc32b	%al, %ecx
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	crc32b	(%rax), %ecx
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	crc32l	%eax, %ecx
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	crc32l	(%rax), %ecx
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	crc32w	%ax, %ecx
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	crc32w	(%rax), %ecx
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	crc32b	%al, %rcx
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	crc32b	(%rax), %rcx
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	crc32q	%rax, %rcx
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	crc32q	(%rax), %rcx
+# CHECK-NEXT:  -      -     2.67   2.67    -     2.67    -      -     	pcmpestri	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     2.33   2.33    -     2.33   0.50   0.50   	pcmpestri	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -     2.67   2.67    -     2.67    -      -     	pcmpestrm	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     2.33   2.33    -     2.33   0.50   0.50   	pcmpestrm	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -     3.00    -      -      -      -      -     	pcmpistri	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     3.00    -      -      -     0.50   0.50   	pcmpistri	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -     3.00    -      -      -      -      -     	pcmpistrm	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -     3.00    -      -      -     0.50   0.50   	pcmpistrm	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pcmpgtq	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pcmpgtq	(%rax), %xmm2
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-ssse3.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-ssse3.s?rev=330486&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-ssse3.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-ssse3.s Fri Apr 20 15:04:11 2018
@@ -0,0 +1,254 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -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:  2      6     0.50    *               	pabsb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pabsb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pabsb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pabsd	%mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	pabsd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pabsd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pabsd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pabsw	%mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	pabsw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pabsw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pabsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	palignr	$1, %mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	palignr	$1, (%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	palignr	$1, %xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	palignr	$1, (%rax), %xmm2
+# CHECK-NEXT:  3      3     1.50                    	phaddd	%mm0, %mm2
+# CHECK-NEXT:  4      8     1.50    *               	phaddd	(%rax), %mm2
+# CHECK-NEXT:  3      3     1.50                    	phaddd	%xmm0, %xmm2
+# CHECK-NEXT:  4      9     1.50    *               	phaddd	(%rax), %xmm2
+# CHECK-NEXT:  3      3     1.50                    	phaddsw	%mm0, %mm2
+# CHECK-NEXT:  4      8     1.50    *               	phaddsw	(%rax), %mm2
+# CHECK-NEXT:  3      3     1.50                    	phaddsw	%xmm0, %xmm2
+# CHECK-NEXT:  4      9     1.50    *               	phaddsw	(%rax), %xmm2
+# CHECK-NEXT:  3      3     1.50                    	phaddw	%mm0, %mm2
+# CHECK-NEXT:  4      8     1.50    *               	phaddw	(%rax), %mm2
+# CHECK-NEXT:  3      3     1.50                    	phaddw	%xmm0, %xmm2
+# CHECK-NEXT:  4      9     1.50    *               	phaddw	(%rax), %xmm2
+# CHECK-NEXT:  3      3     1.50                    	phsubd	%mm0, %mm2
+# CHECK-NEXT:  4      8     1.50    *               	phsubd	(%rax), %mm2
+# CHECK-NEXT:  3      3     1.50                    	phsubd	%xmm0, %xmm2
+# CHECK-NEXT:  4      9     1.50    *               	phsubd	(%rax), %xmm2
+# CHECK-NEXT:  3      3     1.50                    	phsubsw	%mm0, %mm2
+# CHECK-NEXT:  4      8     1.50    *               	phsubsw	(%rax), %mm2
+# CHECK-NEXT:  3      3     1.50                    	phsubsw	%xmm0, %xmm2
+# CHECK-NEXT:  4      9     1.50    *               	phsubsw	(%rax), %xmm2
+# CHECK-NEXT:  3      3     1.50                    	phsubw	%mm0, %mm2
+# CHECK-NEXT:  4      8     1.50    *               	phsubw	(%rax), %mm2
+# CHECK-NEXT:  3      3     1.50                    	phsubw	%xmm0, %xmm2
+# CHECK-NEXT:  4      9     1.50    *               	phsubw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	pmaddubsw	%mm0, %mm2
+# CHECK-NEXT:  2      11    1.00    *               	pmaddubsw	(%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                    	pmaddubsw	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	pmaddubsw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                    	pmulhrsw	%mm0, %mm2
+# CHECK-NEXT:  2      11    1.00    *               	pmulhrsw	(%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                    	pmulhrsw	%xmm0, %xmm2
+# CHECK-NEXT:  2      11    1.00    *               	pmulhrsw	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	pshufb	%mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	pshufb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	pshufb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	pshufb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psignb	%mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	psignb	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psignb	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psignb	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psignd	%mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	psignd	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psignd	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psignd	(%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                    	psignw	%mm0, %mm2
+# CHECK-NEXT:  2      6     0.50    *               	psignw	(%rax), %mm2
+# CHECK-NEXT:  1      1     0.50                    	psignw	%xmm0, %xmm2
+# CHECK-NEXT:  2      7     0.50    *               	psignw	(%rax), %xmm2
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SBDivider
+# CHECK-NEXT: [1] - SBFPDivider
+# CHECK-NEXT: [2] - SBPort0
+# CHECK-NEXT: [3] - SBPort1
+# CHECK-NEXT: [4] - SBPort4
+# CHECK-NEXT: [5] - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -      -     8.00   52.00   -     52.00  16.00  16.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  	Instructions:
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pabsb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pabsb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pabsb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pabsb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pabsd	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pabsd	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pabsd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pabsd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pabsw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pabsw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pabsw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pabsw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	palignr	$1, %mm0, %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	palignr	$1, (%rax), %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	palignr	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	palignr	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phaddd	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phaddd	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phaddd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phaddd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phaddsw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phaddsw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phaddsw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phaddsw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phaddw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phaddw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phaddw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phaddw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phsubd	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phsubd	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phsubd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phsubd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phsubsw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phsubsw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phsubsw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phsubsw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phsubw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phsubw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     	phsubw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   	phsubw	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmaddubsw	%mm0, %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmaddubsw	(%rax), %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmaddubsw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmaddubsw	(%rax), %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmulhrsw	%mm0, %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmulhrsw	(%rax), %mm2
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	pmulhrsw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	pmulhrsw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pshufb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pshufb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	pshufb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	pshufb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psignb	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psignb	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psignb	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psignb	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psignd	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psignd	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psignd	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psignd	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psignw	%mm0, %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psignw	(%rax), %mm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     	psignw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   	psignw	(%rax), %xmm2
+




More information about the llvm-commits mailing list