Title: [199261] trunk/Source/_javascript_Core
Revision
199261
Author
[email protected]
Date
2016-04-08 18:20:29 -0700 (Fri, 08 Apr 2016)

Log Message

MIPS: support Signed cond in branchTest32()
https://bugs.webkit.org/show_bug.cgi?id=156260

This is needed since r197688 makes use of it.

Patch by Guillaume Emont <[email protected]> on 2016-04-08
Reviewed by Mark Lam.

* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::branchTest32):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (199260 => 199261)


--- trunk/Source/_javascript_Core/ChangeLog	2016-04-09 01:19:07 UTC (rev 199260)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-04-09 01:20:29 UTC (rev 199261)
@@ -1,3 +1,15 @@
+2016-04-08  Guillaume Emont  <[email protected]>
+
+        MIPS: support Signed cond in branchTest32()
+        https://bugs.webkit.org/show_bug.cgi?id=156260
+
+        This is needed since r197688 makes use of it.
+
+        Reviewed by Mark Lam.
+
+        * assembler/MacroAssemblerMIPS.h:
+        (JSC::MacroAssemblerMIPS::branchTest32):
+
 2016-04-08  Alex Christensen  <[email protected]>
 
         Progress towards running CMake WebKit2 on Mac

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h (199260 => 199261)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h	2016-04-09 01:19:07 UTC (rev 199260)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h	2016-04-09 01:20:29 UTC (rev 199261)
@@ -1499,20 +1499,36 @@
 
     Jump branchTest32(ResultCondition cond, RegisterID reg, RegisterID mask)
     {
-        ASSERT((cond == Zero) || (cond == NonZero));
+        ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed));
         m_assembler.andInsn(cmpTempRegister, reg, mask);
-        if (cond == Zero)
+        switch (cond) {
+        case Zero:
             return branchEqual(cmpTempRegister, MIPSRegisters::zero);
-        return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
+        case NonZero:
+            return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
+        case Signed:
+            m_assembler.slt(cmpTempRegister, cmpTempRegister, MIPSRegisters::zero);
+            return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
+        default:
+            RELEASE_ASSERT_NOT_REACHED();
+        }
     }
 
     Jump branchTest32(ResultCondition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1))
     {
-        ASSERT((cond == Zero) || (cond == NonZero));
+        ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed));
         if (mask.m_value == -1 && !m_fixedWidth) {
-            if (cond == Zero)
+            switch (cond) {
+            case Zero:
                 return branchEqual(reg, MIPSRegisters::zero);
-            return branchNotEqual(reg, MIPSRegisters::zero);
+            case NonZero:
+                return branchNotEqual(reg, MIPSRegisters::zero);
+            case Signed:
+                m_assembler.slt(cmpTempRegister, reg, MIPSRegisters::zero);
+                return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
+            default:
+                RELEASE_ASSERT_NOT_REACHED();
+            }
         }
         move(mask, immTempRegister);
         return branchTest32(cond, reg, immTempRegister);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to