Title: [231240] trunk/Source/_javascript_Core
Revision
231240
Author
[email protected]
Date
2018-05-02 10:19:12 -0700 (Wed, 02 May 2018)

Log Message

[MIPS] Implement and16 and store16 for MacroAssemblerMIPS
https://bugs.webkit.org/show_bug.cgi?id=185195

Patch by Dominik Infuehr <[email protected]> on 2018-05-02
Reviewed by Mark Lam.

This implements the given function for MIPS, such that it builds again.

* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::and16):
(JSC::MacroAssemblerMIPS::store16):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (231239 => 231240)


--- trunk/Source/_javascript_Core/ChangeLog	2018-05-02 17:14:10 UTC (rev 231239)
+++ trunk/Source/_javascript_Core/ChangeLog	2018-05-02 17:19:12 UTC (rev 231240)
@@ -1,3 +1,16 @@
+2018-05-02  Dominik Infuehr  <[email protected]>
+
+        [MIPS] Implement and16 and store16 for MacroAssemblerMIPS
+        https://bugs.webkit.org/show_bug.cgi?id=185195
+
+        Reviewed by Mark Lam.
+
+        This implements the given function for MIPS, such that it builds again.
+
+        * assembler/MacroAssemblerMIPS.h:
+        (JSC::MacroAssemblerMIPS::and16):
+        (JSC::MacroAssemblerMIPS::store16):
+
 2018-05-02  Rick Waldron  <[email protected]>
 
         Expose "$262.agent.monotonicNow()" for use in testing Atomic operation timeouts

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h (231239 => 231240)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h	2018-05-02 17:14:10 UTC (rev 231239)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h	2018-05-02 17:19:12 UTC (rev 231240)
@@ -318,6 +318,12 @@
             add32(TrustedImm32(address.offset), dest);
     }
 
+    void and16(Address src, RegisterID dest)
+    {
+        load16(src, dataTempRegister);
+        and32(dataTempRegister, dest);
+    }
+
     void and32(Address src, RegisterID dest)
     {
         load32(src, dataTempRegister);
@@ -1359,6 +1365,23 @@
         }
     }
 
+    void store16(RegisterID src, ImplicitAddress address)
+    {
+        if (address.offset >= -32768 && address.offset <= 32767
+            && !m_fixedWidth) {
+            m_assembler.sh(src, address.base, address.offset);
+        } else {
+            /*
+                lui     addrTemp, (offset + 0x8000) >> 16
+                addu    addrTemp, addrTemp, base
+                sh      src, (offset & 0xffff)(addrTemp)
+              */
+            m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16);
+            m_assembler.addu(addrTempRegister, addrTempRegister, address.base);
+            m_assembler.sh(src, addrTempRegister, address.offset);
+        }
+    }
+
     void store16(RegisterID src, BaseIndex address)
     {
         if (address.offset >= -32768 && address.offset <= 32767
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to