Title: [226428] trunk/Source/_javascript_Core
Revision
226428
Author
[email protected]
Date
2018-01-04 16:17:06 -0800 (Thu, 04 Jan 2018)

Log Message

Add assembler support for x86 lfence and sfence
https://bugs.webkit.org/show_bug.cgi?id=181311
<rdar://problem/36301780>

Reviewed by Michael Saboff.

Useful for testing performance of serializing instructions (hint:
it's not good).

* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::lfence):
(JSC::MacroAssemblerX86Common::sfence):
* assembler/X86Assembler.h:
(JSC::X86Assembler::lfence):
(JSC::X86Assembler::sfence):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (226427 => 226428)


--- trunk/Source/_javascript_Core/ChangeLog	2018-01-05 00:16:26 UTC (rev 226427)
+++ trunk/Source/_javascript_Core/ChangeLog	2018-01-05 00:17:06 UTC (rev 226428)
@@ -1,3 +1,21 @@
+2018-01-04  JF Bastien  <[email protected]>
+
+        Add assembler support for x86 lfence and sfence
+        https://bugs.webkit.org/show_bug.cgi?id=181311
+        <rdar://problem/36301780>
+
+        Reviewed by Michael Saboff.
+
+        Useful for testing performance of serializing instructions (hint:
+        it's not good).
+
+        * assembler/MacroAssemblerX86Common.h:
+        (JSC::MacroAssemblerX86Common::lfence):
+        (JSC::MacroAssemblerX86Common::sfence):
+        * assembler/X86Assembler.h:
+        (JSC::X86Assembler::lfence):
+        (JSC::X86Assembler::sfence):
+
 2018-01-04  Saam Barati  <[email protected]>
 
         Add a new pattern matching rule to Graph::methodOfGettingAValueProfileFor for SetLocal(@nodeWithHeapPrediction)

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h (226427 => 226428)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h	2018-01-05 00:16:26 UTC (rev 226427)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h	2018-01-05 00:17:06 UTC (rev 226428)
@@ -3886,11 +3886,21 @@
         s_avxCheckState = (flags & (1 << 28)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
     }
 
+    void lfence()
+    {
+        m_assembler.lfence();
+    }
+
     void mfence()
     {
         m_assembler.mfence();
     }
 
+    void sfence()
+    {
+        m_assembler.sfence();
+    }
+
     void rdtsc()
     {
         m_assembler.rdtsc();

Modified: trunk/Source/_javascript_Core/assembler/X86Assembler.h (226427 => 226428)


--- trunk/Source/_javascript_Core/assembler/X86Assembler.h	2018-01-05 00:16:26 UTC (rev 226427)
+++ trunk/Source/_javascript_Core/assembler/X86Assembler.h	2018-01-05 00:17:06 UTC (rev 226428)
@@ -344,7 +344,9 @@
     typedef enum {
         OP3_ROUNDSS_VssWssIb = 0x0A,
         OP3_ROUNDSD_VsdWsdIb = 0x0B,
+        OP3_LFENCE           = 0xE8,
         OP3_MFENCE           = 0xF0,
+        OP3_SFENCE           = 0xF8,
     } ThreeByteOpcodeID;
 
     struct VexPrefix {
@@ -3541,12 +3543,22 @@
         m_formatter.twoByteOp64(OP2_XADD, src, base, index, scale, offset);
     }
 #endif // CPU(X86_64)
-    
+
+    void lfence()
+    {
+        m_formatter.threeByteOp(OP2_3BYTE_ESCAPE_AE, OP3_LFENCE);
+    }
+
     void mfence()
     {
         m_formatter.threeByteOp(OP2_3BYTE_ESCAPE_AE, OP3_MFENCE);
     }
 
+    void sfence()
+    {
+        m_formatter.threeByteOp(OP2_3BYTE_ESCAPE_AE, OP3_SFENCE);
+    }
+
     void rdtsc()
     {
         m_formatter.twoByteOp(OP2_RDTSC);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to