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.

Reply via email to