Reviewers: Benedikt Meurer,

Message:
I will re enable the truncating lowering tests in a separate patch.


Description:
[turbofan] Allow unittest to call TruncateDoubleToI.

Switches stack pointer if necessary.

BUG=

Please review this at https://codereview.chromium.org/519713002/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+20, -6 lines):
  M src/arm64/macro-assembler-arm64.cc
  M test/cctest/cctest.status


Index: src/arm64/macro-assembler-arm64.cc
diff --git a/src/arm64/macro-assembler-arm64.cc b/src/arm64/macro-assembler-arm64.cc index 658497b9f76985ff64f7b9245d8063b448f70fd0..c13fba7716daca2fdc1c7c415acb69b9439bd13e 100644
--- a/src/arm64/macro-assembler-arm64.cc
+++ b/src/arm64/macro-assembler-arm64.cc
@@ -3013,12 +3013,22 @@ void MacroAssembler::TryConvertDoubleToInt64(Register result,
 void MacroAssembler::TruncateDoubleToI(Register result,
                                        DoubleRegister double_input) {
   Label done;
-  DCHECK(jssp.Is(StackPointer()));

// Try to convert the double to an int64. If successful, the bottom 32 bits
   // contain our truncated int32 result.
   TryConvertDoubleToInt64(result, double_input, &done);

+  const Register old_stack_pointer = StackPointer();
+  if (csp.Is(old_stack_pointer)) {
+    // This currently only happens during compiler-unittest. If it arises
+ // during regular code generation the DoubleToI stub should be updated to + // cope with csp and have an extra parameter indicating which stack pointer
+    // it should use.
+ Push(jssp, xzr); // Push xzr to maintain csp required 16-bytes alignment.
+    Mov(jssp, csp);
+    SetStackPointer(jssp);
+  }
+
// If we fell through then inline version didn't succeed - call stub instead.
   Push(lr, double_input);

@@ -3030,8 +3040,15 @@ void MacroAssembler::TruncateDoubleToI(Register result,
                      true);  // skip_fastpath
CallStub(&stub); // DoubleToIStub preserves any registers it needs to clobber

-  Drop(1, kDoubleSize);  // Drop the double input on the stack.
-  Pop(lr);
+  DCHECK_EQ(xzr.SizeInBytes(), double_input.SizeInBytes());
+  Pop(xzr, lr);  // xzr to drop the double input on the stack.
+
+  if (csp.Is(old_stack_pointer)) {
+    Mov(csp, jssp);
+    SetStackPointer(csp);
+    AssertStackConsistency();
+    Pop(xzr, jssp);
+  }

   Bind(&done);
 }
Index: test/cctest/cctest.status
diff --git a/test/cctest/cctest.status b/test/cctest/cctest.status
index 48f6a38d901c186a2f97b43e7d572e189ad4beba..894ae1bb203727e731be42780d53991196a371c3 100644
--- a/test/cctest/cctest.status
+++ b/test/cctest/cctest.status
@@ -195,9 +195,6 @@

   # BUG(v8:3434).
   ' test-api/LoadICFastApi_DirectCall_GCMoveStubWithProfiler': [SKIP],
-
-  # TODO(rodolph): Please investigate.
-  'test-run-machops/RunTruncateFloat64ToInt32P': [SKIP],
 }],  # 'arch == arm64'

 ['arch == arm64 and simulator_run == True', {


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to