Revision: 19078
Author: [email protected]
Date: Tue Feb 4 17:11:58 2014 UTC
Log: A64: Add support for floating-point registers in
PushSafepointRegistersScope.
[email protected]
Review URL: https://codereview.chromium.org/130843008
http://code.google.com/p/v8/source/detail?r=19078
Modified:
/branches/experimental/a64/src/a64/assembler-a64.h
/branches/experimental/a64/src/a64/lithium-codegen-a64.h
/branches/experimental/a64/src/a64/macro-assembler-a64.cc
/branches/experimental/a64/src/a64/macro-assembler-a64.h
=======================================
--- /branches/experimental/a64/src/a64/assembler-a64.h Fri Jan 31 17:26:22
2014 UTC
+++ /branches/experimental/a64/src/a64/assembler-a64.h Tue Feb 4 17:11:58
2014 UTC
@@ -256,6 +256,8 @@
static const int kMaxNumAllocatableRegisters =
kNumberOfFPRegisters - kNumReservedRegisters;
static int NumAllocatableRegisters() { return
kMaxNumAllocatableRegisters; }
+ static const RegList kAllocatableFPRegisters =
+ (1 << kMaxNumAllocatableRegisters) - 1;
static FPRegister FromAllocationIndex(int index) {
ASSERT((index >= 0) && (index < NumAllocatableRegisters()));
=======================================
--- /branches/experimental/a64/src/a64/lithium-codegen-a64.h Tue Feb 4
11:17:28 2014 UTC
+++ /branches/experimental/a64/src/a64/lithium-codegen-a64.h Tue Feb 4
17:11:58 2014 UTC
@@ -411,7 +411,8 @@
codegen_->masm_->PushSafepointRegisters();
break;
case Safepoint::kWithRegistersAndDoubles:
- UNIMPLEMENTED();
+ codegen_->masm_->PushSafepointFPRegisters();
+ codegen_->masm_->PushSafepointRegisters();
break;
default:
UNREACHABLE();
@@ -426,7 +427,8 @@
codegen_->masm_->PopSafepointRegisters();
break;
case Safepoint::kWithRegistersAndDoubles:
- UNIMPLEMENTED();
+ codegen_->masm_->PopSafepointRegisters();
+ codegen_->masm_->PopSafepointFPRegisters();
break;
default:
UNREACHABLE();
=======================================
--- /branches/experimental/a64/src/a64/macro-assembler-a64.cc Tue Feb 4
16:51:29 2014 UTC
+++ /branches/experimental/a64/src/a64/macro-assembler-a64.cc Tue Feb 4
17:11:58 2014 UTC
@@ -3784,6 +3784,18 @@
Claim(num_unsaved);
PushXRegList(kSafepointSavedRegisters);
}
+
+
+void MacroAssembler::PushSafepointFPRegisters() {
+ PushCPURegList(CPURegList(CPURegister::kFPRegister, kDRegSize,
+ FPRegister::kAllocatableFPRegisters));
+}
+
+
+void MacroAssembler::PopSafepointFPRegisters() {
+ PopCPURegList(CPURegList(CPURegister::kFPRegister, kDRegSize,
+ FPRegister::kAllocatableFPRegisters));
+}
int MacroAssembler::SafepointRegisterStackIndex(int reg_code) {
=======================================
--- /branches/experimental/a64/src/a64/macro-assembler-a64.h Tue Feb 4
16:51:29 2014 UTC
+++ /branches/experimental/a64/src/a64/macro-assembler-a64.h Tue Feb 4
17:11:58 2014 UTC
@@ -1589,6 +1589,9 @@
void PushSafepointRegisters();
void PopSafepointRegisters();
+ void PushSafepointFPRegisters();
+ void PopSafepointFPRegisters();
+
// Store value in register src in the safepoint stack slot for register
dst.
void StoreToSafepointRegisterSlot(Register src, Register dst) {
Poke(src, SafepointRegisterStackIndex(dst.code()) * kPointerSize);
--
--
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/groups/opt_out.