OSDN Git Service

[X86] Add missing properties on llvm.x86.sse.{st,ld}mxcsr
authorClement Courbet <courbet@google.com>
Wed, 19 Jun 2019 08:44:31 +0000 (08:44 +0000)
committerClement Courbet <courbet@google.com>
Wed, 19 Jun 2019 08:44:31 +0000 (08:44 +0000)
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

24 files changed:
include/llvm/IR/IntrinsicsX86.td
lib/Target/X86/X86InstrSSE.td
test/tools/llvm-mca/X86/Atom/resources-sse1.s
test/tools/llvm-mca/X86/BdVer2/pr37790.s
test/tools/llvm-mca/X86/BdVer2/resources-avx1.s
test/tools/llvm-mca/X86/BdVer2/resources-sse1.s
test/tools/llvm-mca/X86/Broadwell/resources-avx1.s
test/tools/llvm-mca/X86/Broadwell/resources-sse1.s
test/tools/llvm-mca/X86/BtVer2/pr37790.s
test/tools/llvm-mca/X86/BtVer2/resources-avx1.s
test/tools/llvm-mca/X86/BtVer2/resources-sse1.s
test/tools/llvm-mca/X86/Generic/resources-avx1.s
test/tools/llvm-mca/X86/Generic/resources-sse1.s
test/tools/llvm-mca/X86/Haswell/resources-avx1.s
test/tools/llvm-mca/X86/Haswell/resources-sse1.s
test/tools/llvm-mca/X86/SLM/resources-sse1.s
test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s
test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s
test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s
test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s
test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s
test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s
test/tools/llvm-mca/X86/Znver1/resources-avx1.s
test/tools/llvm-mca/X86/Znver1/resources-sse1.s

index 2003aa3..236d312 100644 (file)
@@ -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.
index 215c661..c96bac6 100644 (file)
@@ -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]>;
index dd8c965..cf07069 100644 (file)
@@ -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
index 48741da..c773cc9 100644 (file)
@@ -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)
index 2899df6..32fede8 100644 (file)
@@ -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
index a7ea3b9..700a6d0 100644 (file)
@@ -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
index d5dcc5c..4c4acd5 100644 (file)
@@ -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
index 80df139..830ea95 100644 (file)
@@ -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
index fa501b5..4cce5c8 100644 (file)
@@ -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)
index db6655e..5b9c1dd 100644 (file)
@@ -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
index b9c8d47..a22c9d1 100644 (file)
@@ -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
index 085068b..7d01c23 100644 (file)
@@ -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
index 4e6cc03..5fcb197 100644 (file)
@@ -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
index 6a89429..8f1aa7d 100644 (file)
@@ -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
index 0619f0b..c7ade6b 100644 (file)
@@ -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
index 4792505..dd837ab 100644 (file)
@@ -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
index e705479..c9f50af 100644 (file)
@@ -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
index a03fe7a..5cc3a70 100644 (file)
@@ -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
index 0435720..62816f7 100644 (file)
@@ -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
index 73f7358..8a2fb55 100644 (file)
@@ -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
index 616dc8a..97eb3ae 100644 (file)
@@ -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
index 013aa4a..7ce8735 100644 (file)
@@ -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
index 3ff02e3..2aeda7f 100644 (file)
@@ -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
index cb131b9..8fd10cb 100644 (file)
@@ -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