[llvm] r330499 - [llvm-mca][X86] Add X87 resource tests

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 21 03:36:20 PDT 2018


Author: rksimon
Date: Sat Apr 21 03:36:19 2018
New Revision: 330499

URL: http://llvm.org/viewvc/llvm-project?rev=330499&view=rev
Log:
[llvm-mca][X86] Add X87 resource tests

Added:
    llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x87.s
    llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x87.s
    llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x87.s
    llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x87.s
    llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x87.s
    llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s
    llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s
    llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x87.s

Added: llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x87.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x87.s?rev=330499&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x87.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x87.s Sat Apr 21 03:36:19 2018
@@ -0,0 +1,524 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=broadwell -instruction-tables < %s | FileCheck %s
+
+f2xm1
+
+fabs
+
+fadd %st(0), %st(1)
+fadd %st(2)
+fadds (%ecx)
+faddl (%ecx)
+faddp %st(1)
+faddp %st(2)
+fiadds (%ecx)
+fiaddl (%ecx)
+
+fbld (%ecx)
+fbstp (%eax)
+
+fchs
+
+fnclex
+
+fcmovb %st(1), %st(0)
+fcmovbe %st(1), %st(0)
+fcmove %st(1), %st(0)
+fcmovnb %st(1), %st(0)
+fcmovnbe %st(1), %st(0)
+fcmovne %st(1), %st(0)
+fcmovnu %st(1), %st(0)
+fcmovu %st(1), %st(0)
+
+fcom %st(1)
+fcom %st(3)
+fcoms (%ecx)
+fcoml (%eax)
+fcomp %st(1)
+fcomp %st(3)
+fcomps (%ecx)
+fcompl (%eax)
+fcompp
+
+fcomi %st(3)
+fcompi %st(3)
+
+fcos
+
+fdecstp
+
+fdiv %st(0), %st(1)
+fdiv %st(2)
+fdivs (%ecx)
+fdivl (%eax)
+fdivp %st(1)
+fdivp %st(2)
+fidivs (%ecx)
+fidivl (%eax)
+
+fdivr %st(0), %st(1)
+fdivr %st(2)
+fdivrs (%ecx)
+fdivrl (%eax)
+fdivrp %st(1)
+fdivrp %st(2)
+fidivrs (%ecx)
+fidivrl (%eax)
+
+ffree %st(0)
+
+ficoms (%ecx)
+ficoml (%eax)
+ficomps (%ecx)
+ficompl (%eax)
+
+filds (%edx)
+fildl (%ecx)
+fildll (%eax)
+
+fincstp
+
+fninit
+
+fists (%edx)
+fistl (%ecx)
+fistps (%edx)
+fistpl (%ecx)
+fistpll (%eax)
+
+fisttps (%edx)
+fisttpl (%ecx)
+fisttpll (%eax)
+
+fld %st(0)
+flds (%edx)
+fldl (%ecx)
+fldt (%eax)
+
+fldcw (%eax)
+fldenv (%eax)
+
+fld1
+fldl2e
+fldl2t
+fldlg2
+fldln2
+fldpi
+fldz
+
+fmul %st(0), %st(1)
+fmul %st(2)
+fmuls (%ecx)
+fmull (%eax)
+fmulp %st(1)
+fmulp %st(2)
+fimuls (%ecx)
+fimull (%eax)
+
+fnop
+
+fpatan
+
+fprem
+fprem1
+
+fptan
+
+frndint
+
+frstor (%eax)
+
+fnsave (%eax)
+
+fscale
+
+fsin
+
+fsincos
+
+fsqrt
+
+fst %st(0)
+fsts (%edx)
+fstl (%ecx)
+fstp %st(0)
+fstpl (%edx)
+fstpl (%ecx)
+fstpt (%eax)
+
+fnstcw (%eax)
+fnstenv (%eax)
+fnstsw (%eax)
+
+frstor (%eax)
+fsave (%eax)
+
+fsub %st(0), %st(1)
+fsub %st(2)
+fsubs (%ecx)
+fsubl (%eax)
+fsubp %st(1)
+fsubp %st(2)
+fisubs (%ecx)
+fisubl (%eax)
+
+fsubr %st(0), %st(1)
+fsubr %st(2)
+fsubrs (%ecx)
+fsubrl (%eax)
+fsubrp %st(1)
+fsubrp %st(2)
+fisubrs (%ecx)
+fisubrl (%eax)
+
+ftst
+
+fucom %st(1)
+fucom %st(3)
+fucomp %st(1)
+fucomp %st(3)
+fucompp
+
+fucomi %st(3)
+fucompi %st(3)
+
+fwait
+
+fxam
+
+fxch %st(1)
+fxch %st(3)
+
+fxrstor (%eax)
+fxsave (%eax)
+
+fxtract
+
+fyl2x
+fyl2xp1
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      100   0.25                  * 	f2xm1
+# CHECK-NEXT:  1      1     1.00                  * 	fabs
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(2)
+# CHECK-NEXT:  2      9     1.00    *             * 	fadds	(%ecx)
+# CHECK-NEXT:  2      9     1.00    *             * 	faddl	(%ecx)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(2)
+# CHECK-NEXT:  3      12    2.00    *             * 	fiadds	(%ecx)
+# CHECK-NEXT:  3      12    2.00    *             * 	fiaddl	(%ecx)
+# CHECK-NEXT:  1      100   0.25                  * 	fbld	(%ecx)
+# CHECK-NEXT:  2      1     1.00                  * 	fbstp	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fchs
+# CHECK-NEXT:  4      4     1.00                  * 	fnclex
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(3)
+# CHECK-NEXT:  2      7     1.00                  * 	fcoms	(%ecx)
+# CHECK-NEXT:  2      7     1.00                  * 	fcoml	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(3)
+# CHECK-NEXT:  2      7     1.00                  * 	fcomps	(%ecx)
+# CHECK-NEXT:  2      7     1.00                  * 	fcompl	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fcompp
+# CHECK-NEXT:  1      3     1.00                  * 	fcomi	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fcompi	%st(3)
+# CHECK-NEXT:  1      100   0.25                  * 	fcos
+# CHECK-NEXT:  2      2     1.00                  * 	fdecstp
+# CHECK-NEXT:  1      15    1.00                  * 	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  1      20    1.00                  * 	fdiv	%st(2)
+# CHECK-NEXT:  2      21    1.00    *             * 	fdivs	(%ecx)
+# CHECK-NEXT:  2      21    1.00    *             * 	fdivl	(%eax)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivp	%st(1)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivp	%st(2)
+# CHECK-NEXT:  3      24    1.00    *             * 	fidivs	(%ecx)
+# CHECK-NEXT:  3      24    1.00    *             * 	fidivl	(%eax)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivr	%st(2)
+# CHECK-NEXT:  2      26    1.00    *             * 	fdivrs	(%ecx)
+# CHECK-NEXT:  2      26    1.00    *             * 	fdivrl	(%eax)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivrp	%st(1)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivrp	%st(2)
+# CHECK-NEXT:  3      29    1.00    *             * 	fidivrs	(%ecx)
+# CHECK-NEXT:  3      29    1.00    *             * 	fidivrl	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	ffree	%st(0)
+# CHECK-NEXT:  3      10    2.00                  * 	ficoms	(%ecx)
+# CHECK-NEXT:  3      10    2.00                  * 	ficoml	(%eax)
+# CHECK-NEXT:  3      10    2.00                  * 	ficomps	(%ecx)
+# CHECK-NEXT:  3      10    2.00                  * 	ficompl	(%eax)
+# CHECK-NEXT:  2      9     1.00    *             * 	filds	(%edx)
+# CHECK-NEXT:  2      9     1.00    *             * 	fildl	(%ecx)
+# CHECK-NEXT:  2      9     1.00    *             * 	fildll	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fincstp
+# CHECK-NEXT:  15     75    6.00                  * 	fninit
+# CHECK-NEXT:  3      4     1.00           *      * 	fists	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistps	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistpl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistpll	(%eax)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttps	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttpl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttpll	(%eax)
+# CHECK-NEXT:  1      1     0.25                  * 	fld	%st(0)
+# CHECK-NEXT:  1      6     0.50    *             * 	flds	(%edx)
+# CHECK-NEXT:  1      6     0.50    *             * 	fldl	(%ecx)
+# CHECK-NEXT:  1      6     0.50    *             * 	fldt	(%eax)
+# CHECK-NEXT:  3      7     1.00    *             * 	fldcw	(%eax)
+# CHECK-NEXT:  64     60    14.00                 * 	fldenv	(%eax)
+# CHECK-NEXT:  1      1      -                    * 	fld1
+# CHECK-NEXT:  1      100   0.25                  * 	fldl2e
+# CHECK-NEXT:  1      100   0.25                  * 	fldl2t
+# CHECK-NEXT:  1      100   0.25                  * 	fldlg2
+# CHECK-NEXT:  1      100   0.25                  * 	fldln2
+# CHECK-NEXT:  1      100   0.25                  * 	fldpi
+# CHECK-NEXT:  1      1      -                    * 	fldz
+# CHECK-NEXT:  1      5     1.00                  * 	fmul	%st(0), %st(1)
+# CHECK-NEXT:  1      5     1.00                  * 	fmul	%st(2)
+# CHECK-NEXT:  2      11    1.00    *             * 	fmuls	(%ecx)
+# CHECK-NEXT:  2      11    1.00    *             * 	fmull	(%eax)
+# CHECK-NEXT:  1      5     1.00                  * 	fmulp	%st(1)
+# CHECK-NEXT:  1      5     1.00                  * 	fmulp	%st(2)
+# CHECK-NEXT:  3      14    1.00    *             * 	fimuls	(%ecx)
+# CHECK-NEXT:  3      14    1.00    *             * 	fimull	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fnop
+# CHECK-NEXT:  1      100   0.25                  * 	fpatan
+# CHECK-NEXT:  1      100   0.25                  * 	fprem
+# CHECK-NEXT:  1      100   0.25                  * 	fprem1
+# CHECK-NEXT:  1      100   0.25                  * 	fptan
+# CHECK-NEXT:  1      100   0.25                  * 	frndint
+# CHECK-NEXT:  1      100   0.25                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fscale
+# CHECK-NEXT:  1      100   0.25                  * 	fsin
+# CHECK-NEXT:  1      100   0.25                  * 	fsincos
+# CHECK-NEXT:  1      15    1.00                  * 	fsqrt
+# CHECK-NEXT:  1      1     0.25                  * 	fst	%st(0)
+# CHECK-NEXT:  1      1     1.00           *      * 	fsts	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstl	(%ecx)
+# CHECK-NEXT:  1      1     0.25                  * 	fstp	%st(0)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpl	(%edx)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpl	(%ecx)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpt	(%eax)
+# CHECK-NEXT:  3      2     1.00           *      * 	fnstcw	(%eax)
+# CHECK-NEXT:  100    115   19.50                 * 	fnstenv	(%eax)
+# CHECK-NEXT:  3      4     1.00                  * 	fnstsw	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	frstor	(%eax)
+# CHECK-NEXT:  2      2     0.50                  * 	wait
+# CHECK-NEXT:  1      100   0.25                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(2)
+# CHECK-NEXT:  2      9     1.00    *             * 	fsubs	(%ecx)
+# CHECK-NEXT:  2      9     1.00    *             * 	fsubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(2)
+# CHECK-NEXT:  3      12    2.00    *             * 	fisubs	(%ecx)
+# CHECK-NEXT:  3      12    2.00    *             * 	fisubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(2)
+# CHECK-NEXT:  2      9     1.00    *             * 	fsubrs	(%ecx)
+# CHECK-NEXT:  2      9     1.00    *             * 	fsubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(2)
+# CHECK-NEXT:  3      12    2.00    *             * 	fisubrs	(%ecx)
+# CHECK-NEXT:  3      12    2.00    *             * 	fisubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	ftst
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(3)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fucompp
+# CHECK-NEXT:  1      3     1.00                  * 	fucomi	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fucompi	%st(3)
+# CHECK-NEXT:  2      2     0.50                  * 	wait
+# CHECK-NEXT:  1      100   0.25                  * 	fxam
+# CHECK-NEXT:  12     14    4.00                  * 	fxch	%st(1)
+# CHECK-NEXT:  12     14    4.00                  * 	fxch	%st(3)
+# CHECK-NEXT:  90     63    16.50   *      *      * 	fxrstor	(%eax)
+# CHECK-NEXT:  1      100   0.25    *      *      * 	fxsave	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fxtract
+# CHECK-NEXT:  1      100   0.25                  * 	fyl2x
+# CHECK-NEXT:  1      100   0.25                  * 	fyl2xp1
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - BWDivider
+# CHECK-NEXT: [1] - BWFPDivider
+# CHECK-NEXT: [2] - BWPort0
+# CHECK-NEXT: [3] - BWPort1
+# CHECK-NEXT: [4] - BWPort2
+# CHECK-NEXT: [5] - BWPort3
+# CHECK-NEXT: [6] - BWPort4
+# CHECK-NEXT: [7] - BWPort5
+# CHECK-NEXT: [8] - BWPort6
+# CHECK-NEXT: [9] - BWPort7
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
+# CHECK-NEXT:  -      -     111.67 140.67 49.00  49.00  27.00  60.67  71.00  9.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    	Instructions:
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	f2xm1
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fabs
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fadd	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fadd	%st(2)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fadds	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	faddl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	faddp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	faddp	%st(2)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fiadds	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fiaddl	(%ecx)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fbld	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fbstp	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fchs
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -     1.00   1.00    -     	fnclex
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcom	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcom	%st(3)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fcoms	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fcoml	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcomp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcomp	%st(3)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fcomps	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fcompl	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fcompp
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcomi	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcompi	%st(3)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fcos
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -      -      -     	fdecstp
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdiv	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivp	%st(2)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fidivs	(%ecx)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fidivl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivr	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivrs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivrl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivrp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivrp	%st(2)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fidivrs	(%ecx)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fidivrl	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	ffree	%st(0)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	ficoms	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	ficoml	(%eax)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	ficomps	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	ficompl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	filds	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fildl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fildll	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fincstp
+# CHECK-NEXT:  -      -     3.00   3.00    -      -      -     7.50   1.50    -     	fninit
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fists	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fistl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fistps	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fistpl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fistpll	(%eax)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fisttps	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fisttpl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fisttpll	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fld	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	flds	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	fldl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	fldt	(%eax)
+# CHECK-NEXT:  -      -     1.50   0.50   0.50   0.50    -      -      -      -     	fldcw	(%eax)
+# CHECK-NEXT:  -      -     18.92  11.42  4.00   4.00    -     10.92  14.75   -     	fldenv	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fld1
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldl2e
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldl2t
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldlg2
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldln2
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldpi
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fldz
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmul	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmul	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fmuls	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fmull	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmulp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmulp	%st(2)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fimuls	(%ecx)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fimull	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fnop
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fpatan
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fprem
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fprem1
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fptan
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	frndint
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	frstor	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fscale
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fsin
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fsincos
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fsqrt
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fst	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fsts	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstl	(%ecx)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fstp	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpl	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpt	(%eax)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -     1.00   0.33   	fnstcw	(%eax)
+# CHECK-NEXT:  -      -     27.00  16.50  3.67   3.67   11.00  15.50  19.00  3.67   	fnstenv	(%eax)
+# CHECK-NEXT:  -      -     1.00    -     0.33   0.33   1.00    -      -     0.33   	fnstsw	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	frstor	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -     0.50   0.50    -     	wait
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsub	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsub	%st(2)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fsubs	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fsubl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubp	%st(2)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fisubs	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fisubl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubr	%st(2)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fsubrs	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fsubrl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubrp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubrp	%st(2)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fisubrs	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fisubrl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	ftst
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucom	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucom	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucomp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucomp	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucompp
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucomi	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucompi	%st(3)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -     0.50   0.50    -     	wait
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fxam
+# CHECK-NEXT:  -      -     3.25   2.25    -      -      -     1.25   5.25    -     	fxch	%st(1)
+# CHECK-NEXT:  -      -     3.25   2.25    -      -      -     1.25   5.25    -     	fxch	%st(3)
+# CHECK-NEXT:  -      -     17.25  12.25  16.50  16.50   -     12.75  14.75   -     	fxrstor	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fxsave	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fxtract
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fyl2x
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fyl2xp1
+

