From cc47f49f3721ab76666ab82a97c05523bd227189 Mon Sep 17 00:00:00 2001 From: Clement Courbet Date: Wed, 19 Jun 2019 08:44:31 +0000 Subject: [PATCH] [X86] Add missing properties on llvm.x86.sse.{st,ld}mxcsr Summary: llvm.x86.sse.stmxcsr only writes to memory. llvm.x86.sse.ldmxcsr only reads from memory, and might generate an FPE. Reviewers: craig.topper, RKSimon Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62896 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363773 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/IntrinsicsX86.td | 12 ++++++++++-- lib/Target/X86/X86InstrSSE.td | 4 ++++ test/tools/llvm-mca/X86/Atom/resources-sse1.s | 4 ++-- test/tools/llvm-mca/X86/BdVer2/pr37790.s | 6 +++--- test/tools/llvm-mca/X86/BdVer2/resources-avx1.s | 4 ++-- test/tools/llvm-mca/X86/BdVer2/resources-sse1.s | 4 ++-- test/tools/llvm-mca/X86/Broadwell/resources-avx1.s | 4 ++-- test/tools/llvm-mca/X86/Broadwell/resources-sse1.s | 4 ++-- test/tools/llvm-mca/X86/BtVer2/pr37790.s | 6 +++--- test/tools/llvm-mca/X86/BtVer2/resources-avx1.s | 4 ++-- test/tools/llvm-mca/X86/BtVer2/resources-sse1.s | 4 ++-- test/tools/llvm-mca/X86/Generic/resources-avx1.s | 4 ++-- test/tools/llvm-mca/X86/Generic/resources-sse1.s | 4 ++-- test/tools/llvm-mca/X86/Haswell/resources-avx1.s | 4 ++-- test/tools/llvm-mca/X86/Haswell/resources-sse1.s | 4 ++-- test/tools/llvm-mca/X86/SLM/resources-sse1.s | 4 ++-- test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s | 4 ++-- test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s | 4 ++-- .../llvm-mca/X86/SkylakeClient/resources-avx1.s | 4 ++-- .../llvm-mca/X86/SkylakeClient/resources-sse1.s | 4 ++-- .../llvm-mca/X86/SkylakeServer/resources-avx1.s | 4 ++-- .../llvm-mca/X86/SkylakeServer/resources-sse1.s | 4 ++-- test/tools/llvm-mca/X86/Znver1/resources-avx1.s | 4 ++-- test/tools/llvm-mca/X86/Znver1/resources-sse1.s | 4 ++-- 24 files changed, 60 insertions(+), 48 deletions(-) diff --git a/include/llvm/IR/IntrinsicsX86.td b/include/llvm/IR/IntrinsicsX86.td index 2003aa3fd1d..236d312d7d7 100644 --- a/include/llvm/IR/IntrinsicsX86.td +++ b/include/llvm/IR/IntrinsicsX86.td @@ -277,9 +277,17 @@ let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". // 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. diff --git a/lib/Target/X86/X86InstrSSE.td b/lib/Target/X86/X86InstrSSE.td index 215c66166e2..c96bac6828f 100644 --- a/lib/Target/X86/X86InstrSSE.td +++ b/lib/Target/X86/X86InstrSSE.td @@ -3174,16 +3174,20 @@ def : Pat<(X86MFence), (MFENCE)>; // 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]>; diff --git a/test/tools/llvm-mca/X86/Atom/resources-sse1.s b/test/tools/llvm-mca/X86/Atom/resources-sse1.s index dd8c9656b93..cf07069aa61 100644 --- a/test/tools/llvm-mca/X86/Atom/resources-sse1.s +++ b/test/tools/llvm-mca/X86/Atom/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 1 70 35.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 34 17.00 divss %xmm0, %xmm2 # CHECK-NEXT: 1 34 17.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 1 5 2.50 * * 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 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 1 70 35.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 34 17.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 1 34 17.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 1 15 7.50 * * 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 diff --git a/test/tools/llvm-mca/X86/BdVer2/pr37790.s b/test/tools/llvm-mca/X86/BdVer2/pr37790.s index 48741daccc4..c773cc96e0f 100644 --- a/test/tools/llvm-mca/X86/BdVer2/pr37790.s +++ b/test/tools/llvm-mca/X86/BdVer2/pr37790.s @@ -24,7 +24,7 @@ stmxcsr (%rsp) # 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 @@ stmxcsr (%rsp) # 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) diff --git a/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s b/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s index 2899df671a6..32fede8d242 100644 --- a/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s +++ b/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s @@ -1218,7 +1218,7 @@ vzeroupper # 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 @@ vzeroupper # 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 diff --git a/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s b/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s index a7ea3b99ea8..700a6d0d201 100644 --- a/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s +++ b/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # 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 @@ xorps (%rax), %xmm2 # 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 diff --git a/test/tools/llvm-mca/X86/Broadwell/resources-avx1.s b/test/tools/llvm-mca/X86/Broadwell/resources-avx1.s index d5dcc5cfff5..4c4acd533f0 100644 --- a/test/tools/llvm-mca/X86/Broadwell/resources-avx1.s +++ b/test/tools/llvm-mca/X86/Broadwell/resources-avx1.s @@ -1218,7 +1218,7 @@ vzeroupper # 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 @@ vzeroupper # 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 diff --git a/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s b/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s index 80df1399877..830ea95de23 100644 --- a/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s +++ b/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # 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 @@ xorps (%rax), %xmm2 # 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 diff --git a/test/tools/llvm-mca/X86/BtVer2/pr37790.s b/test/tools/llvm-mca/X86/BtVer2/pr37790.s index fa501b58ee4..4cce5c85e95 100644 --- a/test/tools/llvm-mca/X86/BtVer2/pr37790.s +++ b/test/tools/llvm-mca/X86/BtVer2/pr37790.s @@ -24,7 +24,7 @@ stmxcsr (%rsp) # 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 @@ stmxcsr (%rsp) # 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) diff --git a/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s b/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s index db6655e2d65..5b9c1dd66e9 100644 --- a/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s +++ b/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s @@ -1218,7 +1218,7 @@ vzeroupper # 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 @@ vzeroupper # 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 diff --git a/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s b/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s index b9c8d475644..a22c9d1270e 100644 --- a/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s +++ b/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # 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 @@ xorps (%rax), %xmm2 # 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 diff --git a/test/tools/llvm-mca/X86/Generic/resources-avx1.s b/test/tools/llvm-mca/X86/Generic/resources-avx1.s index 085068b50e9..7d01c23baa5 100644 --- a/test/tools/llvm-mca/X86/Generic/resources-avx1.s +++ b/test/tools/llvm-mca/X86/Generic/resources-avx1.s @@ -1218,7 +1218,7 @@ vzeroupper # 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 @@ vzeroupper # 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 diff --git a/test/tools/llvm-mca/X86/Generic/resources-sse1.s b/test/tools/llvm-mca/X86/Generic/resources-sse1.s index 4e6cc031e63..5fcb1979c74 100644 --- a/test/tools/llvm-mca/X86/Generic/resources-sse1.s +++ b/test/tools/llvm-mca/X86/Generic/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 2 20 14.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 14 14.00 divss %xmm0, %xmm2 # CHECK-NEXT: 2 20 14.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 4 5 1.00 * * 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 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 2 20 14.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 14 14.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 2 20 14.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 4 5 1.00 * * 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 diff --git a/test/tools/llvm-mca/X86/Haswell/resources-avx1.s b/test/tools/llvm-mca/X86/Haswell/resources-avx1.s index 6a894298606..8f1aa7d79e5 100644 --- a/test/tools/llvm-mca/X86/Haswell/resources-avx1.s +++ b/test/tools/llvm-mca/X86/Haswell/resources-avx1.s @@ -1218,7 +1218,7 @@ vzeroupper # 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 @@ vzeroupper # 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 diff --git a/test/tools/llvm-mca/X86/Haswell/resources-sse1.s b/test/tools/llvm-mca/X86/Haswell/resources-sse1.s index 0619f0b8080..c7ade6b9b25 100644 --- a/test/tools/llvm-mca/X86/Haswell/resources-sse1.s +++ b/test/tools/llvm-mca/X86/Haswell/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # 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 @@ xorps (%rax), %xmm2 # 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 diff --git a/test/tools/llvm-mca/X86/SLM/resources-sse1.s b/test/tools/llvm-mca/X86/SLM/resources-sse1.s index 47925059434..dd837ab4b53 100644 --- a/test/tools/llvm-mca/X86/SLM/resources-sse1.s +++ b/test/tools/llvm-mca/X86/SLM/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # 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 @@ xorps (%rax), %xmm2 # 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 diff --git a/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s b/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s index e705479af83..c9f50af487a 100644 --- a/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s +++ b/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s @@ -1218,7 +1218,7 @@ vzeroupper # 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 @@ vzeroupper # 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 diff --git a/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s b/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s index a03fe7a3aca..5cc3a7077f6 100644 --- a/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s +++ b/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 2 20 14.00 * divps (%rax), %xmm2 # CHECK-NEXT: 1 14 14.00 divss %xmm0, %xmm2 # CHECK-NEXT: 2 20 14.00 * divss (%rax), %xmm2 -# CHECK-NEXT: 4 5 1.00 * * 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 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 2 20 14.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 14 14.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 2 20 14.00 * sqrtss (%rax), %xmm2 -# CHECK-NEXT: 4 5 1.00 * * 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 diff --git a/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s b/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s index 04357208693..62816f790cc 100644 --- a/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s +++ b/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s @@ -1218,7 +1218,7 @@ vzeroupper # 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 @@ vzeroupper # 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 diff --git a/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s b/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s index 73f73587ff5..8a2fb55ab73 100644 --- a/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s +++ b/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # 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 @@ xorps (%rax), %xmm2 # 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 diff --git a/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s b/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s index 616dc8aef8e..97eb3ae44ea 100644 --- a/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s +++ b/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s @@ -1218,7 +1218,7 @@ vzeroupper # 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 @@ vzeroupper # 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 diff --git a/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s b/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s index 013aa4ae01e..7ce873567f5 100644 --- a/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s +++ b/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # 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 @@ xorps (%rax), %xmm2 # 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 diff --git a/test/tools/llvm-mca/X86/Znver1/resources-avx1.s b/test/tools/llvm-mca/X86/Znver1/resources-avx1.s index 3ff02e387f7..2aeda7f7810 100644 --- a/test/tools/llvm-mca/X86/Znver1/resources-avx1.s +++ b/test/tools/llvm-mca/X86/Znver1/resources-avx1.s @@ -1218,7 +1218,7 @@ vzeroupper # 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 @@ vzeroupper # 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 diff --git a/test/tools/llvm-mca/X86/Znver1/resources-sse1.s b/test/tools/llvm-mca/X86/Znver1/resources-sse1.s index cb131b91e70..8fd10cb08f7 100644 --- a/test/tools/llvm-mca/X86/Znver1/resources-sse1.s +++ b/test/tools/llvm-mca/X86/Znver1/resources-sse1.s @@ -230,7 +230,7 @@ xorps (%rax), %xmm2 # 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 @@ xorps (%rax), %xmm2 # 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 -- 2.40.0