Index: llvm/trunk/include/llvm/IR/IntrinsicsX86.td =================================================================== --- llvm/trunk/include/llvm/IR/IntrinsicsX86.td +++ llvm/trunk/include/llvm/IR/IntrinsicsX86.td @@ -277,9 +277,17 @@ // Control register. let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". def int_x86_sse_stmxcsr : - Intrinsic<[], [llvm_ptr_ty], []>; + Intrinsic<[], [llvm_ptr_ty], + [IntrWriteMem, IntrArgMemOnly, + // This prevents reordering with ldmxcsr + IntrHasSideEffects]>; def int_x86_sse_ldmxcsr : - Intrinsic<[], [llvm_ptr_ty], []>; + Intrinsic<[], [llvm_ptr_ty], + [IntrReadMem, IntrArgMemOnly, IntrHasSideEffects, + // FIXME: LDMXCSR does not actualy write to memory, + // but Fast and DAG Isel both use writing to memory + // as a proxy for having side effects. + IntrWriteMem]>; } // Misc. Index: llvm/trunk/lib/Target/X86/X86InstrSSE.td =================================================================== --- llvm/trunk/lib/Target/X86/X86InstrSSE.td +++ llvm/trunk/lib/Target/X86/X86InstrSSE.td @@ -3174,16 +3174,20 @@ // SSE 1 & 2 - Load/Store XCSR register //===----------------------------------------------------------------------===// +let mayLoad=1, hasSideEffects=1 in def VLDMXCSR : VPSI<0xAE, MRM2m, (outs), (ins i32mem:$src), "ldmxcsr\t$src", [(int_x86_sse_ldmxcsr addr:$src)]>, VEX, Sched<[WriteLDMXCSR]>, VEX_WIG; +let mayStore=1, hasSideEffects=1 in def VSTMXCSR : VPSI<0xAE, MRM3m, (outs), (ins i32mem:$dst), "stmxcsr\t$dst", [(int_x86_sse_stmxcsr addr:$dst)]>, VEX, Sched<[WriteSTMXCSR]>, VEX_WIG; +let mayLoad=1, hasSideEffects=1 in def LDMXCSR : I<0xAE, MRM2m, (outs), (ins i32mem:$src), "ldmxcsr\t$src", [(int_x86_sse_ldmxcsr addr:$src)]>, TB, Sched<[WriteLDMXCSR]>; +let mayStore=1, hasSideEffects=1 in def STMXCSR : I<0xAE, MRM3m, (outs), (ins i32mem:$dst), "stmxcsr\t$dst", [(int_x86_sse_stmxcsr addr:$dst)]>, TB, Sched<[WriteSTMXCSR]>; Index: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 1 70 35.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 34 17.00 divss %xmm0, %xmm2 # CHECK-NEXT: 1 34 17.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 1 5 2.50 * * U ldmxcsr (%rax) +# CHECK-NEXT: 1 5 2.50 * U ldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 5 5.00 maxps %xmm0, %xmm2 # CHECK-NEXT: 1 5 5.00 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 1 70 35.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 34 17.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 1 34 17.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 1 15 7.50 * * U stmxcsr (%rax) +# CHECK-NEXT: 1 15 7.50 * U stmxcsr (%rax) # CHECK-NEXT: 1 5 5.00 subps %xmm0, %xmm2 # CHECK-NEXT: 1 5 5.00 * subps (%rax), %xmm2 # CHECK-NEXT: 1 5 5.00 subss %xmm0, %xmm2 Index: llvm/trunk/test/tools/llvm-mca/X86/BdVer2/pr37790.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BdVer2/pr37790.s +++ llvm/trunk/test/tools/llvm-mca/X86/BdVer2/pr37790.s @@ -24,7 +24,7 @@ # CHECK: [1] [2] [3] [4] [5] [6] Instructions: # CHECK-NEXT: 1 100 0.50 * * U int3 -# CHECK-NEXT: 2 1 18.00 * * U stmxcsr (%rsp) +# CHECK-NEXT: 2 1 18.00 * U stmxcsr (%rsp) # CHECK: Timeline view: # CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 @@ -40,5 +40,5 @@ # CHECK-NEXT: [3]: Average time elapsed from WB until retire stage # CHECK: [0] [1] [2] [3] -# CHECK-NEXT: 0. 2 1.0 0.5 0.0 int3 -# CHECK-NEXT: 1. 2 100.5 0.0 0.0 stmxcsr (%rsp) +# CHECK-NEXT: 0. 2 51.5 0.5 0.0 int3 +# CHECK-NEXT: 1. 2 151.0 0.0 0.0 stmxcsr (%rsp) Index: llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s @@ -1218,7 +1218,7 @@ # CHECK-NEXT: 1 7 1.50 * vinsertps $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 5 1.50 * vlddqu (%rax), %xmm2 # CHECK-NEXT: 2 5 1.50 * vlddqu (%rax), %ymm2 -# CHECK-NEXT: 1 5 0.50 * * U vldmxcsr (%rax) +# CHECK-NEXT: 1 5 0.50 * U vldmxcsr (%rax) # CHECK-NEXT: 1 1 1.50 * * U vmaskmovdqu %xmm0, %xmm1 # CHECK-NEXT: 1 6 2.00 * vmaskmovpd (%rax), %xmm0, %xmm2 # CHECK-NEXT: 2 6 2.00 * vmaskmovpd (%rax), %ymm0, %ymm2 @@ -1670,7 +1670,7 @@ # CHECK-NEXT: 1 14 4.50 * vsqrtsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 9 4.50 vsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 1 14 4.50 * vsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 2 1 18.00 * * U vstmxcsr (%rax) +# CHECK-NEXT: 2 1 18.00 * U vstmxcsr (%rax) # CHECK-NEXT: 1 5 1.00 vsubpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 1 10 1.50 * vsubpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 2 5 1.00 vsubpd %ymm0, %ymm1, %ymm2 Index: llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 1 14 4.50 * divps (%rax), %xmm2 # CHECK-NEXT: 1 9 4.50 divss %xmm0, %xmm2 # CHECK-NEXT: 1 14 4.50 * divss (%rax), %xmm2 -# CHECK-NEXT: 1 5 0.50 * * U ldmxcsr (%rax) +# CHECK-NEXT: 1 5 0.50 * U ldmxcsr (%rax) # CHECK-NEXT: 1 2 1.00 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 2 1.00 maxps %xmm0, %xmm2 # CHECK-NEXT: 1 7 1.50 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 1 14 4.50 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 9 4.50 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 1 14 4.50 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 2 1 18.00 * * U stmxcsr (%rax) +# CHECK-NEXT: 2 1 18.00 * U stmxcsr (%rax) # CHECK-NEXT: 1 5 1.00 subps %xmm0, %xmm2 # CHECK-NEXT: 1 10 1.50 * subps (%rax), %xmm2 # CHECK-NEXT: 1 5 1.00 subss %xmm0, %xmm2 Index: llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-avx1.s @@ -1218,7 +1218,7 @@ # CHECK-NEXT: 2 6 1.00 * vinsertps $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 5 0.50 * vlddqu (%rax), %xmm2 # CHECK-NEXT: 1 6 0.50 * vlddqu (%rax), %ymm2 -# CHECK-NEXT: 3 7 1.00 * * U vldmxcsr (%rax) +# CHECK-NEXT: 3 7 1.00 * U vldmxcsr (%rax) # CHECK-NEXT: 2 1 1.00 * * U vmaskmovdqu %xmm0, %xmm1 # CHECK-NEXT: 3 7 2.00 * vmaskmovpd (%rax), %xmm0, %xmm2 # CHECK-NEXT: 3 8 2.00 * vmaskmovpd (%rax), %ymm0, %ymm2 @@ -1670,7 +1670,7 @@ # CHECK-NEXT: 2 21 14.00 * vsqrtsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 11 4.00 vsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 16 7.00 * vsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 3 2 1.00 * * U vstmxcsr (%rax) +# CHECK-NEXT: 3 2 1.00 * U vstmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 vsubpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 8 1.00 * vsubpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 3 1.00 vsubpd %ymm0, %ymm1, %ymm2 Index: llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 2 16 5.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 11 3.00 divss %xmm0, %xmm2 # CHECK-NEXT: 2 16 5.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 3 7 1.00 * * U ldmxcsr (%rax) +# CHECK-NEXT: 3 7 1.00 * U ldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 3 1.00 maxps %xmm0, %xmm2 # CHECK-NEXT: 2 8 1.00 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 2 16 7.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 11 4.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 2 16 7.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 3 2 1.00 * * U stmxcsr (%rax) +# CHECK-NEXT: 3 2 1.00 * U stmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 subps %xmm0, %xmm2 # CHECK-NEXT: 2 8 1.00 * subps (%rax), %xmm2 # CHECK-NEXT: 1 3 1.00 subss %xmm0, %xmm2 Index: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/pr37790.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/pr37790.s +++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/pr37790.s @@ -24,7 +24,7 @@ # CHECK: [1] [2] [3] [4] [5] [6] Instructions: # CHECK-NEXT: 1 100 0.50 * * U int3 -# CHECK-NEXT: 1 1 1.00 * * U stmxcsr (%rsp) +# CHECK-NEXT: 1 1 1.00 * U stmxcsr (%rsp) # CHECK: Timeline view: # CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 @@ -40,5 +40,5 @@ # CHECK-NEXT: [3]: Average time elapsed from WB until retire stage # CHECK: [0] [1] [2] [3] -# CHECK-NEXT: 0. 2 1.0 0.5 0.0 int3 -# CHECK-NEXT: 1. 2 100.5 0.0 0.0 stmxcsr (%rsp) +# CHECK-NEXT: 0. 2 51.0 0.5 0.0 int3 +# CHECK-NEXT: 1. 2 151.0 0.0 0.0 stmxcsr (%rsp) Index: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s @@ -1218,7 +1218,7 @@ # CHECK-NEXT: 1 6 1.00 * vinsertps $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 5 1.00 * vlddqu (%rax), %xmm2 # CHECK-NEXT: 1 5 1.00 * vlddqu (%rax), %ymm2 -# CHECK-NEXT: 1 3 1.00 * * U vldmxcsr (%rax) +# CHECK-NEXT: 1 3 1.00 * U vldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U vmaskmovdqu %xmm0, %xmm1 # CHECK-NEXT: 1 6 1.00 * vmaskmovpd (%rax), %xmm0, %xmm2 # CHECK-NEXT: 2 6 2.00 * vmaskmovpd (%rax), %ymm0, %ymm2 @@ -1670,7 +1670,7 @@ # CHECK-NEXT: 1 32 27.00 * vsqrtsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 21 21.00 vsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 1 26 21.00 * vsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 1 1 1.00 * * U vstmxcsr (%rax) +# CHECK-NEXT: 1 1 1.00 * U vstmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 vsubpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 1 8 1.00 * vsubpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 2 3 2.00 vsubpd %ymm0, %ymm1, %ymm2 Index: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 1 24 19.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 19 19.00 divss %xmm0, %xmm2 # CHECK-NEXT: 1 24 19.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 1 3 1.00 * * U ldmxcsr (%rax) +# CHECK-NEXT: 1 3 1.00 * U ldmxcsr (%rax) # CHECK-NEXT: 1 1 0.50 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 2 1.00 maxps %xmm0, %xmm2 # CHECK-NEXT: 1 7 1.00 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 1 26 21.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 21 21.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 1 26 21.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 1 1 1.00 * * U stmxcsr (%rax) +# CHECK-NEXT: 1 1 1.00 * U stmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 subps %xmm0, %xmm2 # CHECK-NEXT: 1 8 1.00 * subps (%rax), %xmm2 # CHECK-NEXT: 1 3 1.00 subss %xmm0, %xmm2 Index: llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-avx1.s @@ -1218,7 +1218,7 @@ # CHECK-NEXT: 2 7 1.00 * vinsertps $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 6 0.50 * vlddqu (%rax), %xmm2 # CHECK-NEXT: 1 7 0.50 * vlddqu (%rax), %ymm2 -# CHECK-NEXT: 4 5 1.00 * * U vldmxcsr (%rax) +# CHECK-NEXT: 4 5 1.00 * U vldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U vmaskmovdqu %xmm0, %xmm1 # CHECK-NEXT: 3 8 1.00 * vmaskmovpd (%rax), %xmm0, %xmm2 # CHECK-NEXT: 3 9 1.00 * vmaskmovpd (%rax), %ymm0, %ymm2 @@ -1670,7 +1670,7 @@ # CHECK-NEXT: 2 27 21.00 * vsqrtsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 14 14.00 vsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 20 14.00 * vsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 4 5 1.00 * * U vstmxcsr (%rax) +# CHECK-NEXT: 4 5 1.00 * U vstmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 vsubpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 9 1.00 * vsubpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 3 1.00 vsubpd %ymm0, %ymm1, %ymm2 Index: llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 2 20 14.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 14 14.00 divss %xmm0, %xmm2 # CHECK-NEXT: 2 20 14.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 4 5 1.00 * * U ldmxcsr (%rax) +# CHECK-NEXT: 4 5 1.00 * U ldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 3 1.00 maxps %xmm0, %xmm2 # CHECK-NEXT: 2 9 1.00 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 2 20 14.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 14 14.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 2 20 14.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 4 5 1.00 * * U stmxcsr (%rax) +# CHECK-NEXT: 4 5 1.00 * U stmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 subps %xmm0, %xmm2 # CHECK-NEXT: 2 9 1.00 * subps (%rax), %xmm2 # CHECK-NEXT: 1 3 1.00 subss %xmm0, %xmm2 Index: llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-avx1.s @@ -1218,7 +1218,7 @@ # CHECK-NEXT: 2 7 1.00 * vinsertps $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 6 0.50 * vlddqu (%rax), %xmm2 # CHECK-NEXT: 1 7 0.50 * vlddqu (%rax), %ymm2 -# CHECK-NEXT: 3 7 1.00 * * U vldmxcsr (%rax) +# CHECK-NEXT: 3 7 1.00 * U vldmxcsr (%rax) # CHECK-NEXT: 2 1 1.00 * * U vmaskmovdqu %xmm0, %xmm1 # CHECK-NEXT: 3 8 2.00 * vmaskmovpd (%rax), %xmm0, %xmm2 # CHECK-NEXT: 3 9 2.00 * vmaskmovpd (%rax), %ymm0, %ymm2 @@ -1670,7 +1670,7 @@ # CHECK-NEXT: 2 21 14.00 * vsqrtsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 11 7.00 vsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 16 7.00 * vsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 3 2 1.00 * * U vstmxcsr (%rax) +# CHECK-NEXT: 3 2 1.00 * U vstmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 vsubpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 9 1.00 * vsubpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 3 1.00 vsubpd %ymm0, %ymm1, %ymm2 Index: llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 2 19 7.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 13 7.00 divss %xmm0, %xmm2 # CHECK-NEXT: 2 18 7.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 3 7 1.00 * * U ldmxcsr (%rax) +# CHECK-NEXT: 3 7 1.00 * U ldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 3 1.00 maxps %xmm0, %xmm2 # CHECK-NEXT: 2 9 1.00 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 2 17 7.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 11 7.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 2 16 7.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 3 2 1.00 * * U stmxcsr (%rax) +# CHECK-NEXT: 3 2 1.00 * U stmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 subps %xmm0, %xmm2 # CHECK-NEXT: 2 9 1.00 * subps (%rax), %xmm2 # CHECK-NEXT: 1 3 1.00 subss %xmm0, %xmm2 Index: llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 1 42 39.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 19 17.00 divss %xmm0, %xmm2 # CHECK-NEXT: 1 22 17.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 1 3 1.00 * * U ldmxcsr (%rax) +# CHECK-NEXT: 1 3 1.00 * U ldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 3 1.00 maxps %xmm0, %xmm2 # CHECK-NEXT: 1 6 1.00 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 1 44 40.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 20 20.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 1 23 20.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 1 1 1.00 * * U stmxcsr (%rax) +# CHECK-NEXT: 1 1 1.00 * U stmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 subps %xmm0, %xmm2 # CHECK-NEXT: 1 6 1.00 * subps (%rax), %xmm2 # CHECK-NEXT: 1 3 1.00 subss %xmm0, %xmm2 Index: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s @@ -1218,7 +1218,7 @@ # CHECK-NEXT: 2 7 1.00 * vinsertps $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 6 0.50 * vlddqu (%rax), %xmm2 # CHECK-NEXT: 1 7 0.50 * vlddqu (%rax), %ymm2 -# CHECK-NEXT: 4 5 1.00 * * U vldmxcsr (%rax) +# CHECK-NEXT: 4 5 1.00 * U vldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U vmaskmovdqu %xmm0, %xmm1 # CHECK-NEXT: 3 8 1.00 * vmaskmovpd (%rax), %xmm0, %xmm2 # CHECK-NEXT: 3 9 1.00 * vmaskmovpd (%rax), %ymm0, %ymm2 @@ -1670,7 +1670,7 @@ # CHECK-NEXT: 2 27 21.00 * vsqrtsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 14 14.00 vsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 20 14.00 * vsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 4 5 1.00 * * U vstmxcsr (%rax) +# CHECK-NEXT: 4 5 1.00 * U vstmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 vsubpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 9 1.00 * vsubpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 3 1.00 vsubpd %ymm0, %ymm1, %ymm2 Index: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 2 20 14.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 14 14.00 divss %xmm0, %xmm2 # CHECK-NEXT: 2 20 14.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 4 5 1.00 * * U ldmxcsr (%rax) +# CHECK-NEXT: 4 5 1.00 * U ldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 3 1.00 maxps %xmm0, %xmm2 # CHECK-NEXT: 2 9 1.00 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 2 20 14.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 14 14.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 2 20 14.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 4 5 1.00 * * U stmxcsr (%rax) +# CHECK-NEXT: 4 5 1.00 * U stmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 subps %xmm0, %xmm2 # CHECK-NEXT: 2 9 1.00 * subps (%rax), %xmm2 # CHECK-NEXT: 1 3 1.00 subss %xmm0, %xmm2 Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s @@ -1218,7 +1218,7 @@ # CHECK-NEXT: 2 7 1.00 * vinsertps $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 6 0.50 * vlddqu (%rax), %xmm2 # CHECK-NEXT: 1 7 0.50 * vlddqu (%rax), %ymm2 -# CHECK-NEXT: 3 7 1.00 * * U vldmxcsr (%rax) +# CHECK-NEXT: 3 7 1.00 * U vldmxcsr (%rax) # CHECK-NEXT: 2 1 1.00 * * U vmaskmovdqu %xmm0, %xmm1 # CHECK-NEXT: 2 7 0.50 * vmaskmovpd (%rax), %xmm0, %xmm2 # CHECK-NEXT: 2 8 0.50 * vmaskmovpd (%rax), %ymm0, %ymm2 @@ -1670,7 +1670,7 @@ # CHECK-NEXT: 2 23 6.00 * vsqrtsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 12 3.00 vsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 17 3.00 * vsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 3 2 1.00 * * U vstmxcsr (%rax) +# CHECK-NEXT: 3 2 1.00 * U vstmxcsr (%rax) # CHECK-NEXT: 1 4 0.50 vsubpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 10 0.50 * vsubpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 4 0.50 vsubpd %ymm0, %ymm1, %ymm2 Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 2 17 5.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 11 3.00 divss %xmm0, %xmm2 # CHECK-NEXT: 2 16 3.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 3 7 1.00 * * U ldmxcsr (%rax) +# CHECK-NEXT: 3 7 1.00 * U ldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 4 0.50 maxps %xmm0, %xmm2 # CHECK-NEXT: 2 10 0.50 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 2 18 3.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 12 3.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 2 17 3.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 3 2 1.00 * * U stmxcsr (%rax) +# CHECK-NEXT: 3 2 1.00 * U stmxcsr (%rax) # CHECK-NEXT: 1 4 0.50 subps %xmm0, %xmm2 # CHECK-NEXT: 2 10 0.50 * subps (%rax), %xmm2 # CHECK-NEXT: 1 4 0.50 subss %xmm0, %xmm2 Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s @@ -1218,7 +1218,7 @@ # CHECK-NEXT: 2 7 1.00 * vinsertps $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 6 0.50 * vlddqu (%rax), %xmm2 # CHECK-NEXT: 1 7 0.50 * vlddqu (%rax), %ymm2 -# CHECK-NEXT: 3 7 1.00 * * U vldmxcsr (%rax) +# CHECK-NEXT: 3 7 1.00 * U vldmxcsr (%rax) # CHECK-NEXT: 2 1 1.00 * * U vmaskmovdqu %xmm0, %xmm1 # CHECK-NEXT: 2 7 0.50 * vmaskmovpd (%rax), %xmm0, %xmm2 # CHECK-NEXT: 2 8 0.50 * vmaskmovpd (%rax), %ymm0, %ymm2 @@ -1670,7 +1670,7 @@ # CHECK-NEXT: 2 23 6.00 * vsqrtsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 12 3.00 vsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 17 3.00 * vsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 3 2 1.00 * * U vstmxcsr (%rax) +# CHECK-NEXT: 3 2 1.00 * U vstmxcsr (%rax) # CHECK-NEXT: 1 4 0.50 vsubpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 10 0.50 * vsubpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 4 0.50 vsubpd %ymm0, %ymm1, %ymm2 Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 2 17 5.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 11 3.00 divss %xmm0, %xmm2 # CHECK-NEXT: 2 16 3.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 3 7 1.00 * * U ldmxcsr (%rax) +# CHECK-NEXT: 3 7 1.00 * U ldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 4 0.50 maxps %xmm0, %xmm2 # CHECK-NEXT: 2 10 0.50 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 2 18 3.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 12 3.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 2 17 3.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 3 2 1.00 * * U stmxcsr (%rax) +# CHECK-NEXT: 3 2 1.00 * U stmxcsr (%rax) # CHECK-NEXT: 1 4 0.50 subps %xmm0, %xmm2 # CHECK-NEXT: 2 10 0.50 * subps (%rax), %xmm2 # CHECK-NEXT: 1 4 0.50 subss %xmm0, %xmm2 Index: llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-avx1.s @@ -1218,7 +1218,7 @@ # CHECK-NEXT: 1 8 0.50 * vinsertps $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 8 0.50 * vlddqu (%rax), %xmm2 # CHECK-NEXT: 1 8 0.50 * vlddqu (%rax), %ymm2 -# CHECK-NEXT: 1 100 0.25 * * U vldmxcsr (%rax) +# CHECK-NEXT: 1 100 0.25 * U vldmxcsr (%rax) # CHECK-NEXT: 1 100 0.25 * * U vmaskmovdqu %xmm0, %xmm1 # CHECK-NEXT: 1 8 0.50 * vmaskmovpd (%rax), %xmm0, %xmm2 # CHECK-NEXT: 2 8 1.00 * vmaskmovpd (%rax), %ymm0, %ymm2 @@ -1670,7 +1670,7 @@ # CHECK-NEXT: 1 27 20.00 * vsqrtsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 20 20.00 vsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 1 27 20.00 * vsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 1 100 0.25 * * U vstmxcsr (%rax) +# CHECK-NEXT: 1 100 0.25 * U vstmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 vsubpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 1 10 1.00 * vsubpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1 3 1.00 vsubpd %ymm0, %ymm1, %ymm2 Index: llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-sse1.s @@ -230,7 +230,7 @@ # CHECK-NEXT: 1 22 1.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 15 1.00 divss %xmm0, %xmm2 # CHECK-NEXT: 1 22 1.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 1 100 0.25 * * U ldmxcsr (%rax) +# CHECK-NEXT: 1 100 0.25 * U ldmxcsr (%rax) # CHECK-NEXT: 1 100 0.25 * * U maskmovq %mm0, %mm1 # CHECK-NEXT: 1 3 1.00 maxps %xmm0, %xmm2 # CHECK-NEXT: 1 10 1.00 * maxps (%rax), %xmm2 @@ -305,7 +305,7 @@ # CHECK-NEXT: 1 27 20.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 20 20.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 1 27 20.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 1 100 0.25 * * U stmxcsr (%rax) +# CHECK-NEXT: 1 100 0.25 * U stmxcsr (%rax) # CHECK-NEXT: 1 3 1.00 subps %xmm0, %xmm2 # CHECK-NEXT: 1 10 1.00 * subps (%rax), %xmm2 # CHECK-NEXT: 1 3 1.00 subss %xmm0, %xmm2