Added: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x87.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x87.s?rev=330499&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x87.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x87.s Sat Apr 21 03:36:19 2018
@@ -0,0 +1,528 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s
+
+f2xm1
+
+fabs
+
+fadd %st(0), %st(1)
+fadd %st(2)
+fadds (%ecx)
+faddl (%ecx)
+faddp %st(1)
+faddp %st(2)
+fiadds (%ecx)
+fiaddl (%ecx)
+
+fbld (%ecx)
+fbstp (%eax)
+
+fchs
+
+fnclex
+
+fcmovb %st(1), %st(0)
+fcmovbe %st(1), %st(0)
+fcmove %st(1), %st(0)
+fcmovnb %st(1), %st(0)
+fcmovnbe %st(1), %st(0)
+fcmovne %st(1), %st(0)
+fcmovnu %st(1), %st(0)
+fcmovu %st(1), %st(0)
+
+fcom %st(1)
+fcom %st(3)
+fcoms (%ecx)
+fcoml (%eax)
+fcomp %st(1)
+fcomp %st(3)
+fcomps (%ecx)
+fcompl (%eax)
+fcompp
+
+fcomi %st(3)
+fcompi %st(3)
+
+fcos
+
+fdecstp
+
+fdiv %st(0), %st(1)
+fdiv %st(2)
+fdivs (%ecx)
+fdivl (%eax)
+fdivp %st(1)
+fdivp %st(2)
+fidivs (%ecx)
+fidivl (%eax)
+
+fdivr %st(0), %st(1)
+fdivr %st(2)
+fdivrs (%ecx)
+fdivrl (%eax)
+fdivrp %st(1)
+fdivrp %st(2)
+fidivrs (%ecx)
+fidivrl (%eax)
+
+ffree %st(0)
+
+ficoms (%ecx)
+ficoml (%eax)
+ficomps (%ecx)
+ficompl (%eax)
+
+filds (%edx)
+fildl (%ecx)
+fildll (%eax)
+
+fincstp
+
+fninit
+
+fists (%edx)
+fistl (%ecx)
+fistps (%edx)
+fistpl (%ecx)
+fistpll (%eax)
+
+fisttps (%edx)
+fisttpl (%ecx)
+fisttpll (%eax)
+
+fld %st(0)
+flds (%edx)
+fldl (%ecx)
+fldt (%eax)
+
+fldcw (%eax)
+fldenv (%eax)
+
+fld1
+fldl2e
+fldl2t
+fldlg2
+fldln2
+fldpi
+fldz
+
+fmul %st(0), %st(1)
+fmul %st(2)
+fmuls (%ecx)
+fmull (%eax)
+fmulp %st(1)
+fmulp %st(2)
+fimuls (%ecx)
+fimull (%eax)
+
+fnop
+
+fpatan
+
+fprem
+fprem1
+
+fptan
+
+frndint
+
+frstor (%eax)
+
+fnsave (%eax)
+
+fscale
+
+fsin
+
+fsincos
+
+fsqrt
+
+fst %st(0)
+fsts (%edx)
+fstl (%ecx)
+fstp %st(0)
+fstpl (%edx)
+fstpl (%ecx)
+fstpt (%eax)
+
+fnstcw (%eax)
+fnstenv (%eax)
+fnstsw (%eax)
+
+frstor (%eax)
+fsave (%eax)
+
+fsub %st(0), %st(1)
+fsub %st(2)
+fsubs (%ecx)
+fsubl (%eax)
+fsubp %st(1)
+fsubp %st(2)
+fisubs (%ecx)
+fisubl (%eax)
+
+fsubr %st(0), %st(1)
+fsubr %st(2)
+fsubrs (%ecx)
+fsubrl (%eax)
+fsubrp %st(1)
+fsubrp %st(2)
+fisubrs (%ecx)
+fisubrl (%eax)
+
+ftst
+
+fucom %st(1)
+fucom %st(3)
+fucomp %st(1)
+fucomp %st(3)
+fucompp
+
+fucomi %st(3)
+fucompi %st(3)
+
+fwait
+
+fxam
+
+fxch %st(1)
+fxch %st(3)
+
+fxrstor (%eax)
+fxsave (%eax)
+
+fxtract
+
+fyl2x
+fyl2xp1
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      100   0.50                  * 	f2xm1
+# CHECK-NEXT:  1      2     1.00                  * 	fabs
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(2)
+# CHECK-NEXT:  1      8     1.00    *             * 	fadds	(%ecx)
+# CHECK-NEXT:  1      8     1.00    *             * 	faddl	(%ecx)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(2)
+# CHECK-NEXT:  1      8     1.00    *             * 	fiadds	(%ecx)
+# CHECK-NEXT:  1      8     1.00    *             * 	fiaddl	(%ecx)
+# CHECK-NEXT:  1      100   0.50                  * 	fbld	(%ecx)
+# CHECK-NEXT:  1      100   0.50                  * 	fbstp	(%eax)
+# CHECK-NEXT:  1      2     1.00                  * 	fchs
+# CHECK-NEXT:  1      100   0.50                  * 	fnclex
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcom	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fcom	%st(3)
+# CHECK-NEXT:  1      8     1.00                  * 	fcoms	(%ecx)
+# CHECK-NEXT:  1      8     1.00                  * 	fcoml	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fcomp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fcomp	%st(3)
+# CHECK-NEXT:  1      8     1.00                  * 	fcomps	(%ecx)
+# CHECK-NEXT:  1      8     1.00                  * 	fcompl	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fcompp
+# CHECK-NEXT:  1      3     1.00                  * 	fcomi	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fcompi	%st(3)
+# CHECK-NEXT:  1      100   0.50                  * 	fcos
+# CHECK-NEXT:  1      100   0.50                  * 	fdecstp
+# CHECK-NEXT:  1      19    19.00                 * 	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  1      19    19.00                 * 	fdiv	%st(2)
+# CHECK-NEXT:  1      24    19.00   *             * 	fdivs	(%ecx)
+# CHECK-NEXT:  1      24    19.00   *             * 	fdivl	(%eax)
+# CHECK-NEXT:  1      19    19.00                 * 	fdivp	%st(1)
+# CHECK-NEXT:  1      19    19.00                 * 	fdivp	%st(2)
+# CHECK-NEXT:  1      24    19.00   *             * 	fidivs	(%ecx)
+# CHECK-NEXT:  1      24    19.00   *             * 	fidivl	(%eax)
+# CHECK-NEXT:  1      19    19.00                 * 	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  1      19    19.00                 * 	fdivr	%st(2)
+# CHECK-NEXT:  1      24    19.00   *             * 	fdivrs	(%ecx)
+# CHECK-NEXT:  1      24    19.00   *             * 	fdivrl	(%eax)
+# CHECK-NEXT:  1      19    19.00                 * 	fdivrp	%st(1)
+# CHECK-NEXT:  1      19    19.00                 * 	fdivrp	%st(2)
+# CHECK-NEXT:  1      24    19.00   *             * 	fidivrs	(%ecx)
+# CHECK-NEXT:  1      24    19.00   *             * 	fidivrl	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	ffree	%st(0)
+# CHECK-NEXT:  1      8     1.00                  * 	ficoms	(%ecx)
+# CHECK-NEXT:  1      8     1.00                  * 	ficoml	(%eax)
+# CHECK-NEXT:  1      8     1.00                  * 	ficomps	(%ecx)
+# CHECK-NEXT:  1      8     1.00                  * 	ficompl	(%eax)
+# CHECK-NEXT:  1      5     1.00    *             * 	filds	(%edx)
+# CHECK-NEXT:  1      5     1.00    *             * 	fildl	(%ecx)
+# CHECK-NEXT:  1      5     1.00    *             * 	fildll	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fincstp
+# CHECK-NEXT:  1      100   0.50                  * 	fninit
+# CHECK-NEXT:  1      1     1.00           *      * 	fists	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fistl	(%ecx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fistps	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fistpl	(%ecx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fistpll	(%eax)
+# CHECK-NEXT:  1      1     1.00           *      * 	fisttps	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fisttpl	(%ecx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fisttpll	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fld	%st(0)
+# CHECK-NEXT:  1      5     1.00    *             * 	flds	(%edx)
+# CHECK-NEXT:  1      5     1.00    *             * 	fldl	(%ecx)
+# CHECK-NEXT:  1      5     1.00    *             * 	fldt	(%eax)
+# CHECK-NEXT:  1      5     1.00    *             * 	fldcw	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fldenv	(%eax)
+# CHECK-NEXT:  1      1      -                    * 	fld1
+# CHECK-NEXT:  1      100   0.50                  * 	fldl2e
+# CHECK-NEXT:  1      100   0.50                  * 	fldl2t
+# CHECK-NEXT:  1      100   0.50                  * 	fldlg2
+# CHECK-NEXT:  1      100   0.50                  * 	fldln2
+# CHECK-NEXT:  1      100   0.50                  * 	fldpi
+# CHECK-NEXT:  1      1      -                    * 	fldz
+# CHECK-NEXT:  1      2     1.00                  * 	fmul	%st(0), %st(1)
+# CHECK-NEXT:  1      2     1.00                  * 	fmul	%st(2)
+# CHECK-NEXT:  1      7     1.00    *             * 	fmuls	(%ecx)
+# CHECK-NEXT:  1      7     1.00    *             * 	fmull	(%eax)
+# CHECK-NEXT:  1      2     1.00                  * 	fmulp	%st(1)
+# CHECK-NEXT:  1      2     1.00                  * 	fmulp	%st(2)
+# CHECK-NEXT:  1      7     1.00    *             * 	fimuls	(%ecx)
+# CHECK-NEXT:  1      7     1.00    *             * 	fimull	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fnop
+# CHECK-NEXT:  1      100   0.50                  * 	fpatan
+# CHECK-NEXT:  1      100   0.50                  * 	fprem
+# CHECK-NEXT:  1      100   0.50                  * 	fprem1
+# CHECK-NEXT:  1      100   0.50                  * 	fptan
+# CHECK-NEXT:  1      100   0.50                  * 	frndint
+# CHECK-NEXT:  1      100   0.50                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fscale
+# CHECK-NEXT:  1      100   0.50                  * 	fsin
+# CHECK-NEXT:  1      100   0.50                  * 	fsincos
+# CHECK-NEXT:  1      21    21.00                 * 	fsqrt
+# CHECK-NEXT:  1      1     0.50                  * 	fst	%st(0)
+# CHECK-NEXT:  1      1     1.00           *      * 	fsts	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstl	(%ecx)
+# CHECK-NEXT:  1      1     0.50                  * 	fstp	%st(0)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstpl	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstpl	(%ecx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstpt	(%eax)
+# CHECK-NEXT:  1      1     0.50           *      * 	fnstcw	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fnstenv	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fnstsw	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	wait
+# CHECK-NEXT:  1      100   0.50                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(2)
+# CHECK-NEXT:  1      8     1.00    *             * 	fsubs	(%ecx)
+# CHECK-NEXT:  1      8     1.00    *             * 	fsubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(2)
+# CHECK-NEXT:  1      8     1.00    *             * 	fisubs	(%ecx)
+# CHECK-NEXT:  1      8     1.00    *             * 	fisubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(2)
+# CHECK-NEXT:  1      8     1.00    *             * 	fsubrs	(%ecx)
+# CHECK-NEXT:  1      8     1.00    *             * 	fsubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(2)
+# CHECK-NEXT:  1      8     1.00    *             * 	fisubrs	(%ecx)
+# CHECK-NEXT:  1      8     1.00    *             * 	fisubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	ftst
+# CHECK-NEXT:  1      3     1.00                  * 	fucom	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fucom	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fucomp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fucomp	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fucompp
+# CHECK-NEXT:  1      3     1.00                  * 	fucomi	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fucompi	%st(3)
+# CHECK-NEXT:  1      100   0.50                  * 	wait
+# CHECK-NEXT:  1      100   0.50                  * 	fxam
+# CHECK-NEXT:  1      1     0.50                  * 	fxch	%st(1)
+# CHECK-NEXT:  1      1     0.50                  * 	fxch	%st(3)
+# CHECK-NEXT:  1      100   0.50    *      *      * 	fxrstor	(%eax)
+# CHECK-NEXT:  1      100   0.50    *      *      * 	fxsave	(%eax)
+# CHECK-NEXT:  1      100   0.50                  * 	fxtract
+# CHECK-NEXT:  1      100   0.50                  * 	fyl2x
+# CHECK-NEXT:  1      100   0.50                  * 	fyl2xp1
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - JALU0
+# CHECK-NEXT: [1] - JALU1
+# CHECK-NEXT: [2] - JDiv
+# CHECK-NEXT: [3] - JFPA
+# CHECK-NEXT: [4] - JFPM
+# CHECK-NEXT: [5] - JFPU0
+# CHECK-NEXT: [6] - JFPU1
+# CHECK-NEXT: [7] - JLAGU
+# CHECK-NEXT: [8] - JMul
+# CHECK-NEXT: [9] - JSAGU
+# CHECK-NEXT: [10] - JSTC
+# CHECK-NEXT: [11] - JVALU0
+# CHECK-NEXT: [12] - JVALU1
+# CHECK-NEXT: [13] - JVIMUL
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]
+# CHECK-NEXT: 44.50  22.50   -     54.00  335.00 54.00  27.00  39.00   -     13.00   -      -      -      -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]   	Instructions:
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	f2xm1
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -      -      -      -      -      -      -     	fabs
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fadd	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fadd	%st(2)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fadds	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	faddl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	faddp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	faddp	%st(2)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fiadds	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fiaddl	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fbld	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fbstp	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -      -      -      -      -      -      -     	fchs
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fnclex
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcmovu	%st(1), %st(0)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcom	%st(1)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcom	%st(3)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fcoms	(%ecx)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fcoml	(%eax)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcomp	%st(1)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcomp	%st(3)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fcomps	(%ecx)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fcompl	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fcompp
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcomi	%st(3)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fcompi	%st(3)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fcos
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fdecstp
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00    -      -      -      -      -      -      -     	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00    -      -      -      -      -      -      -     	fdiv	%st(2)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00   1.00    -      -      -      -      -      -     	fdivs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00   1.00    -      -      -      -      -      -     	fdivl	(%eax)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00    -      -      -      -      -      -      -     	fdivp	%st(1)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00    -      -      -      -      -      -      -     	fdivp	%st(2)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00   1.00    -      -      -      -      -      -     	fidivs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00   1.00    -      -      -      -      -      -     	fidivl	(%eax)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00    -      -      -      -      -      -      -     	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00    -      -      -      -      -      -      -     	fdivr	%st(2)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00   1.00    -      -      -      -      -      -     	fdivrs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00   1.00    -      -      -      -      -      -     	fdivrl	(%eax)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00    -      -      -      -      -      -      -     	fdivrp	%st(1)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00    -      -      -      -      -      -      -     	fdivrp	%st(2)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00   1.00    -      -      -      -      -      -     	fidivrs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     19.00   -     1.00   1.00    -      -      -      -      -      -     	fidivrl	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	ffree	%st(0)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	ficoms	(%ecx)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	ficoml	(%eax)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	ficomps	(%ecx)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	ficompl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -      -     	filds	(%edx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -      -     	fildl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -      -     	fildll	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fincstp
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fninit
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fists	(%edx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fistl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fistps	(%edx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fistpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fistpll	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fisttps	(%edx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fisttpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fisttpll	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fld	%st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -      -     	flds	(%edx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -      -     	fldl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -      -     	fldt	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -      -     	fldcw	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fldenv	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -      -      -     	fld1
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fldl2e
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fldl2t
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fldlg2
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fldln2
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fldpi
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -      -      -     	fldz
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -      -      -      -      -      -      -     	fmul	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -      -      -      -      -      -      -     	fmul	%st(2)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00   1.00    -      -      -      -      -      -     	fmuls	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00   1.00    -      -      -      -      -      -     	fmull	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -      -      -      -      -      -      -     	fmulp	%st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -      -      -      -      -      -      -     	fmulp	%st(2)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00   1.00    -      -      -      -      -      -     	fimuls	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00   1.00    -      -      -      -      -      -     	fimull	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fnop
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fpatan
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fprem
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fprem1
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fptan
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	frndint
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	frstor	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fnsave	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fscale
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fsin
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fsincos
+# CHECK-NEXT:  -      -      -      -     21.00   -     1.00    -      -      -      -      -      -      -     	fsqrt
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fst	%st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fsts	(%edx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fstl	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fstp	%st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fstpl	(%edx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fstpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00    -      -      -      -     	fstpt	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fnstcw	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fnstenv	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fnstsw	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	frstor	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	wait
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fsub	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fsub	%st(2)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fsubs	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fsubl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fsubp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fsubp	%st(2)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fisubs	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fisubl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fsubr	%st(2)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fsubrs	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fsubrl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fsubrp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fsubrp	%st(2)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fisubrs	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -     1.00    -     1.00    -      -      -      -      -      -     	fisubrl	(%eax)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	ftst
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fucom	%st(1)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fucom	%st(3)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fucomp	%st(1)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fucomp	%st(3)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fucompp
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fucomi	%st(3)
+# CHECK-NEXT: 1.00    -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     	fucompi	%st(3)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	wait
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fxam
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fxch	%st(1)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fxch	%st(3)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fxrstor	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fxsave	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fxtract
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fyl2x
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     	fyl2xp1
+

Added: llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x87.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x87.s?rev=330499&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x87.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x87.s Sat Apr 21 03:36:19 2018
@@ -0,0 +1,524 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=haswell -instruction-tables < %s | FileCheck %s
+
+f2xm1
+
+fabs
+
+fadd %st(0), %st(1)
+fadd %st(2)
+fadds (%ecx)
+faddl (%ecx)
+faddp %st(1)
+faddp %st(2)
+fiadds (%ecx)
+fiaddl (%ecx)
+
+fbld (%ecx)
+fbstp (%eax)
+
+fchs
+
+fnclex
+
+fcmovb %st(1), %st(0)
+fcmovbe %st(1), %st(0)
+fcmove %st(1), %st(0)
+fcmovnb %st(1), %st(0)
+fcmovnbe %st(1), %st(0)
+fcmovne %st(1), %st(0)
+fcmovnu %st(1), %st(0)
+fcmovu %st(1), %st(0)
+
+fcom %st(1)
+fcom %st(3)
+fcoms (%ecx)
+fcoml (%eax)
+fcomp %st(1)
+fcomp %st(3)
+fcomps (%ecx)
+fcompl (%eax)
+fcompp
+
+fcomi %st(3)
+fcompi %st(3)
+
+fcos
+
+fdecstp
+
+fdiv %st(0), %st(1)
+fdiv %st(2)
+fdivs (%ecx)
+fdivl (%eax)
+fdivp %st(1)
+fdivp %st(2)
+fidivs (%ecx)
+fidivl (%eax)
+
+fdivr %st(0), %st(1)
+fdivr %st(2)
+fdivrs (%ecx)
+fdivrl (%eax)
+fdivrp %st(1)
+fdivrp %st(2)
+fidivrs (%ecx)
+fidivrl (%eax)
+
+ffree %st(0)
+
+ficoms (%ecx)
+ficoml (%eax)
+ficomps (%ecx)
+ficompl (%eax)
+
+filds (%edx)
+fildl (%ecx)
+fildll (%eax)
+
+fincstp
+
+fninit
+
+fists (%edx)
+fistl (%ecx)
+fistps (%edx)
+fistpl (%ecx)
+fistpll (%eax)
+
+fisttps (%edx)
+fisttpl (%ecx)
+fisttpll (%eax)
+
+fld %st(0)
+flds (%edx)
+fldl (%ecx)
+fldt (%eax)
+
+fldcw (%eax)
+fldenv (%eax)
+
+fld1
+fldl2e
+fldl2t
+fldlg2
+fldln2
+fldpi
+fldz
+
+fmul %st(0), %st(1)
+fmul %st(2)
+fmuls (%ecx)
+fmull (%eax)
+fmulp %st(1)
+fmulp %st(2)
+fimuls (%ecx)
+fimull (%eax)
+
+fnop
+
+fpatan
+
+fprem
+fprem1
+
+fptan
+
+frndint
+
+frstor (%eax)
+
+fnsave (%eax)
+
+fscale
+
+fsin
+
+fsincos
+
+fsqrt
+
+fst %st(0)
+fsts (%edx)
+fstl (%ecx)
+fstp %st(0)
+fstpl (%edx)
+fstpl (%ecx)
+fstpt (%eax)
+
+fnstcw (%eax)
+fnstenv (%eax)
+fnstsw (%eax)
+
+frstor (%eax)
+fsave (%eax)
+
+fsub %st(0), %st(1)
+fsub %st(2)
+fsubs (%ecx)
+fsubl (%eax)
+fsubp %st(1)
+fsubp %st(2)
+fisubs (%ecx)
+fisubl (%eax)
+
+fsubr %st(0), %st(1)
+fsubr %st(2)
+fsubrs (%ecx)
+fsubrl (%eax)
+fsubrp %st(1)
+fsubrp %st(2)
+fisubrs (%ecx)
+fisubrl (%eax)
+
+ftst
+
+fucom %st(1)
+fucom %st(3)
+fucomp %st(1)
+fucomp %st(3)
+fucompp
+
+fucomi %st(3)
+fucompi %st(3)
+
+fwait
+
+fxam
+
+fxch %st(1)
+fxch %st(3)
+
+fxrstor (%eax)
+fxsave (%eax)
+
+fxtract
+
+fyl2x
+fyl2xp1
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      100   0.25                  * 	f2xm1
+# CHECK-NEXT:  1      1     1.00                  * 	fabs
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fadds	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	faddl	(%ecx)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fiadds	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fiaddl	(%ecx)
+# CHECK-NEXT:  43     47     -                    * 	fbld	(%ecx)
+# CHECK-NEXT:  2      1     1.00                  * 	fbstp	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fchs
+# CHECK-NEXT:  4      4     1.00                  * 	fnclex
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(3)
+# CHECK-NEXT:  2      8     1.00                  * 	fcoms	(%ecx)
+# CHECK-NEXT:  2      8     1.00                  * 	fcoml	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(3)
+# CHECK-NEXT:  2      8     1.00                  * 	fcomps	(%ecx)
+# CHECK-NEXT:  2      8     1.00                  * 	fcompl	(%eax)
+# CHECK-NEXT:  2      1     0.50                  * 	fcompp
+# CHECK-NEXT:  3      1     0.50                  * 	fcomi	%st(3)
+# CHECK-NEXT:  3      1     0.50                  * 	fcompi	%st(3)
+# CHECK-NEXT:  1      100   0.25                  * 	fcos
+# CHECK-NEXT:  2      2     1.00                  * 	fdecstp
+# CHECK-NEXT:  1      24    1.00                  * 	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  1      20    1.00                  * 	fdiv	%st(2)
+# CHECK-NEXT:  2      31    1.00    *             * 	fdivs	(%ecx)
+# CHECK-NEXT:  2      31    1.00    *             * 	fdivl	(%eax)
+# CHECK-NEXT:  1      24    1.00                  * 	fdivp	%st(1)
+# CHECK-NEXT:  1      24    1.00                  * 	fdivp	%st(2)
+# CHECK-NEXT:  3      34    1.00    *             * 	fidivs	(%ecx)
+# CHECK-NEXT:  3      34    1.00    *             * 	fidivl	(%eax)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  1      24    1.00                  * 	fdivr	%st(2)
+# CHECK-NEXT:  2      27    1.00    *             * 	fdivrs	(%ecx)
+# CHECK-NEXT:  2      27    1.00    *             * 	fdivrl	(%eax)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivrp	%st(1)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivrp	%st(2)
+# CHECK-NEXT:  3      30    1.00    *             * 	fidivrs	(%ecx)
+# CHECK-NEXT:  3      30    1.00    *             * 	fidivrl	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	ffree	%st(0)
+# CHECK-NEXT:  3      11    2.00                  * 	ficoms	(%ecx)
+# CHECK-NEXT:  3      11    2.00                  * 	ficoml	(%eax)
+# CHECK-NEXT:  3      11    2.00                  * 	ficomps	(%ecx)
+# CHECK-NEXT:  3      11    2.00                  * 	ficompl	(%eax)
+# CHECK-NEXT:  2      10    1.00    *             * 	filds	(%edx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fildl	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fildll	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fincstp
+# CHECK-NEXT:  15     75    6.00                  * 	fninit
+# CHECK-NEXT:  3      4     1.00           *      * 	fists	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistps	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistpl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistpll	(%eax)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttps	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttpl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttpll	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fld	%st(0)
+# CHECK-NEXT:  1      7     0.50    *             * 	flds	(%edx)
+# CHECK-NEXT:  1      7     0.50    *             * 	fldl	(%ecx)
+# CHECK-NEXT:  1      7     0.50    *             * 	fldt	(%eax)
+# CHECK-NEXT:  3      7     1.00    *             * 	fldcw	(%eax)
+# CHECK-NEXT:  64     61    14.00                 * 	fldenv	(%eax)
+# CHECK-NEXT:  1      1      -                    * 	fld1
+# CHECK-NEXT:  2      1     0.50                  * 	fldl2e
+# CHECK-NEXT:  2      1     0.50                  * 	fldl2t
+# CHECK-NEXT:  2      1     0.50                  * 	fldlg2
+# CHECK-NEXT:  2      1     0.50                  * 	fldln2
+# CHECK-NEXT:  2      1     0.50                  * 	fldpi
+# CHECK-NEXT:  1      1     0.50                  * 	fldz
+# CHECK-NEXT:  1      5     1.00                  * 	fmul	%st(0), %st(1)
+# CHECK-NEXT:  1      5     1.00                  * 	fmul	%st(2)
+# CHECK-NEXT:  2      12    1.00    *             * 	fmuls	(%ecx)
+# CHECK-NEXT:  2      12    1.00    *             * 	fmull	(%eax)
+# CHECK-NEXT:  1      5     1.00                  * 	fmulp	%st(1)
+# CHECK-NEXT:  1      5     1.00                  * 	fmulp	%st(2)
+# CHECK-NEXT:  3      15    1.00    *             * 	fimuls	(%ecx)
+# CHECK-NEXT:  3      15    1.00    *             * 	fimull	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fnop
+# CHECK-NEXT:  1      100   0.25                  * 	fpatan
+# CHECK-NEXT:  28     19     -                    * 	fprem
+# CHECK-NEXT:  41     27     -                    * 	fprem1
+# CHECK-NEXT:  1      100   0.25                  * 	fptan
+# CHECK-NEXT:  17     11     -                    * 	frndint
+# CHECK-NEXT:  90     1      -                    * 	frstor	(%eax)
+# CHECK-NEXT:  147    1      -                    * 	fnsave	(%eax)
+# CHECK-NEXT:  50     75     -                    * 	fscale
+# CHECK-NEXT:  1      100   0.25                  * 	fsin
+# CHECK-NEXT:  1      100   0.25                  * 	fsincos
+# CHECK-NEXT:  1      15    1.00                  * 	fsqrt
+# CHECK-NEXT:  1      1     0.50                  * 	fst	%st(0)
+# CHECK-NEXT:  1      1     1.00           *      * 	fsts	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstl	(%ecx)
+# CHECK-NEXT:  1      1     0.50                  * 	fstp	%st(0)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpl	(%edx)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpl	(%ecx)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpt	(%eax)
+# CHECK-NEXT:  3      2     1.00           *      * 	fnstcw	(%eax)
+# CHECK-NEXT:  100    115   19.50                 * 	fnstenv	(%eax)
+# CHECK-NEXT:  3      4     1.00                  * 	fnstsw	(%eax)
+# CHECK-NEXT:  90     1      -                    * 	frstor	(%eax)
+# CHECK-NEXT:  2      2     0.50                  * 	wait
+# CHECK-NEXT:  147    1      -                    * 	fnsave	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubs	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubs	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubrs	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubrs	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubrl	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	ftst
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(3)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(3)
+# CHECK-NEXT:  2      1     0.50                  * 	fucompp
+# CHECK-NEXT:  3      1     0.50                  * 	fucomi	%st(3)
+# CHECK-NEXT:  3      1     0.50                  * 	fucompi	%st(3)
+# CHECK-NEXT:  2      2     0.50                  * 	wait
+# CHECK-NEXT:  2      1     2.00                  * 	fxam
+# CHECK-NEXT:  15     17    4.00                  * 	fxch	%st(1)
+# CHECK-NEXT:  15     17    4.00                  * 	fxch	%st(3)
+# CHECK-NEXT:  90     64    16.50   *      *      * 	fxrstor	(%eax)
+# CHECK-NEXT:  1      100   0.25    *      *      * 	fxsave	(%eax)
+# CHECK-NEXT:  17     15     -                    * 	fxtract
+# CHECK-NEXT:  1      100   0.25                  * 	fyl2x
+# CHECK-NEXT:  1      100   0.25                  * 	fyl2xp1
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - HWDivider
+# CHECK-NEXT: [1] - HWFPDivider
+# CHECK-NEXT: [2] - HWPort0
+# CHECK-NEXT: [3] - HWPort1
+# CHECK-NEXT: [4] - HWPort2
+# CHECK-NEXT: [5] - HWPort3
+# CHECK-NEXT: [6] - HWPort4
+# CHECK-NEXT: [7] - HWPort5
+# CHECK-NEXT: [8] - HWPort6
+# CHECK-NEXT: [9] - HWPort7
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
+# CHECK-NEXT:  -      -     117.92 141.92 49.00  49.00  27.00  56.92  65.25  9.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    	Instructions:
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	f2xm1
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fabs
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fadd	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fadd	%st(2)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fadds	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	faddl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	faddp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	faddp	%st(2)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fiadds	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fiaddl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fbld	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fbstp	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fchs
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -     1.00   1.00    -     	fnclex
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcom	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcom	%st(3)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fcoms	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fcoml	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcomp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcomp	%st(3)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fcomps	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fcompl	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fcompp
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fcomi	%st(3)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fcompi	%st(3)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fcos
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -      -      -      -     	fdecstp
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdiv	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivp	%st(2)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fidivs	(%ecx)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fidivl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivr	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivrs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivrl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivrp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivrp	%st(2)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fidivrs	(%ecx)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fidivrl	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	ffree	%st(0)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	ficoms	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	ficoml	(%eax)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	ficomps	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	ficompl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	filds	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fildl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fildll	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fincstp
+# CHECK-NEXT:  -      -     3.00   3.00    -      -      -     7.50   1.50    -     	fninit
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fists	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fistl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fistps	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fistpl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fistpll	(%eax)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fisttps	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fisttpl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.33   0.33   1.00    -      -     0.33   	fisttpll	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fld	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	flds	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	fldl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	fldt	(%eax)
+# CHECK-NEXT:  -      -     1.50   0.50   0.50   0.50    -      -      -      -     	fldcw	(%eax)
+# CHECK-NEXT:  -      -     18.92  11.42  4.00   4.00    -     10.92  14.75   -     	fldenv	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fld1
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fldl2e
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fldl2t
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fldlg2
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fldln2
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fldpi
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fldz
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmul	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmul	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fmuls	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fmull	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmulp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmulp	%st(2)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fimuls	(%ecx)
+# CHECK-NEXT:  -      -     1.00   1.00   0.50   0.50    -      -      -      -     	fimull	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fnop
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fpatan
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fprem
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fprem1
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fptan
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	frndint
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	frstor	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fscale
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fsin
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fsincos
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fsqrt
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fst	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fsts	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstl	(%ecx)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fstp	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpl	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpt	(%eax)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -     1.00   0.33   	fnstcw	(%eax)
+# CHECK-NEXT:  -      -     27.00  16.50  3.67   3.67   11.00  15.50  19.00  3.67   	fnstenv	(%eax)
+# CHECK-NEXT:  -      -     1.00    -     0.33   0.33   1.00    -      -     0.33   	fnstsw	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	frstor	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -     0.50   0.50    -     	wait
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsub	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsub	%st(2)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fsubs	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fsubl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubp	%st(2)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fisubs	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fisubl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubr	%st(2)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fsubrs	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     	fsubrl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubrp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fsubrp	%st(2)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fisubrs	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00   0.50   0.50    -      -      -      -     	fisubrl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	ftst
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucom	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucom	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucomp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fucomp	%st(3)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fucompp
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fucomi	%st(3)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -     	fucompi	%st(3)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -     0.50   0.50    -     	wait
+# CHECK-NEXT:  -      -      -     2.00    -      -      -      -      -      -     	fxam
+# CHECK-NEXT:  -      -     4.00   3.00    -      -      -     3.00   5.00    -     	fxch	%st(1)
+# CHECK-NEXT:  -      -     4.00   3.00    -      -      -     3.00   5.00    -     	fxch	%st(3)
+# CHECK-NEXT:  -      -     17.25  12.25  16.50  16.50   -     12.75  14.75   -     	fxrstor	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fxsave	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fxtract
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fyl2x
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fyl2xp1
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x87.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x87.s?rev=330499&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x87.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x87.s Sat Apr 21 03:36:19 2018
@@ -0,0 +1,522 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=slm -instruction-tables < %s | FileCheck %s
+
+f2xm1
+
+fabs
+
+fadd %st(0), %st(1)
+fadd %st(2)
+fadds (%ecx)
+faddl (%ecx)
+faddp %st(1)
+faddp %st(2)
+fiadds (%ecx)
+fiaddl (%ecx)
+
+fbld (%ecx)
+fbstp (%eax)
+
+fchs
+
+fnclex
+
+fcmovb %st(1), %st(0)
+fcmovbe %st(1), %st(0)
+fcmove %st(1), %st(0)
+fcmovnb %st(1), %st(0)
+fcmovnbe %st(1), %st(0)
+fcmovne %st(1), %st(0)
+fcmovnu %st(1), %st(0)
+fcmovu %st(1), %st(0)
+
+fcom %st(1)
+fcom %st(3)
+fcoms (%ecx)
+fcoml (%eax)
+fcomp %st(1)
+fcomp %st(3)
+fcomps (%ecx)
+fcompl (%eax)
+fcompp
+
+fcomi %st(3)
+fcompi %st(3)
+
+fcos
+
+fdecstp
+
+fdiv %st(0), %st(1)
+fdiv %st(2)
+fdivs (%ecx)
+fdivl (%eax)
+fdivp %st(1)
+fdivp %st(2)
+fidivs (%ecx)
+fidivl (%eax)
+
+fdivr %st(0), %st(1)
+fdivr %st(2)
+fdivrs (%ecx)
+fdivrl (%eax)
+fdivrp %st(1)
+fdivrp %st(2)
+fidivrs (%ecx)
+fidivrl (%eax)
+
+ffree %st(0)
+
+ficoms (%ecx)
+ficoml (%eax)
+ficomps (%ecx)
+ficompl (%eax)
+
+filds (%edx)
+fildl (%ecx)
+fildll (%eax)
+
+fincstp
+
+fninit
+
+fists (%edx)
+fistl (%ecx)
+fistps (%edx)
+fistpl (%ecx)
+fistpll (%eax)
+
+fisttps (%edx)
+fisttpl (%ecx)
+fisttpll (%eax)
+
+fld %st(0)
+flds (%edx)
+fldl (%ecx)
+fldt (%eax)
+
+fldcw (%eax)
+fldenv (%eax)
+
+fld1
+fldl2e
+fldl2t
+fldlg2
+fldln2
+fldpi
+fldz
+
+fmul %st(0), %st(1)
+fmul %st(2)
+fmuls (%ecx)
+fmull (%eax)
+fmulp %st(1)
+fmulp %st(2)
+fimuls (%ecx)
+fimull (%eax)
+
+fnop
+
+fpatan
+
+fprem
+fprem1
+
+fptan
+
+frndint
+
+frstor (%eax)
+
+fnsave (%eax)
+
+fscale
+
+fsin
+
+fsincos
+
+fsqrt
+
+fst %st(0)
+fsts (%edx)
+fstl (%ecx)
+fstp %st(0)
+fstpl (%edx)
+fstpl (%ecx)
+fstpt (%eax)
+
+fnstcw (%eax)
+fnstenv (%eax)
+fnstsw (%eax)
+
+frstor (%eax)
+fsave (%eax)
+
+fsub %st(0), %st(1)
+fsub %st(2)
+fsubs (%ecx)
+fsubl (%eax)
+fsubp %st(1)
+fsubp %st(2)
+fisubs (%ecx)
+fisubl (%eax)
+
+fsubr %st(0), %st(1)
+fsubr %st(2)
+fsubrs (%ecx)
+fsubrl (%eax)
+fsubrp %st(1)
+fsubrp %st(2)
+fisubrs (%ecx)
+fisubrl (%eax)
+
+ftst
+
+fucom %st(1)
+fucom %st(3)
+fucomp %st(1)
+fucomp %st(3)
+fucompp
+
+fucomi %st(3)
+fucompi %st(3)
+
+fwait
+
+fxam
+
+fxch %st(1)
+fxch %st(3)
+
+fxrstor (%eax)
+fxsave (%eax)
+
+fxtract
+
+fyl2x
+fyl2xp1
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      100   1.00                  * 	f2xm1
+# CHECK-NEXT:  1      1     0.50                  * 	fabs
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(2)
+# CHECK-NEXT:  1      6     1.00    *             * 	fadds	(%ecx)
+# CHECK-NEXT:  1      6     1.00    *             * 	faddl	(%ecx)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(2)
+# CHECK-NEXT:  1      6     1.00    *             * 	fiadds	(%ecx)
+# CHECK-NEXT:  1      6     1.00    *             * 	fiaddl	(%ecx)
+# CHECK-NEXT:  1      100   1.00                  * 	fbld	(%ecx)
+# CHECK-NEXT:  1      100   1.00                  * 	fbstp	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fchs
+# CHECK-NEXT:  1      100   1.00                  * 	fnclex
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcom	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fcom	%st(3)
+# CHECK-NEXT:  1      6     1.00                  * 	fcoms	(%ecx)
+# CHECK-NEXT:  1      6     1.00                  * 	fcoml	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fcomp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fcomp	%st(3)
+# CHECK-NEXT:  1      6     1.00                  * 	fcomps	(%ecx)
+# CHECK-NEXT:  1      6     1.00                  * 	fcompl	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	fcompp
+# CHECK-NEXT:  1      3     1.00                  * 	fcomi	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fcompi	%st(3)
+# CHECK-NEXT:  1      100   1.00                  * 	fcos
+# CHECK-NEXT:  1      100   1.00                  * 	fdecstp
+# CHECK-NEXT:  1      34    34.00                 * 	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  1      34    34.00                 * 	fdiv	%st(2)
+# CHECK-NEXT:  1      37    34.00   *             * 	fdivs	(%ecx)
+# CHECK-NEXT:  1      37    34.00   *             * 	fdivl	(%eax)
+# CHECK-NEXT:  1      34    34.00                 * 	fdivp	%st(1)
+# CHECK-NEXT:  1      34    34.00                 * 	fdivp	%st(2)
+# CHECK-NEXT:  1      37    34.00   *             * 	fidivs	(%ecx)
+# CHECK-NEXT:  1      37    34.00   *             * 	fidivl	(%eax)
+# CHECK-NEXT:  1      34    34.00                 * 	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  1      34    34.00                 * 	fdivr	%st(2)
+# CHECK-NEXT:  1      37    34.00   *             * 	fdivrs	(%ecx)
+# CHECK-NEXT:  1      37    34.00   *             * 	fdivrl	(%eax)
+# CHECK-NEXT:  1      34    34.00                 * 	fdivrp	%st(1)
+# CHECK-NEXT:  1      34    34.00                 * 	fdivrp	%st(2)
+# CHECK-NEXT:  1      37    34.00   *             * 	fidivrs	(%ecx)
+# CHECK-NEXT:  1      37    34.00   *             * 	fidivrl	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	ffree	%st(0)
+# CHECK-NEXT:  1      6     1.00                  * 	ficoms	(%ecx)
+# CHECK-NEXT:  1      6     1.00                  * 	ficoml	(%eax)
+# CHECK-NEXT:  1      6     1.00                  * 	ficomps	(%ecx)
+# CHECK-NEXT:  1      6     1.00                  * 	ficompl	(%eax)
+# CHECK-NEXT:  1      3     1.00    *             * 	filds	(%edx)
+# CHECK-NEXT:  1      3     1.00    *             * 	fildl	(%ecx)
+# CHECK-NEXT:  1      3     1.00    *             * 	fildll	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	fincstp
+# CHECK-NEXT:  1      100   1.00                  * 	fninit
+# CHECK-NEXT:  1      1     1.00           *      * 	fists	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fistl	(%ecx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fistps	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fistpl	(%ecx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fistpll	(%eax)
+# CHECK-NEXT:  1      1     1.00           *      * 	fisttps	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fisttpl	(%ecx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fisttpll	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fld	%st(0)
+# CHECK-NEXT:  1      3     1.00    *             * 	flds	(%edx)
+# CHECK-NEXT:  1      3     1.00    *             * 	fldl	(%ecx)
+# CHECK-NEXT:  1      3     1.00    *             * 	fldt	(%eax)
+# CHECK-NEXT:  1      3     1.00    *             * 	fldcw	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	fldenv	(%eax)
+# CHECK-NEXT:  1      1      -                    * 	fld1
+# CHECK-NEXT:  1      100   1.00                  * 	fldl2e
+# CHECK-NEXT:  1      100   1.00                  * 	fldl2t
+# CHECK-NEXT:  1      100   1.00                  * 	fldlg2
+# CHECK-NEXT:  1      100   1.00                  * 	fldln2
+# CHECK-NEXT:  1      100   1.00                  * 	fldpi
+# CHECK-NEXT:  1      1      -                    * 	fldz
+# CHECK-NEXT:  1      5     2.00                  * 	fmul	%st(0), %st(1)
+# CHECK-NEXT:  1      5     2.00                  * 	fmul	%st(2)
+# CHECK-NEXT:  1      8     2.00    *             * 	fmuls	(%ecx)
+# CHECK-NEXT:  1      8     2.00    *             * 	fmull	(%eax)
+# CHECK-NEXT:  1      5     2.00                  * 	fmulp	%st(1)
+# CHECK-NEXT:  1      5     2.00                  * 	fmulp	%st(2)
+# CHECK-NEXT:  1      8     2.00    *             * 	fimuls	(%ecx)
+# CHECK-NEXT:  1      8     2.00    *             * 	fimull	(%eax)
+# CHECK-NEXT:  1      1      -                    * 	fnop
+# CHECK-NEXT:  1      100   1.00                  * 	fpatan
+# CHECK-NEXT:  1      100   1.00                  * 	fprem
+# CHECK-NEXT:  1      100   1.00                  * 	fprem1
+# CHECK-NEXT:  1      100   1.00                  * 	fptan
+# CHECK-NEXT:  1      100   1.00                  * 	frndint
+# CHECK-NEXT:  1      100   1.00                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	fscale
+# CHECK-NEXT:  1      100   1.00                  * 	fsin
+# CHECK-NEXT:  1      100   1.00                  * 	fsincos
+# CHECK-NEXT:  1      15    1.00                  * 	fsqrt
+# CHECK-NEXT:  1      1     0.50                  * 	fst	%st(0)
+# CHECK-NEXT:  1      1     1.00           *      * 	fsts	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstl	(%ecx)
+# CHECK-NEXT:  1      1     0.50                  * 	fstp	%st(0)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstpl	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstpl	(%ecx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstpt	(%eax)
+# CHECK-NEXT:  1      1     0.50           *      * 	fnstcw	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	fnstenv	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	fnstsw	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	wait
+# CHECK-NEXT:  1      100   1.00                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(2)
+# CHECK-NEXT:  1      6     1.00    *             * 	fsubs	(%ecx)
+# CHECK-NEXT:  1      6     1.00    *             * 	fsubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(2)
+# CHECK-NEXT:  1      6     1.00    *             * 	fisubs	(%ecx)
+# CHECK-NEXT:  1      6     1.00    *             * 	fisubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(2)
+# CHECK-NEXT:  1      6     1.00    *             * 	fsubrs	(%ecx)
+# CHECK-NEXT:  1      6     1.00    *             * 	fsubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(2)
+# CHECK-NEXT:  1      6     1.00    *             * 	fisubrs	(%ecx)
+# CHECK-NEXT:  1      6     1.00    *             * 	fisubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	ftst
+# CHECK-NEXT:  1      3     1.00                  * 	fucom	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fucom	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fucomp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fucomp	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fucompp
+# CHECK-NEXT:  1      3     1.00                  * 	fucomi	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fucompi	%st(3)
+# CHECK-NEXT:  1      100   1.00                  * 	wait
+# CHECK-NEXT:  1      100   1.00                  * 	fxam
+# CHECK-NEXT:  1      1     0.50                  * 	fxch	%st(1)
+# CHECK-NEXT:  1      1     0.50                  * 	fxch	%st(3)
+# CHECK-NEXT:  1      100   1.00    *      *      * 	fxrstor	(%eax)
+# CHECK-NEXT:  1      100   1.00    *      *      * 	fxsave	(%eax)
+# CHECK-NEXT:  1      100   1.00                  * 	fxtract
+# CHECK-NEXT:  1      100   1.00                  * 	fyl2x
+# CHECK-NEXT:  1      100   1.00                  * 	fyl2xp1
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SLMDivider
+# CHECK-NEXT: [1] - SLMFPDivider
+# CHECK-NEXT: [2] - SLMFPMultiplier
+# CHECK-NEXT: [3] - SLM_FPC_RSV0
+# CHECK-NEXT: [4] - SLM_FPC_RSV1
+# CHECK-NEXT: [5] - SLM_IEC_RSV0
+# CHECK-NEXT: [6] - SLM_IEC_RSV1
+# CHECK-NEXT: [7] - SLM_MEC_RSV
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]
+# CHECK-NEXT:  -     544.00 16.00  64.00  55.00  9.50   9.50   52.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    	Instructions:
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	f2xm1
+# CHECK-NEXT:  -      -      -     0.50   0.50    -      -      -     	fabs
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fadd	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fadd	%st(2)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fadds	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	faddl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	faddp	%st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	faddp	%st(2)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fiadds	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fiaddl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fbld	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fbstp	(%eax)
+# CHECK-NEXT:  -      -      -     0.50   0.50    -      -      -     	fchs
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fnclex
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcom	%st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcom	%st(3)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fcoms	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fcoml	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcomp	%st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcomp	%st(3)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fcomps	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fcompl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fcompp
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcomi	%st(3)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fcompi	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fcos
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fdecstp
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -      -     	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -      -     	fdiv	%st(2)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -     1.00   	fdivs	(%ecx)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -     1.00   	fdivl	(%eax)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -      -     	fdivp	%st(1)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -      -     	fdivp	%st(2)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -     1.00   	fidivs	(%ecx)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -     1.00   	fidivl	(%eax)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -      -     	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -      -     	fdivr	%st(2)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -     1.00   	fdivrs	(%ecx)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -     1.00   	fdivrl	(%eax)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -      -     	fdivrp	%st(1)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -      -     	fdivrp	%st(2)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -     1.00   	fidivrs	(%ecx)
+# CHECK-NEXT:  -     34.00   -     1.00    -      -      -     1.00   	fidivrl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	ffree	%st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	ficoms	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	ficoml	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	ficomps	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	ficompl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   	filds	(%edx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   	fildl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   	fildll	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fincstp
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fninit
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fists	(%edx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fistl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fistps	(%edx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fistpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fistpll	(%eax)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fisttps	(%edx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fisttpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fisttpll	(%eax)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     	fld	%st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   	flds	(%edx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   	fldl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   	fldt	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   	fldcw	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fldenv	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     	fld1
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fldl2e
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fldl2t
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fldlg2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fldln2
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fldpi
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     	fldz
+# CHECK-NEXT:  -      -     2.00   1.00    -      -      -      -     	fmul	%st(0), %st(1)
+# CHECK-NEXT:  -      -     2.00   1.00    -      -      -      -     	fmul	%st(2)
+# CHECK-NEXT:  -      -     2.00   1.00    -      -      -     1.00   	fmuls	(%ecx)
+# CHECK-NEXT:  -      -     2.00   1.00    -      -      -     1.00   	fmull	(%eax)
+# CHECK-NEXT:  -      -     2.00   1.00    -      -      -      -     	fmulp	%st(1)
+# CHECK-NEXT:  -      -     2.00   1.00    -      -      -      -     	fmulp	%st(2)
+# CHECK-NEXT:  -      -     2.00   1.00    -      -      -     1.00   	fimuls	(%ecx)
+# CHECK-NEXT:  -      -     2.00   1.00    -      -      -     1.00   	fimull	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     	fnop
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fpatan
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fprem
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fprem1
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fptan
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	frndint
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	frstor	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fscale
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsin
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsincos
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsqrt
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     	fst	%st(0)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fsts	(%edx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fstl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     	fstp	%st(0)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fstpl	(%edx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fstpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00   	fstpt	(%eax)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     	fnstcw	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fnstenv	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fnstsw	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	frstor	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	wait
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fsub	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fsub	%st(2)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fsubs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fsubl	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fsubp	%st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fsubp	%st(2)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fisubs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fisubl	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fsubr	%st(2)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fsubrs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fsubrl	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fsubrp	%st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fsubrp	%st(2)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fisubrs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   	fisubrl	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	ftst
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fucom	%st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fucom	%st(3)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fucomp	%st(1)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fucomp	%st(3)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fucompp
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fucomi	%st(3)
+# CHECK-NEXT:  -      -      -      -     1.00    -      -      -     	fucompi	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	wait
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fxam
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     	fxch	%st(1)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     	fxch	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fxrstor	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fxsave	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fxtract
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fyl2x
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fyl2xp1
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x87.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x87.s?rev=330499&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x87.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x87.s Sat Apr 21 03:36:19 2018
@@ -0,0 +1,522 @@
+# 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
+
+f2xm1
+
+fabs
+
+fadd %st(0), %st(1)
+fadd %st(2)
+fadds (%ecx)
+faddl (%ecx)
+faddp %st(1)
+faddp %st(2)
+fiadds (%ecx)
+fiaddl (%ecx)
+
+fbld (%ecx)
+fbstp (%eax)
+
+fchs
+
+fnclex
+
+fcmovb %st(1), %st(0)
+fcmovbe %st(1), %st(0)
+fcmove %st(1), %st(0)
+fcmovnb %st(1), %st(0)
+fcmovnbe %st(1), %st(0)
+fcmovne %st(1), %st(0)
+fcmovnu %st(1), %st(0)
+fcmovu %st(1), %st(0)
+
+fcom %st(1)
+fcom %st(3)
+fcoms (%ecx)
+fcoml (%eax)
+fcomp %st(1)
+fcomp %st(3)
+fcomps (%ecx)
+fcompl (%eax)
+fcompp
+
+fcomi %st(3)
+fcompi %st(3)
+
+fcos
+
+fdecstp
+
+fdiv %st(0), %st(1)
+fdiv %st(2)
+fdivs (%ecx)
+fdivl (%eax)
+fdivp %st(1)
+fdivp %st(2)
+fidivs (%ecx)
+fidivl (%eax)
+
+fdivr %st(0), %st(1)
+fdivr %st(2)
+fdivrs (%ecx)
+fdivrl (%eax)
+fdivrp %st(1)
+fdivrp %st(2)
+fidivrs (%ecx)
+fidivrl (%eax)
+
+ffree %st(0)
+
+ficoms (%ecx)
+ficoml (%eax)
+ficomps (%ecx)
+ficompl (%eax)
+
+filds (%edx)
+fildl (%ecx)
+fildll (%eax)
+
+fincstp
+
+fninit
+
+fists (%edx)
+fistl (%ecx)
+fistps (%edx)
+fistpl (%ecx)
+fistpll (%eax)
+
+fisttps (%edx)
+fisttpl (%ecx)
+fisttpll (%eax)
+
+fld %st(0)
+flds (%edx)
+fldl (%ecx)
+fldt (%eax)
+
+fldcw (%eax)
+fldenv (%eax)
+
+fld1
+fldl2e
+fldl2t
+fldlg2
+fldln2
+fldpi
+fldz
+
+fmul %st(0), %st(1)
+fmul %st(2)
+fmuls (%ecx)
+fmull (%eax)
+fmulp %st(1)
+fmulp %st(2)
+fimuls (%ecx)
+fimull (%eax)
+
+fnop
+
+fpatan
+
+fprem
+fprem1
+
+fptan
+
+frndint
+
+frstor (%eax)
+
+fnsave (%eax)
+
+fscale
+
+fsin
+
+fsincos
+
+fsqrt
+
+fst %st(0)
+fsts (%edx)
+fstl (%ecx)
+fstp %st(0)
+fstpl (%edx)
+fstpl (%ecx)
+fstpt (%eax)
+
+fnstcw (%eax)
+fnstenv (%eax)
+fnstsw (%eax)
+
+frstor (%eax)
+fsave (%eax)
+
+fsub %st(0), %st(1)
+fsub %st(2)
+fsubs (%ecx)
+fsubl (%eax)
+fsubp %st(1)
+fsubp %st(2)
+fisubs (%ecx)
+fisubl (%eax)
+
+fsubr %st(0), %st(1)
+fsubr %st(2)
+fsubrs (%ecx)
+fsubrl (%eax)
+fsubrp %st(1)
+fsubrp %st(2)
+fisubrs (%ecx)
+fisubrl (%eax)
+
+ftst
+
+fucom %st(1)
+fucom %st(3)
+fucomp %st(1)
+fucomp %st(3)
+fucompp
+
+fucomi %st(3)
+fucompi %st(3)
+
+fwait
+
+fxam
+
+fxch %st(1)
+fxch %st(3)
+
+fxrstor (%eax)
+fxsave (%eax)
+
+fxtract
+
+fyl2x
+fyl2xp1
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      100   0.33                  * 	f2xm1
+# CHECK-NEXT:  1      1     1.00                  * 	fabs
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fadds	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	faddl	(%ecx)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fiadds	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fiaddl	(%ecx)
+# CHECK-NEXT:  1      100   0.33                  * 	fbld	(%ecx)
+# CHECK-NEXT:  1      100   0.33                  * 	fbstp	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fchs
+# CHECK-NEXT:  1      100   0.33                  * 	fnclex
+# CHECK-NEXT:  3      3     2.00                  * 	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  3      3     2.00                  * 	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  3      3     2.00                  * 	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  3      3     2.00                  * 	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  3      3     2.00                  * 	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  3      3     2.00                  * 	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  3      3     2.00                  * 	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  3      3     2.00                  * 	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(3)
+# CHECK-NEXT:  2      8     1.00                  * 	fcoms	(%ecx)
+# CHECK-NEXT:  2      8     1.00                  * 	fcoml	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(3)
+# CHECK-NEXT:  2      8     1.00                  * 	fcomps	(%ecx)
+# CHECK-NEXT:  2      8     1.00                  * 	fcompl	(%eax)
+# CHECK-NEXT:  1      100   0.33                  * 	fcompp
+# CHECK-NEXT:  3      3     1.00                  * 	fcomi	%st(3)
+# CHECK-NEXT:  3      3     1.00                  * 	fcompi	%st(3)
+# CHECK-NEXT:  1      100   0.33                  * 	fcos
+# CHECK-NEXT:  1      1     1.00                  * 	fdecstp
+# CHECK-NEXT:  1      24    1.00                  * 	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  1      24    1.00                  * 	fdiv	%st(2)
+# CHECK-NEXT:  2      31    1.00    *             * 	fdivs	(%ecx)
+# CHECK-NEXT:  2      31    1.00    *             * 	fdivl	(%eax)
+# CHECK-NEXT:  1      24    1.00                  * 	fdivp	%st(1)
+# CHECK-NEXT:  1      24    1.00                  * 	fdivp	%st(2)
+# CHECK-NEXT:  3      34    1.00    *             * 	fidivs	(%ecx)
+# CHECK-NEXT:  3      34    1.00    *             * 	fidivl	(%eax)
+# CHECK-NEXT:  1      24    1.00                  * 	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  1      24    1.00                  * 	fdivr	%st(2)
+# CHECK-NEXT:  2      31    1.00    *             * 	fdivrs	(%ecx)
+# CHECK-NEXT:  2      31    1.00    *             * 	fdivrl	(%eax)
+# CHECK-NEXT:  1      24    1.00                  * 	fdivrp	%st(1)
+# CHECK-NEXT:  1      24    1.00                  * 	fdivrp	%st(2)
+# CHECK-NEXT:  3      34    1.00    *             * 	fidivrs	(%ecx)
+# CHECK-NEXT:  3      34    1.00    *             * 	fidivrl	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	ffree	%st(0)
+# CHECK-NEXT:  3      11    2.00                  * 	ficoms	(%ecx)
+# CHECK-NEXT:  3      11    2.00                  * 	ficoml	(%eax)
+# CHECK-NEXT:  3      11    2.00                  * 	ficomps	(%ecx)
+# CHECK-NEXT:  3      11    2.00                  * 	ficompl	(%eax)
+# CHECK-NEXT:  2      10    1.00    *             * 	filds	(%edx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fildl	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fildll	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fincstp
+# CHECK-NEXT:  4      5     1.33                  * 	fninit
+# CHECK-NEXT:  4      9     1.00           *      * 	fists	(%edx)
+# CHECK-NEXT:  4      9     1.00           *      * 	fistl	(%ecx)
+# CHECK-NEXT:  4      9     1.00           *      * 	fistps	(%edx)
+# CHECK-NEXT:  4      9     1.00           *      * 	fistpl	(%ecx)
+# CHECK-NEXT:  4      9     1.00           *      * 	fistpll	(%eax)
+# CHECK-NEXT:  3      5     1.00           *      * 	fisttps	(%edx)
+# CHECK-NEXT:  3      5     1.00           *      * 	fisttpl	(%ecx)
+# CHECK-NEXT:  3      5     1.00           *      * 	fisttpll	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fld	%st(0)
+# CHECK-NEXT:  3      9     1.00    *             * 	flds	(%edx)
+# CHECK-NEXT:  3      9     1.00    *             * 	fldl	(%ecx)
+# CHECK-NEXT:  3      9     1.00    *             * 	fldt	(%eax)
+# CHECK-NEXT:  5      8     2.00    *             * 	fldcw	(%eax)
+# CHECK-NEXT:  1      100   0.33                  * 	fldenv	(%eax)
+# CHECK-NEXT:  1      1      -                    * 	fld1
+# CHECK-NEXT:  1      100   0.33                  * 	fldl2e
+# CHECK-NEXT:  1      100   0.33                  * 	fldl2t
+# CHECK-NEXT:  1      100   0.33                  * 	fldlg2
+# CHECK-NEXT:  1      100   0.33                  * 	fldln2
+# CHECK-NEXT:  1      100   0.33                  * 	fldpi
+# CHECK-NEXT:  1      1      -                    * 	fldz
+# CHECK-NEXT:  1      5     1.00                  * 	fmul	%st(0), %st(1)
+# CHECK-NEXT:  1      5     1.00                  * 	fmul	%st(2)
+# CHECK-NEXT:  2      12    1.00    *             * 	fmuls	(%ecx)
+# CHECK-NEXT:  2      12    1.00    *             * 	fmull	(%eax)
+# CHECK-NEXT:  1      5     1.00                  * 	fmulp	%st(1)
+# CHECK-NEXT:  1      5     1.00                  * 	fmulp	%st(2)
+# CHECK-NEXT:  3      15    1.00    *             * 	fimuls	(%ecx)
+# CHECK-NEXT:  3      15    1.00    *             * 	fimull	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fnop
+# CHECK-NEXT:  1      100   0.33                  * 	fpatan
+# CHECK-NEXT:  1      100   0.33                  * 	fprem
+# CHECK-NEXT:  1      100   0.33                  * 	fprem1
+# CHECK-NEXT:  1      100   0.33                  * 	fptan
+# CHECK-NEXT:  1      100   0.33                  * 	frndint
+# CHECK-NEXT:  1      100   0.33                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      100   0.33                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      100   0.33                  * 	fscale
+# CHECK-NEXT:  1      100   0.33                  * 	fsin
+# CHECK-NEXT:  1      100   0.33                  * 	fsincos
+# CHECK-NEXT:  1      14    1.00                  * 	fsqrt
+# CHECK-NEXT:  1      1     1.00                  * 	fst	%st(0)
+# CHECK-NEXT:  3      6     1.00           *      * 	fsts	(%edx)
+# CHECK-NEXT:  3      6     1.00           *      * 	fstl	(%ecx)
+# CHECK-NEXT:  1      1     1.00                  * 	fstp	%st(0)
+# CHECK-NEXT:  3      6     1.00           *      * 	fstpl	(%edx)
+# CHECK-NEXT:  3      6     1.00           *      * 	fstpl	(%ecx)
+# CHECK-NEXT:  3      6     1.00           *      * 	fstpt	(%eax)
+# CHECK-NEXT:  4      7     1.00           *      * 	fnstcw	(%eax)
+# CHECK-NEXT:  1      100   0.33                  * 	fnstenv	(%eax)
+# CHECK-NEXT:  4      7     1.00                  * 	fnstsw	(%eax)
+# CHECK-NEXT:  1      100   0.33                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      100   0.33                  * 	wait
+# CHECK-NEXT:  1      100   0.33                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubs	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubs	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubrs	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubrs	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	ftst
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(3)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(3)
+# CHECK-NEXT:  1      3     1.00                  * 	fucompp
+# CHECK-NEXT:  3      3     1.00                  * 	fucomi	%st(3)
+# CHECK-NEXT:  3      3     1.00                  * 	fucompi	%st(3)
+# CHECK-NEXT:  1      100   0.33                  * 	wait
+# CHECK-NEXT:  1      100   0.33                  * 	fxam
+# CHECK-NEXT:  1      1     0.33                  * 	fxch	%st(1)
+# CHECK-NEXT:  1      1     0.33                  * 	fxch	%st(3)
+# CHECK-NEXT:  5      5     2.00    *      *      * 	fxrstor	(%eax)
+# CHECK-NEXT:  1      100   0.33    *      *      * 	fxsave	(%eax)
+# CHECK-NEXT:  1      100   0.33                  * 	fxtract
+# CHECK-NEXT:  1      100   0.33                  * 	fyl2x
+# CHECK-NEXT:  1      100   0.33                  * 	fyl2xp1
+
+# 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:  -      -     48.33  87.33  17.00  54.33  34.00  34.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    -      -     	f2xm1
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	fabs
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fadd	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fadd	%st(2)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fadds	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	faddl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	faddp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	faddp	%st(2)
+# CHECK-NEXT:  -      -      -     2.00    -      -     0.50   0.50   	fiadds	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00    -      -     0.50   0.50   	fiaddl	(%ecx)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fbld	(%ecx)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fbstp	(%eax)
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	fchs
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fnclex
+# CHECK-NEXT:  -      -     0.50    -      -     2.50    -      -     	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  -      -     0.50    -      -     2.50    -      -     	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -     0.50    -      -     2.50    -      -     	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  -      -     0.50    -      -     2.50    -      -     	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  -      -     0.50    -      -     2.50    -      -     	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -     0.50    -      -     2.50    -      -     	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  -      -     0.50    -      -     2.50    -      -     	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  -      -     0.50    -      -     2.50    -      -     	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fcom	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fcom	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fcoms	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fcoml	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fcomp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fcomp	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fcomps	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fcompl	(%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fcompp
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     	fcomi	%st(3)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     	fcompi	%st(3)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fcos
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	fdecstp
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fdiv	%st(2)
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	fdivs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	fdivl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fdivp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fdivp	%st(2)
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	fidivs	(%ecx)
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	fidivl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fdivr	%st(2)
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	fdivrs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	fdivrl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fdivrp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fdivrp	%st(2)
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	fidivrs	(%ecx)
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	fidivrl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	ffree	%st(0)
+# CHECK-NEXT:  -      -      -     2.00    -      -     0.50   0.50   	ficoms	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00    -      -     0.50   0.50   	ficoml	(%eax)
+# CHECK-NEXT:  -      -      -     2.00    -      -     0.50   0.50   	ficomps	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00    -      -     0.50   0.50   	ficompl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	filds	(%edx)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fildl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fildll	(%eax)
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	fincstp
+# CHECK-NEXT:  -      -     1.00   1.00    -     2.00    -      -     	fninit
+# CHECK-NEXT:  -      -      -     1.00   1.00    -     1.00   1.00   	fists	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   1.00    -     1.00   1.00   	fistl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   1.00    -     1.00   1.00   	fistps	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   1.00    -     1.00   1.00   	fistpl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   1.00    -     1.00   1.00   	fistpll	(%eax)
+# CHECK-NEXT:  -      -      -     1.00   1.00    -     0.50   0.50   	fisttps	(%edx)
+# CHECK-NEXT:  -      -      -     1.00   1.00    -     0.50   0.50   	fisttpl	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00   1.00    -     0.50   0.50   	fisttpll	(%eax)
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	fld	%st(0)
+# CHECK-NEXT:  -      -     0.50   0.50    -     1.00   0.50   0.50   	flds	(%edx)
+# CHECK-NEXT:  -      -     0.50   0.50    -     1.00   0.50   0.50   	fldl	(%ecx)
+# CHECK-NEXT:  -      -     0.50   0.50    -     1.00   0.50   0.50   	fldt	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00   2.00   1.00   1.00   	fldcw	(%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fldenv	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     	fld1
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fldl2e
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fldl2t
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fldlg2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fldln2
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fldpi
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     	fldz
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fmul	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fmul	%st(2)
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	fmuls	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   	fmull	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fmulp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fmulp	%st(2)
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	fimuls	(%ecx)
+# CHECK-NEXT:  -      -     1.00   1.00    -      -     0.50   0.50   	fimull	(%eax)
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	fnop
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fpatan
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fprem
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fprem1
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fptan
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	frndint
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	frstor	(%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fscale
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fsin
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fsincos
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     	fsqrt
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	fst	%st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00   1.00   	fsts	(%edx)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00   1.00   	fstl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     	fstp	%st(0)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00   1.00   	fstpl	(%edx)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00   1.00   	fstpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     1.00    -     1.00   1.00   	fstpt	(%eax)
+# CHECK-NEXT:  -      -      -      -     1.00   1.00   1.00   1.00   	fnstcw	(%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fnstenv	(%eax)
+# CHECK-NEXT:  -      -     1.00    -     1.00    -     1.00   1.00   	fnstsw	(%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	frstor	(%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	wait
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsub	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsub	%st(2)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fsubs	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fsubl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsubp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsubp	%st(2)
+# CHECK-NEXT:  -      -      -     2.00    -      -     0.50   0.50   	fisubs	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00    -      -     0.50   0.50   	fisubl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsubr	%st(2)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fsubrs	(%ecx)
+# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   	fsubrl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsubrp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fsubrp	%st(2)
+# CHECK-NEXT:  -      -      -     2.00    -      -     0.50   0.50   	fisubrs	(%ecx)
+# CHECK-NEXT:  -      -      -     2.00    -      -     0.50   0.50   	fisubrl	(%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	ftst
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fucom	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fucom	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fucomp	%st(1)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fucomp	%st(3)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     	fucompp
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     	fucomi	%st(3)
+# CHECK-NEXT:  -      -     1.00   1.00    -     1.00    -      -     	fucompi	%st(3)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	wait
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fxam
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fxch	%st(1)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fxch	%st(3)
+# CHECK-NEXT:  -      -     0.50   0.50   1.00   2.00   0.50   0.50   	fxrstor	(%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fxsave	(%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fxtract
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fyl2x
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     	fyl2xp1
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s?rev=330499&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s Sat Apr 21 03:36:19 2018
@@ -0,0 +1,524 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=skylake -instruction-tables < %s | FileCheck %s
+
+f2xm1
+
+fabs
+
+fadd %st(0), %st(1)
+fadd %st(2)
+fadds (%ecx)
+faddl (%ecx)
+faddp %st(1)
+faddp %st(2)
+fiadds (%ecx)
+fiaddl (%ecx)
+
+fbld (%ecx)
+fbstp (%eax)
+
+fchs
+
+fnclex
+
+fcmovb %st(1), %st(0)
+fcmovbe %st(1), %st(0)
+fcmove %st(1), %st(0)
+fcmovnb %st(1), %st(0)
+fcmovnbe %st(1), %st(0)
+fcmovne %st(1), %st(0)
+fcmovnu %st(1), %st(0)
+fcmovu %st(1), %st(0)
+
+fcom %st(1)
+fcom %st(3)
+fcoms (%ecx)
+fcoml (%eax)
+fcomp %st(1)
+fcomp %st(3)
+fcomps (%ecx)
+fcompl (%eax)
+fcompp
+
+fcomi %st(3)
+fcompi %st(3)
+
+fcos
+
+fdecstp
+
+fdiv %st(0), %st(1)
+fdiv %st(2)
+fdivs (%ecx)
+fdivl (%eax)
+fdivp %st(1)
+fdivp %st(2)
+fidivs (%ecx)
+fidivl (%eax)
+
+fdivr %st(0), %st(1)
+fdivr %st(2)
+fdivrs (%ecx)
+fdivrl (%eax)
+fdivrp %st(1)
+fdivrp %st(2)
+fidivrs (%ecx)
+fidivrl (%eax)
+
+ffree %st(0)
+
+ficoms (%ecx)
+ficoml (%eax)
+ficomps (%ecx)
+ficompl (%eax)
+
+filds (%edx)
+fildl (%ecx)
+fildll (%eax)
+
+fincstp
+
+fninit
+
+fists (%edx)
+fistl (%ecx)
+fistps (%edx)
+fistpl (%ecx)
+fistpll (%eax)
+
+fisttps (%edx)
+fisttpl (%ecx)
+fisttpll (%eax)
+
+fld %st(0)
+flds (%edx)
+fldl (%ecx)
+fldt (%eax)
+
+fldcw (%eax)
+fldenv (%eax)
+
+fld1
+fldl2e
+fldl2t
+fldlg2
+fldln2
+fldpi
+fldz
+
+fmul %st(0), %st(1)
+fmul %st(2)
+fmuls (%ecx)
+fmull (%eax)
+fmulp %st(1)
+fmulp %st(2)
+fimuls (%ecx)
+fimull (%eax)
+
+fnop
+
+fpatan
+
+fprem
+fprem1
+
+fptan
+
+frndint
+
+frstor (%eax)
+
+fnsave (%eax)
+
+fscale
+
+fsin
+
+fsincos
+
+fsqrt
+
+fst %st(0)
+fsts (%edx)
+fstl (%ecx)
+fstp %st(0)
+fstpl (%edx)
+fstpl (%ecx)
+fstpt (%eax)
+
+fnstcw (%eax)
+fnstenv (%eax)
+fnstsw (%eax)
+
+frstor (%eax)
+fsave (%eax)
+
+fsub %st(0), %st(1)
+fsub %st(2)
+fsubs (%ecx)
+fsubl (%eax)
+fsubp %st(1)
+fsubp %st(2)
+fisubs (%ecx)
+fisubl (%eax)
+
+fsubr %st(0), %st(1)
+fsubr %st(2)
+fsubrs (%ecx)
+fsubrl (%eax)
+fsubrp %st(1)
+fsubrp %st(2)
+fisubrs (%ecx)
+fisubrl (%eax)
+
+ftst
+
+fucom %st(1)
+fucom %st(3)
+fucomp %st(1)
+fucomp %st(3)
+fucompp
+
+fucomi %st(3)
+fucompi %st(3)
+
+fwait
+
+fxam
+
+fxch %st(1)
+fxch %st(3)
+
+fxrstor (%eax)
+fxsave (%eax)
+
+fxtract
+
+fyl2x
+fyl2xp1
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      100   0.25                  * 	f2xm1
+# CHECK-NEXT:  1      1     1.00                  * 	fabs
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fadds	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	faddl	(%ecx)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fiadds	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fiaddl	(%ecx)
+# CHECK-NEXT:  1      100   0.25                  * 	fbld	(%ecx)
+# CHECK-NEXT:  2      1     1.00                  * 	fbstp	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fchs
+# CHECK-NEXT:  4      4     1.00                  * 	fnclex
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(3)
+# CHECK-NEXT:  2      8     1.00                  * 	fcoms	(%ecx)
+# CHECK-NEXT:  2      8     1.00                  * 	fcoml	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(3)
+# CHECK-NEXT:  2      8     1.00                  * 	fcomps	(%ecx)
+# CHECK-NEXT:  2      8     1.00                  * 	fcompl	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fcompp
+# CHECK-NEXT:  1      2     1.00                  * 	fcomi	%st(3)
+# CHECK-NEXT:  1      2     1.00                  * 	fcompi	%st(3)
+# CHECK-NEXT:  1      100   0.25                  * 	fcos
+# CHECK-NEXT:  2      2     1.00                  * 	fdecstp
+# CHECK-NEXT:  1      15    1.00                  * 	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  1      20    1.00                  * 	fdiv	%st(2)
+# CHECK-NEXT:  2      22    1.00    *             * 	fdivs	(%ecx)
+# CHECK-NEXT:  2      22    1.00    *             * 	fdivl	(%eax)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivp	%st(1)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivp	%st(2)
+# CHECK-NEXT:  3      25    1.00    *             * 	fidivs	(%ecx)
+# CHECK-NEXT:  3      25    1.00    *             * 	fidivl	(%eax)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivr	%st(2)
+# CHECK-NEXT:  2      27    1.00    *             * 	fdivrs	(%ecx)
+# CHECK-NEXT:  2      27    1.00    *             * 	fdivrl	(%eax)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivrp	%st(1)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivrp	%st(2)
+# CHECK-NEXT:  3      30    1.00    *             * 	fidivrs	(%ecx)
+# CHECK-NEXT:  3      30    1.00    *             * 	fidivrl	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	ffree	%st(0)
+# CHECK-NEXT:  3      11    2.00                  * 	ficoms	(%ecx)
+# CHECK-NEXT:  3      11    2.00                  * 	ficoml	(%eax)
+# CHECK-NEXT:  3      11    2.00                  * 	ficomps	(%ecx)
+# CHECK-NEXT:  3      11    2.00                  * 	ficompl	(%eax)
+# CHECK-NEXT:  2      10    1.00    *             * 	filds	(%edx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fildl	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fildll	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fincstp
+# CHECK-NEXT:  15     75    6.00                  * 	fninit
+# CHECK-NEXT:  3      4     1.00           *      * 	fists	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistps	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistpl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistpll	(%eax)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttps	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttpl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttpll	(%eax)
+# CHECK-NEXT:  1      1     0.25                  * 	fld	%st(0)
+# CHECK-NEXT:  1      7     0.50    *             * 	flds	(%edx)
+# CHECK-NEXT:  1      7     0.50    *             * 	fldl	(%ecx)
+# CHECK-NEXT:  1      7     0.50    *             * 	fldt	(%eax)
+# CHECK-NEXT:  3      7     1.00    *             * 	fldcw	(%eax)
+# CHECK-NEXT:  64     62    14.00                 * 	fldenv	(%eax)
+# CHECK-NEXT:  1      1      -                    * 	fld1
+# CHECK-NEXT:  1      100   0.25                  * 	fldl2e
+# CHECK-NEXT:  1      100   0.25                  * 	fldl2t
+# CHECK-NEXT:  1      100   0.25                  * 	fldlg2
+# CHECK-NEXT:  1      100   0.25                  * 	fldln2
+# CHECK-NEXT:  1      100   0.25                  * 	fldpi
+# CHECK-NEXT:  1      1      -                    * 	fldz
+# CHECK-NEXT:  1      4     1.00                  * 	fmul	%st(0), %st(1)
+# CHECK-NEXT:  1      4     1.00                  * 	fmul	%st(2)
+# CHECK-NEXT:  2      11    1.00    *             * 	fmuls	(%ecx)
+# CHECK-NEXT:  2      11    1.00    *             * 	fmull	(%eax)
+# CHECK-NEXT:  1      4     1.00                  * 	fmulp	%st(1)
+# CHECK-NEXT:  1      4     1.00                  * 	fmulp	%st(2)
+# CHECK-NEXT:  3      14    1.00    *             * 	fimuls	(%ecx)
+# CHECK-NEXT:  3      14    1.00    *             * 	fimull	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fnop
+# CHECK-NEXT:  1      100   0.25                  * 	fpatan
+# CHECK-NEXT:  1      100   0.25                  * 	fprem
+# CHECK-NEXT:  1      100   0.25                  * 	fprem1
+# CHECK-NEXT:  1      100   0.25                  * 	fptan
+# CHECK-NEXT:  1      100   0.25                  * 	frndint
+# CHECK-NEXT:  1      100   0.25                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fscale
+# CHECK-NEXT:  1      100   0.25                  * 	fsin
+# CHECK-NEXT:  1      100   0.25                  * 	fsincos
+# CHECK-NEXT:  1      15    1.00                  * 	fsqrt
+# CHECK-NEXT:  1      1     0.25                  * 	fst	%st(0)
+# CHECK-NEXT:  1      1     1.00           *      * 	fsts	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstl	(%ecx)
+# CHECK-NEXT:  1      1     0.25                  * 	fstp	%st(0)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpl	(%edx)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpl	(%ecx)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpt	(%eax)
+# CHECK-NEXT:  3      2     1.00           *      * 	fnstcw	(%eax)
+# CHECK-NEXT:  100    106   19.50                 * 	fnstenv	(%eax)
+# CHECK-NEXT:  3      3     1.00                  * 	fnstsw	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	frstor	(%eax)
+# CHECK-NEXT:  2      2     0.50                  * 	wait
+# CHECK-NEXT:  1      100   0.25                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubs	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubs	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubrs	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubrs	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubrl	(%eax)
+# CHECK-NEXT:  1      2     1.00                  * 	ftst
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(3)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(3)
+# CHECK-NEXT:  1      2     1.00                  * 	fucompp
+# CHECK-NEXT:  1      2     1.00                  * 	fucomi	%st(3)
+# CHECK-NEXT:  1      2     1.00                  * 	fucompi	%st(3)
+# CHECK-NEXT:  2      2     0.50                  * 	wait
+# CHECK-NEXT:  1      100   0.25                  * 	fxam
+# CHECK-NEXT:  15     17    4.00                  * 	fxch	%st(1)
+# CHECK-NEXT:  15     17    4.00                  * 	fxch	%st(3)
+# CHECK-NEXT:  90     63    16.50   *      *      * 	fxrstor	(%eax)
+# CHECK-NEXT:  1      100   0.25    *      *      * 	fxsave	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fxtract
+# CHECK-NEXT:  1      100   0.25                  * 	fyl2x
+# CHECK-NEXT:  1      100   0.25                  * 	fyl2xp1
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SKLDivider
+# CHECK-NEXT: [1] - SKLFPDivider
+# CHECK-NEXT: [2] - SKLPort0
+# CHECK-NEXT: [3] - SKLPort1
+# CHECK-NEXT: [4] - SKLPort2
+# CHECK-NEXT: [5] - SKLPort3
+# CHECK-NEXT: [6] - SKLPort4
+# CHECK-NEXT: [7] - SKLPort5
+# CHECK-NEXT: [8] - SKLPort6
+# CHECK-NEXT: [9] - SKLPort7
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
+# CHECK-NEXT:  -      -     121.50 53.50  49.00  49.00  27.00  144.50 70.50  9.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    	Instructions:
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	f2xm1
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fabs
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fadd	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fadd	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fadds	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	faddl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	faddp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	faddp	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fiadds	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fiaddl	(%ecx)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fbld	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fbstp	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fchs
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -     1.00   1.00    -     	fnclex
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fcom	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fcom	%st(3)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fcoms	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fcoml	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fcomp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fcomp	%st(3)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fcomps	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fcompl	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fcompp
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fcomi	%st(3)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fcompi	%st(3)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fcos
+# CHECK-NEXT:  -      -     1.00    -      -      -      -     1.00    -      -     	fdecstp
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdiv	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivp	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fidivs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fidivl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivr	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivrs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivrl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivrp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivrp	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fidivrs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fidivrl	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	ffree	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	ficoms	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	ficoml	(%eax)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	ficomps	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	ficompl	(%eax)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	filds	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fildl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fildll	(%eax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -     0.50    -      -     	fincstp
+# CHECK-NEXT:  -      -     3.00   1.50    -      -      -     9.00   1.50    -     	fninit
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fists	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fistl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fistps	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fistpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fistpll	(%eax)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fisttps	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fisttpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fisttpll	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fld	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	flds	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	fldl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	fldt	(%eax)
+# CHECK-NEXT:  -      -     1.50    -     0.50   0.50    -     0.50    -      -     	fldcw	(%eax)
+# CHECK-NEXT:  -      -     19.25  9.75   4.00   4.00    -     12.25  14.75   -     	fldenv	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fld1
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldl2e
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldl2t
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldlg2
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldln2
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldpi
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fldz
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmul	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmul	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fmuls	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fmull	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmulp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmulp	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fimuls	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fimull	(%eax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -     0.50    -      -     	fnop
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fpatan
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fprem
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fprem1
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fptan
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	frndint
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	frstor	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fscale
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fsin
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fsincos
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fsqrt
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fst	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fsts	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstl	(%ecx)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fstp	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpl	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpt	(%eax)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -     1.00   0.33   	fnstcw	(%eax)
+# CHECK-NEXT:  -      -     27.00  8.50   3.67   3.67   11.00  23.50  19.00  3.67   	fnstenv	(%eax)
+# CHECK-NEXT:  -      -     1.00    -     0.33   0.33   1.00    -      -     0.33   	fnstsw	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	frstor	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -     0.50   0.50    -     	wait
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsub	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsub	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fsubs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fsubl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubp	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fisubs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fisubl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubr	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fsubrs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fsubrl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubrp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubrp	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fisubrs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fisubrl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	ftst
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fucom	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fucom	%st(3)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fucomp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fucomp	%st(3)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fucompp
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fucomi	%st(3)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fucompi	%st(3)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -     0.50   0.50    -     	wait
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fxam
+# CHECK-NEXT:  -      -     4.00   2.00    -      -      -     4.00   5.00    -     	fxch	%st(1)
+# CHECK-NEXT:  -      -     4.00   2.00    -      -      -     4.00   5.00    -     	fxch	%st(3)
+# CHECK-NEXT:  -      -     17.25  12.25  16.50  16.50   -     12.75  14.75   -     	fxrstor	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fxsave	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fxtract
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fyl2x
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fyl2xp1
+

Added: llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s?rev=330499&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s Sat Apr 21 03:36:19 2018
@@ -0,0 +1,524 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=skylake-avx512 -instruction-tables < %s | FileCheck %s
+
+f2xm1
+
+fabs
+
+fadd %st(0), %st(1)
+fadd %st(2)
+fadds (%ecx)
+faddl (%ecx)
+faddp %st(1)
+faddp %st(2)
+fiadds (%ecx)
+fiaddl (%ecx)
+
+fbld (%ecx)
+fbstp (%eax)
+
+fchs
+
+fnclex
+
+fcmovb %st(1), %st(0)
+fcmovbe %st(1), %st(0)
+fcmove %st(1), %st(0)
+fcmovnb %st(1), %st(0)
+fcmovnbe %st(1), %st(0)
+fcmovne %st(1), %st(0)
+fcmovnu %st(1), %st(0)
+fcmovu %st(1), %st(0)
+
+fcom %st(1)
+fcom %st(3)
+fcoms (%ecx)
+fcoml (%eax)
+fcomp %st(1)
+fcomp %st(3)
+fcomps (%ecx)
+fcompl (%eax)
+fcompp
+
+fcomi %st(3)
+fcompi %st(3)
+
+fcos
+
+fdecstp
+
+fdiv %st(0), %st(1)
+fdiv %st(2)
+fdivs (%ecx)
+fdivl (%eax)
+fdivp %st(1)
+fdivp %st(2)
+fidivs (%ecx)
+fidivl (%eax)
+
+fdivr %st(0), %st(1)
+fdivr %st(2)
+fdivrs (%ecx)
+fdivrl (%eax)
+fdivrp %st(1)
+fdivrp %st(2)
+fidivrs (%ecx)
+fidivrl (%eax)
+
+ffree %st(0)
+
+ficoms (%ecx)
+ficoml (%eax)
+ficomps (%ecx)
+ficompl (%eax)
+
+filds (%edx)
+fildl (%ecx)
+fildll (%eax)
+
+fincstp
+
+fninit
+
+fists (%edx)
+fistl (%ecx)
+fistps (%edx)
+fistpl (%ecx)
+fistpll (%eax)
+
+fisttps (%edx)
+fisttpl (%ecx)
+fisttpll (%eax)
+
+fld %st(0)
+flds (%edx)
+fldl (%ecx)
+fldt (%eax)
+
+fldcw (%eax)
+fldenv (%eax)
+
+fld1
+fldl2e
+fldl2t
+fldlg2
+fldln2
+fldpi
+fldz
+
+fmul %st(0), %st(1)
+fmul %st(2)
+fmuls (%ecx)
+fmull (%eax)
+fmulp %st(1)
+fmulp %st(2)
+fimuls (%ecx)
+fimull (%eax)
+
+fnop
+
+fpatan
+
+fprem
+fprem1
+
+fptan
+
+frndint
+
+frstor (%eax)
+
+fnsave (%eax)
+
+fscale
+
+fsin
+
+fsincos
+
+fsqrt
+
+fst %st(0)
+fsts (%edx)
+fstl (%ecx)
+fstp %st(0)
+fstpl (%edx)
+fstpl (%ecx)
+fstpt (%eax)
+
+fnstcw (%eax)
+fnstenv (%eax)
+fnstsw (%eax)
+
+frstor (%eax)
+fsave (%eax)
+
+fsub %st(0), %st(1)
+fsub %st(2)
+fsubs (%ecx)
+fsubl (%eax)
+fsubp %st(1)
+fsubp %st(2)
+fisubs (%ecx)
+fisubl (%eax)
+
+fsubr %st(0), %st(1)
+fsubr %st(2)
+fsubrs (%ecx)
+fsubrl (%eax)
+fsubrp %st(1)
+fsubrp %st(2)
+fisubrs (%ecx)
+fisubrl (%eax)
+
+ftst
+
+fucom %st(1)
+fucom %st(3)
+fucomp %st(1)
+fucomp %st(3)
+fucompp
+
+fucomi %st(3)
+fucompi %st(3)
+
+fwait
+
+fxam
+
+fxch %st(1)
+fxch %st(3)
+
+fxrstor (%eax)
+fxsave (%eax)
+
+fxtract
+
+fyl2x
+fyl2xp1
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      100   0.25                  * 	f2xm1
+# CHECK-NEXT:  1      1     1.00                  * 	fabs
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fadds	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	faddl	(%ecx)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fiadds	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fiaddl	(%ecx)
+# CHECK-NEXT:  1      100   0.25                  * 	fbld	(%ecx)
+# CHECK-NEXT:  2      1     1.00                  * 	fbstp	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fchs
+# CHECK-NEXT:  4      4     1.00                  * 	fnclex
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  1      3     1.00                  * 	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(3)
+# CHECK-NEXT:  2      8     1.00                  * 	fcoms	(%ecx)
+# CHECK-NEXT:  2      8     1.00                  * 	fcoml	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(3)
+# CHECK-NEXT:  2      8     1.00                  * 	fcomps	(%ecx)
+# CHECK-NEXT:  2      8     1.00                  * 	fcompl	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fcompp
+# CHECK-NEXT:  1      2     1.00                  * 	fcomi	%st(3)
+# CHECK-NEXT:  1      2     1.00                  * 	fcompi	%st(3)
+# CHECK-NEXT:  1      100   0.25                  * 	fcos
+# CHECK-NEXT:  2      2     1.00                  * 	fdecstp
+# CHECK-NEXT:  1      15    1.00                  * 	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  1      20    1.00                  * 	fdiv	%st(2)
+# CHECK-NEXT:  2      22    1.00    *             * 	fdivs	(%ecx)
+# CHECK-NEXT:  2      22    1.00    *             * 	fdivl	(%eax)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivp	%st(1)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivp	%st(2)
+# CHECK-NEXT:  3      25    1.00    *             * 	fidivs	(%ecx)
+# CHECK-NEXT:  3      25    1.00    *             * 	fidivl	(%eax)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivr	%st(2)
+# CHECK-NEXT:  2      27    1.00    *             * 	fdivrs	(%ecx)
+# CHECK-NEXT:  2      27    1.00    *             * 	fdivrl	(%eax)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivrp	%st(1)
+# CHECK-NEXT:  1      20    1.00                  * 	fdivrp	%st(2)
+# CHECK-NEXT:  3      30    1.00    *             * 	fidivrs	(%ecx)
+# CHECK-NEXT:  3      30    1.00    *             * 	fidivrl	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	ffree	%st(0)
+# CHECK-NEXT:  3      11    2.00                  * 	ficoms	(%ecx)
+# CHECK-NEXT:  3      11    2.00                  * 	ficoml	(%eax)
+# CHECK-NEXT:  3      11    2.00                  * 	ficomps	(%ecx)
+# CHECK-NEXT:  3      11    2.00                  * 	ficompl	(%eax)
+# CHECK-NEXT:  2      10    1.00    *             * 	filds	(%edx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fildl	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fildll	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fincstp
+# CHECK-NEXT:  15     75    6.00                  * 	fninit
+# CHECK-NEXT:  3      4     1.00           *      * 	fists	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistps	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistpl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fistpll	(%eax)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttps	(%edx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttpl	(%ecx)
+# CHECK-NEXT:  3      4     1.00           *      * 	fisttpll	(%eax)
+# CHECK-NEXT:  1      1     0.25                  * 	fld	%st(0)
+# CHECK-NEXT:  1      7     0.50    *             * 	flds	(%edx)
+# CHECK-NEXT:  1      7     0.50    *             * 	fldl	(%ecx)
+# CHECK-NEXT:  1      7     0.50    *             * 	fldt	(%eax)
+# CHECK-NEXT:  3      7     1.00    *             * 	fldcw	(%eax)
+# CHECK-NEXT:  64     62    14.00                 * 	fldenv	(%eax)
+# CHECK-NEXT:  1      1      -                    * 	fld1
+# CHECK-NEXT:  1      100   0.25                  * 	fldl2e
+# CHECK-NEXT:  1      100   0.25                  * 	fldl2t
+# CHECK-NEXT:  1      100   0.25                  * 	fldlg2
+# CHECK-NEXT:  1      100   0.25                  * 	fldln2
+# CHECK-NEXT:  1      100   0.25                  * 	fldpi
+# CHECK-NEXT:  1      1      -                    * 	fldz
+# CHECK-NEXT:  1      4     1.00                  * 	fmul	%st(0), %st(1)
+# CHECK-NEXT:  1      4     1.00                  * 	fmul	%st(2)
+# CHECK-NEXT:  2      11    1.00    *             * 	fmuls	(%ecx)
+# CHECK-NEXT:  2      11    1.00    *             * 	fmull	(%eax)
+# CHECK-NEXT:  1      4     1.00                  * 	fmulp	%st(1)
+# CHECK-NEXT:  1      4     1.00                  * 	fmulp	%st(2)
+# CHECK-NEXT:  3      14    1.00    *             * 	fimuls	(%ecx)
+# CHECK-NEXT:  3      14    1.00    *             * 	fimull	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fnop
+# CHECK-NEXT:  1      100   0.25                  * 	fpatan
+# CHECK-NEXT:  1      100   0.25                  * 	fprem
+# CHECK-NEXT:  1      100   0.25                  * 	fprem1
+# CHECK-NEXT:  1      100   0.25                  * 	fptan
+# CHECK-NEXT:  1      100   0.25                  * 	frndint
+# CHECK-NEXT:  1      100   0.25                  * 	frstor	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fscale
+# CHECK-NEXT:  1      100   0.25                  * 	fsin
+# CHECK-NEXT:  1      100   0.25                  * 	fsincos
+# CHECK-NEXT:  1      15    1.00                  * 	fsqrt
+# CHECK-NEXT:  1      1     0.25                  * 	fst	%st(0)
+# CHECK-NEXT:  1      1     1.00           *      * 	fsts	(%edx)
+# CHECK-NEXT:  1      1     1.00           *      * 	fstl	(%ecx)
+# CHECK-NEXT:  1      1     0.25                  * 	fstp	%st(0)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpl	(%edx)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpl	(%ecx)
+# CHECK-NEXT:  2      1     1.00           *      * 	fstpt	(%eax)
+# CHECK-NEXT:  3      2     1.00           *      * 	fnstcw	(%eax)
+# CHECK-NEXT:  100    106   19.50                 * 	fnstenv	(%eax)
+# CHECK-NEXT:  3      3     1.00                  * 	fnstsw	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	frstor	(%eax)
+# CHECK-NEXT:  2      2     0.50                  * 	wait
+# CHECK-NEXT:  1      100   0.25                  * 	fnsave	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubs	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubs	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(2)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubrs	(%ecx)
+# CHECK-NEXT:  2      10    1.00    *             * 	fsubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(2)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubrs	(%ecx)
+# CHECK-NEXT:  3      13    2.00    *             * 	fisubrl	(%eax)
+# CHECK-NEXT:  1      2     1.00                  * 	ftst
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(3)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(3)
+# CHECK-NEXT:  1      2     1.00                  * 	fucompp
+# CHECK-NEXT:  1      2     1.00                  * 	fucomi	%st(3)
+# CHECK-NEXT:  1      2     1.00                  * 	fucompi	%st(3)
+# CHECK-NEXT:  2      2     0.50                  * 	wait
+# CHECK-NEXT:  1      100   0.25                  * 	fxam
+# CHECK-NEXT:  15     17    4.00                  * 	fxch	%st(1)
+# CHECK-NEXT:  15     17    4.00                  * 	fxch	%st(3)
+# CHECK-NEXT:  90     63    16.50   *      *      * 	fxrstor	(%eax)
+# CHECK-NEXT:  1      100   0.25    *      *      * 	fxsave	(%eax)
+# CHECK-NEXT:  1      100   0.25                  * 	fxtract
+# CHECK-NEXT:  1      100   0.25                  * 	fyl2x
+# CHECK-NEXT:  1      100   0.25                  * 	fyl2xp1
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - SKXDivider
+# CHECK-NEXT: [1] - SKXFPDivider
+# CHECK-NEXT: [2] - SKXPort0
+# CHECK-NEXT: [3] - SKXPort1
+# CHECK-NEXT: [4] - SKXPort2
+# CHECK-NEXT: [5] - SKXPort3
+# CHECK-NEXT: [6] - SKXPort4
+# CHECK-NEXT: [7] - SKXPort5
+# CHECK-NEXT: [8] - SKXPort6
+# CHECK-NEXT: [9] - SKXPort7
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
+# CHECK-NEXT:  -      -     121.50 53.50  49.00  49.00  27.00  144.50 70.50  9.00
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    	Instructions:
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	f2xm1
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fabs
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fadd	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fadd	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fadds	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	faddl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	faddp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	faddp	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fiadds	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fiaddl	(%ecx)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fbld	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fbstp	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fchs
+# CHECK-NEXT:  -      -     1.00   1.00    -      -      -     1.00   1.00    -     	fnclex
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fcom	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fcom	%st(3)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fcoms	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fcoml	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fcomp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fcomp	%st(3)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fcomps	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fcompl	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fcompp
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fcomi	%st(3)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fcompi	%st(3)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fcos
+# CHECK-NEXT:  -      -     1.00    -      -      -      -     1.00    -      -     	fdecstp
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdiv	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivp	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fidivs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fidivl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivr	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivrs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fdivrl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivrp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fdivrp	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fidivrs	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fidivrl	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	ffree	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	ficoms	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	ficoml	(%eax)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	ficomps	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	ficompl	(%eax)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	filds	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fildl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fildll	(%eax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -     0.50    -      -     	fincstp
+# CHECK-NEXT:  -      -     3.00   1.50    -      -      -     9.00   1.50    -     	fninit
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fists	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fistl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fistps	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fistpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fistpll	(%eax)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fisttps	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fisttpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00   1.00    -     0.33   	fisttpll	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fld	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	flds	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	fldl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -      -      -      -     	fldt	(%eax)
+# CHECK-NEXT:  -      -     1.50    -     0.50   0.50    -     0.50    -      -     	fldcw	(%eax)
+# CHECK-NEXT:  -      -     19.25  9.75   4.00   4.00    -     12.25  14.75   -     	fldenv	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fld1
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldl2e
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldl2t
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldlg2
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldln2
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fldpi
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     	fldz
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmul	%st(0), %st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmul	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fmuls	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -      -      -      -     	fmull	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmulp	%st(1)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fmulp	%st(2)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fimuls	(%ecx)
+# CHECK-NEXT:  -      -     1.00    -     0.50   0.50    -     1.00    -      -     	fimull	(%eax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -     0.50    -      -     	fnop
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fpatan
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fprem
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fprem1
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fptan
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	frndint
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	frstor	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fscale
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fsin
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fsincos
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fsqrt
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fst	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fsts	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstl	(%ecx)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fstp	%st(0)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpl	(%edx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpl	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -      -     0.33   	fstpt	(%eax)
+# CHECK-NEXT:  -      -      -      -     0.33   0.33   1.00    -     1.00   0.33   	fnstcw	(%eax)
+# CHECK-NEXT:  -      -     27.00  8.50   3.67   3.67   11.00  23.50  19.00  3.67   	fnstenv	(%eax)
+# CHECK-NEXT:  -      -     1.00    -     0.33   0.33   1.00    -      -     0.33   	fnstsw	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	frstor	(%eax)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -     0.50   0.50    -     	wait
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsub	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsub	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fsubs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fsubl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubp	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fisubs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fisubl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubr	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fsubrs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     	fsubrl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubrp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fsubrp	%st(2)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fisubrs	(%ecx)
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     2.00    -      -     	fisubrl	(%eax)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	ftst
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fucom	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fucom	%st(3)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fucomp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     	fucomp	%st(3)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fucompp
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fucomi	%st(3)
+# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     	fucompi	%st(3)
+# CHECK-NEXT:  -      -     0.50   0.50    -      -      -     0.50   0.50    -     	wait
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fxam
+# CHECK-NEXT:  -      -     4.00   2.00    -      -      -     4.00   5.00    -     	fxch	%st(1)
+# CHECK-NEXT:  -      -     4.00   2.00    -      -      -     4.00   5.00    -     	fxch	%st(3)
+# CHECK-NEXT:  -      -     17.25  12.25  16.50  16.50   -     12.75  14.75   -     	fxrstor	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fxsave	(%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fxtract
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fyl2x
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     	fyl2xp1
+

Added: llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x87.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x87.s?rev=330499&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x87.s (added)
+++ llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x87.s Sat Apr 21 03:36:19 2018
@@ -0,0 +1,526 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver1 -instruction-tables < %s | FileCheck %s
+
+f2xm1
+
+fabs
+
+fadd %st(0), %st(1)
+fadd %st(2)
+fadds (%ecx)
+faddl (%ecx)
+faddp %st(1)
+faddp %st(2)
+fiadds (%ecx)
+fiaddl (%ecx)
+
+fbld (%ecx)
+fbstp (%eax)
+
+fchs
+
+fnclex
+
+fcmovb %st(1), %st(0)
+fcmovbe %st(1), %st(0)
+fcmove %st(1), %st(0)
+fcmovnb %st(1), %st(0)
+fcmovnbe %st(1), %st(0)
+fcmovne %st(1), %st(0)
+fcmovnu %st(1), %st(0)
+fcmovu %st(1), %st(0)
+
+fcom %st(1)
+fcom %st(3)
+fcoms (%ecx)
+fcoml (%eax)
+fcomp %st(1)
+fcomp %st(3)
+fcomps (%ecx)
+fcompl (%eax)
+fcompp
+
+fcomi %st(3)
+fcompi %st(3)
+
+fcos
+
+fdecstp
+
+fdiv %st(0), %st(1)
+fdiv %st(2)
+fdivs (%ecx)
+fdivl (%eax)
+fdivp %st(1)
+fdivp %st(2)
+fidivs (%ecx)
+fidivl (%eax)
+
+fdivr %st(0), %st(1)
+fdivr %st(2)
+fdivrs (%ecx)
+fdivrl (%eax)
+fdivrp %st(1)
+fdivrp %st(2)
+fidivrs (%ecx)
+fidivrl (%eax)
+
+ffree %st(0)
+
+ficoms (%ecx)
+ficoml (%eax)
+ficomps (%ecx)
+ficompl (%eax)
+
+filds (%edx)
+fildl (%ecx)
+fildll (%eax)
+
+fincstp
+
+fninit
+
+fists (%edx)
+fistl (%ecx)
+fistps (%edx)
+fistpl (%ecx)
+fistpll (%eax)
+
+fisttps (%edx)
+fisttpl (%ecx)
+fisttpll (%eax)
+
+fld %st(0)
+flds (%edx)
+fldl (%ecx)
+fldt (%eax)
+
+fldcw (%eax)
+fldenv (%eax)
+
+fld1
+fldl2e
+fldl2t
+fldlg2
+fldln2
+fldpi
+fldz
+
+fmul %st(0), %st(1)
+fmul %st(2)
+fmuls (%ecx)
+fmull (%eax)
+fmulp %st(1)
+fmulp %st(2)
+fimuls (%ecx)
+fimull (%eax)
+
+fnop
+
+fpatan
+
+fprem
+fprem1
+
+fptan
+
+frndint
+
+frstor (%eax)
+
+fnsave (%eax)
+
+fscale
+
+fsin
+
+fsincos
+
+fsqrt
+
+fst %st(0)
+fsts (%edx)
+fstl (%ecx)
+fstp %st(0)
+fstpl (%edx)
+fstpl (%ecx)
+fstpt (%eax)
+
+fnstcw (%eax)
+fnstenv (%eax)
+fnstsw (%eax)
+
+frstor (%eax)
+fsave (%eax)
+
+fsub %st(0), %st(1)
+fsub %st(2)
+fsubs (%ecx)
+fsubl (%eax)
+fsubp %st(1)
+fsubp %st(2)
+fisubs (%ecx)
+fisubl (%eax)
+
+fsubr %st(0), %st(1)
+fsubr %st(2)
+fsubrs (%ecx)
+fsubrl (%eax)
+fsubrp %st(1)
+fsubrp %st(2)
+fisubrs (%ecx)
+fisubrl (%eax)
+
+ftst
+
+fucom %st(1)
+fucom %st(3)
+fucomp %st(1)
+fucomp %st(3)
+fucompp
+
+fucomi %st(3)
+fucompi %st(3)
+
+fwait
+
+fxam
+
+fxch %st(1)
+fxch %st(3)
+
+fxrstor (%eax)
+fxsave (%eax)
+
+fxtract
+
+fyl2x
+fyl2xp1
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      100    -                    * 	f2xm1
+# CHECK-NEXT:  1      2     1.00                  * 	fabs
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fadd	%st(2)
+# CHECK-NEXT:  1      10    1.00    *             * 	fadds	(%ecx)
+# CHECK-NEXT:  1      10    1.00    *             * 	faddl	(%ecx)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	faddp	%st(2)
+# CHECK-NEXT:  1      10    1.00    *             * 	fiadds	(%ecx)
+# CHECK-NEXT:  1      10    1.00    *             * 	fiaddl	(%ecx)
+# CHECK-NEXT:  1      100    -                    * 	fbld	(%ecx)
+# CHECK-NEXT:  1      100    -                    * 	fbstp	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fchs
+# CHECK-NEXT:  1      100    -                    * 	fnclex
+# CHECK-NEXT:  1      100    -                    * 	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  1      100    -                    * 	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  1      100    -                    * 	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  1      100    -                    * 	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  1      100    -                    * 	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  1      100    -                    * 	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  1      100    -                    * 	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  1      100    -                    * 	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcom	%st(3)
+# CHECK-NEXT:  1      8     1.00                  * 	fcoms	(%ecx)
+# CHECK-NEXT:  1      8     1.00                  * 	fcoml	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fcomp	%st(3)
+# CHECK-NEXT:  1      8     1.00                  * 	fcomps	(%ecx)
+# CHECK-NEXT:  1      8     1.00                  * 	fcompl	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fcompp
+# CHECK-NEXT:  1      9     0.50                  * 	fcomi	%st(3)
+# CHECK-NEXT:  1      9     0.50                  * 	fcompi	%st(3)
+# CHECK-NEXT:  1      100    -                    * 	fcos
+# CHECK-NEXT:  1      11    1.00                  * 	fdecstp
+# CHECK-NEXT:  1      15    1.00                  * 	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  1      15    1.00                  * 	fdiv	%st(2)
+# CHECK-NEXT:  1      22    1.00    *             * 	fdivs	(%ecx)
+# CHECK-NEXT:  1      22    1.00    *             * 	fdivl	(%eax)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivp	%st(1)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivp	%st(2)
+# CHECK-NEXT:  1      22    1.00    *             * 	fidivs	(%ecx)
+# CHECK-NEXT:  1      22    1.00    *             * 	fidivl	(%eax)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivr	%st(2)
+# CHECK-NEXT:  1      22    1.00    *             * 	fdivrs	(%ecx)
+# CHECK-NEXT:  1      22    1.00    *             * 	fdivrl	(%eax)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivrp	%st(1)
+# CHECK-NEXT:  1      15    1.00                  * 	fdivrp	%st(2)
+# CHECK-NEXT:  1      22    1.00    *             * 	fidivrs	(%ecx)
+# CHECK-NEXT:  1      22    1.00    *             * 	fidivrl	(%eax)
+# CHECK-NEXT:  1      11    1.00                  * 	ffree	%st(0)
+# CHECK-NEXT:  2      12    1.50                  * 	ficoms	(%ecx)
+# CHECK-NEXT:  2      12    1.50                  * 	ficoml	(%eax)
+# CHECK-NEXT:  2      12    1.50                  * 	ficomps	(%ecx)
+# CHECK-NEXT:  2      12    1.50                  * 	ficompl	(%eax)
+# CHECK-NEXT:  2      11    1.00    *             * 	filds	(%edx)
+# CHECK-NEXT:  2      11    1.00    *             * 	fildl	(%ecx)
+# CHECK-NEXT:  2      11    1.00    *             * 	fildll	(%eax)
+# CHECK-NEXT:  1      11    1.00                  * 	fincstp
+# CHECK-NEXT:  1      100    -                    * 	fninit
+# CHECK-NEXT:  1      12    0.50           *      * 	fists	(%edx)
+# CHECK-NEXT:  1      12    0.50           *      * 	fistl	(%ecx)
+# CHECK-NEXT:  1      12    0.50           *      * 	fistps	(%edx)
+# CHECK-NEXT:  1      12    0.50           *      * 	fistpl	(%ecx)
+# CHECK-NEXT:  1      12    0.50           *      * 	fistpll	(%eax)
+# CHECK-NEXT:  1      12    0.50           *      * 	fisttps	(%edx)
+# CHECK-NEXT:  1      12    0.50           *      * 	fisttpl	(%ecx)
+# CHECK-NEXT:  1      12    0.50           *      * 	fisttpll	(%eax)
+# CHECK-NEXT:  1      1     0.50                  * 	fld	%st(0)
+# CHECK-NEXT:  1      8     0.50    *             * 	flds	(%edx)
+# CHECK-NEXT:  1      8     0.50    *             * 	fldl	(%ecx)
+# CHECK-NEXT:  2      1     0.50    *             * 	fldt	(%eax)
+# CHECK-NEXT:  1      100    -      *             * 	fldcw	(%eax)
+# CHECK-NEXT:  1      100    -                    * 	fldenv	(%eax)
+# CHECK-NEXT:  1      11    1.00                  * 	fld1
+# CHECK-NEXT:  1      11    1.00                  * 	fldl2e
+# CHECK-NEXT:  1      11    1.00                  * 	fldl2t
+# CHECK-NEXT:  1      11    1.00                  * 	fldlg2
+# CHECK-NEXT:  1      11    1.00                  * 	fldln2
+# CHECK-NEXT:  1      11    1.00                  * 	fldpi
+# CHECK-NEXT:  1      8     0.50                  * 	fldz
+# CHECK-NEXT:  1      5     1.00                  * 	fmul	%st(0), %st(1)
+# CHECK-NEXT:  1      5     1.00                  * 	fmul	%st(2)
+# CHECK-NEXT:  1      12    1.00    *             * 	fmuls	(%ecx)
+# CHECK-NEXT:  1      12    1.00    *             * 	fmull	(%eax)
+# CHECK-NEXT:  1      5     1.00                  * 	fmulp	%st(1)
+# CHECK-NEXT:  1      5     1.00                  * 	fmulp	%st(2)
+# CHECK-NEXT:  1      12    1.00    *             * 	fimuls	(%ecx)
+# CHECK-NEXT:  1      12    1.00    *             * 	fimull	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	fnop
+# CHECK-NEXT:  1      100    -                    * 	fpatan
+# CHECK-NEXT:  1      100    -                    * 	fprem
+# CHECK-NEXT:  1      100    -                    * 	fprem1
+# CHECK-NEXT:  1      100    -                    * 	fptan
+# CHECK-NEXT:  1      100    -                    * 	frndint
+# CHECK-NEXT:  1      100    -                    * 	frstor	(%eax)
+# CHECK-NEXT:  1      100    -                    * 	fnsave	(%eax)
+# CHECK-NEXT:  1      100    -                    * 	fscale
+# CHECK-NEXT:  1      100    -                    * 	fsin
+# CHECK-NEXT:  1      100    -                    * 	fsincos
+# CHECK-NEXT:  1      20    1.00                  * 	fsqrt
+# CHECK-NEXT:  2      5     0.50                  * 	fst	%st(0)
+# CHECK-NEXT:  1      1     0.50           *      * 	fsts	(%edx)
+# CHECK-NEXT:  1      1     0.50           *      * 	fstl	(%ecx)
+# CHECK-NEXT:  2      5     0.50                  * 	fstp	%st(0)
+# CHECK-NEXT:  1      1     0.50           *      * 	fstpl	(%edx)
+# CHECK-NEXT:  1      1     0.50           *      * 	fstpl	(%ecx)
+# CHECK-NEXT:  1      5     0.50           *      * 	fstpt	(%eax)
+# CHECK-NEXT:  1      100    -             *      * 	fnstcw	(%eax)
+# CHECK-NEXT:  1      100    -                    * 	fnstenv	(%eax)
+# CHECK-NEXT:  1      100    -                    * 	fnstsw	(%eax)
+# CHECK-NEXT:  1      100    -                    * 	frstor	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	wait
+# CHECK-NEXT:  1      100    -                    * 	fnsave	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsub	%st(2)
+# CHECK-NEXT:  1      10    1.00    *             * 	fsubs	(%ecx)
+# CHECK-NEXT:  1      10    1.00    *             * 	fsubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubp	%st(2)
+# CHECK-NEXT:  1      10    1.00    *             * 	fisubs	(%ecx)
+# CHECK-NEXT:  1      10    1.00    *             * 	fisubl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubr	%st(2)
+# CHECK-NEXT:  1      10    1.00    *             * 	fsubrs	(%ecx)
+# CHECK-NEXT:  1      10    1.00    *             * 	fsubrl	(%eax)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(1)
+# CHECK-NEXT:  1      3     1.00                  * 	fsubrp	%st(2)
+# CHECK-NEXT:  1      10    1.00    *             * 	fisubrs	(%ecx)
+# CHECK-NEXT:  1      10    1.00    *             * 	fisubrl	(%eax)
+# CHECK-NEXT:  1      1     1.00                  * 	ftst
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucom	%st(3)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(1)
+# CHECK-NEXT:  1      1     1.00                  * 	fucomp	%st(3)
+# CHECK-NEXT:  1      1     1.00                  * 	fucompp
+# CHECK-NEXT:  1      9     0.50                  * 	fucomi	%st(3)
+# CHECK-NEXT:  1      9     0.50                  * 	fucompi	%st(3)
+# CHECK-NEXT:  1      1     1.00                  * 	wait
+# CHECK-NEXT:  1      1     1.00                  * 	fxam
+# CHECK-NEXT:  1      1     0.25                  * 	fxch	%st(1)
+# CHECK-NEXT:  1      1     0.25                  * 	fxch	%st(3)
+# CHECK-NEXT:  1      100    -      *      *      * 	fxrstor	(%eax)
+# CHECK-NEXT:  1      100    -      *      *      * 	fxsave	(%eax)
+# CHECK-NEXT:  1      100    -                    * 	fxtract
+# CHECK-NEXT:  1      100    -                    * 	fyl2x
+# CHECK-NEXT:  1      100    -                    * 	fyl2xp1
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0] - ZnAGU0
+# CHECK-NEXT: [1] - ZnAGU1
+# CHECK-NEXT: [2] - ZnALU0
+# CHECK-NEXT: [3] - ZnALU1
+# CHECK-NEXT: [4] - ZnALU2
+# CHECK-NEXT: [5] - ZnALU3
+# CHECK-NEXT: [6] - ZnDivider
+# CHECK-NEXT: [7] - ZnFPU0
+# CHECK-NEXT: [8] - ZnFPU1
+# CHECK-NEXT: [9] - ZnFPU2
+# CHECK-NEXT: [10] - ZnFPU3
+# CHECK-NEXT: [11] - ZnMultiplier
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
+# CHECK-NEXT: 32.50  32.50   -      -      -      -      -     58.50  2.00   8.00   45.50   -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   	Instructions:
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	f2xm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fabs
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fadd	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fadd	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fadds	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	faddl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	faddp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	faddp	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fiadds	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fiaddl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fbld	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fbstp	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fchs
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fnclex
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fcmovb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fcmovbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fcmove	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fcmovnb	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fcmovnbe	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fcmovne	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fcmovnu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fcmovu	%st(1), %st(0)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fcom	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fcom	%st(3)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fcoms	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fcoml	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fcomp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fcomp	%st(3)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fcomps	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fcompl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fcompp
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     0.50    -     0.50    -      -     	fcomi	%st(3)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     0.50    -     0.50    -      -     	fcompi	%st(3)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fcos
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fdecstp
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fdiv	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fdiv	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fdivs	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fdivl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fdivp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fdivp	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fidivs	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fidivl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fdivr	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fdivr	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fdivrs	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fdivrl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fdivrp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fdivrp	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fidivrs	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fidivrl	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	ffree	%st(0)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.50    -      -     1.50    -     	ficoms	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.50    -      -     1.50    -     	ficoml	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.50    -      -     1.50    -     	ficomps	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.50    -      -     1.50    -     	ficompl	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	filds	(%edx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fildl	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fildll	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fincstp
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fninit
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     	fists	(%edx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     	fistl	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     	fistps	(%edx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     	fistpl	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     	fistpll	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     	fisttps	(%edx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     	fisttpl	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     	fisttpll	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50    -     0.50    -     	fld	%st(0)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -     	flds	(%edx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -     	fldl	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -     0.50    -     0.50    -     	fldt	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fldcw	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fldenv	(%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fld1
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fldl2e
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fldl2t
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fldlg2
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fldln2
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -     1.00    -     	fldpi
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -     0.50    -     0.50    -     	fldz
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fmul	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fmul	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fmuls	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fmull	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fmulp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fmulp	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fimuls	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fimull	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fnop
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fpatan
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fprem
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fprem1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fptan
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	frndint
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	frstor	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fscale
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fsin
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fsincos
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fsqrt
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     0.50   0.50    -     	fst	%st(0)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -     	fsts	(%edx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -     	fstl	(%ecx)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     0.50   0.50    -     	fstp	%st(0)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -     	fstpl	(%edx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -     	fstpl	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     	fstpt	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fnstcw	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fnstenv	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fnstsw	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	frstor	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	wait
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fnsave	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fsub	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fsub	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fsubs	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fsubl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fsubp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fsubp	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fisubs	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fisubl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fsubr	%st(0), %st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fsubr	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fsubrs	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fsubrl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fsubrp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fsubrp	%st(2)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fisubrs	(%ecx)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -      -      -      -     	fisubrl	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	ftst
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fucom	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fucom	%st(3)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fucomp	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fucomp	%st(3)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	fucompp
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     0.50    -     0.50    -      -     	fucomi	%st(3)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     0.50    -     0.50    -      -     	fucompi	%st(3)
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     	wait
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00    -     	fxam
+# CHECK-NEXT:  -      -      -      -      -      -      -     0.25   0.25   0.25   0.25    -     	fxch	%st(1)
+# CHECK-NEXT:  -      -      -      -      -      -      -     0.25   0.25   0.25   0.25    -     	fxch	%st(3)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fxrstor	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fxsave	(%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fxtract
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fyl2x
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     	fyl2xp1
+




More information about the llvm-commits mailing list