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.