Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: src/arm/code-stubs-arm.cc

Issue 11428137: ARM: Make use of d16-d31 when available. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix Vldm/Vstm; pass more tests Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/arm/code-stubs-arm.cc
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc
index 9484f85f97e38ff87de543ec4c25dee3b9d6984e..fad4b6a5f070cfd68ff360150b6883ce1d767e2c 100644
--- a/src/arm/code-stubs-arm.cc
+++ b/src/arm/code-stubs-arm.cc
@@ -2036,8 +2036,8 @@ void StoreBufferOverflowStub::Generate(MacroAssembler* masm) {
__ stm(db_w, sp, kCallerSaved | lr.bit());
if (save_doubles_ == kSaveFPRegs) {
CpuFeatures::Scope scope(VFP2);
- __ sub(sp, sp, Operand(kDoubleSize * DwVfpRegister::kNumRegisters));
- for (int i = 0; i < DwVfpRegister::kNumRegisters; i++) {
+ __ sub(sp, sp, Operand(kDoubleSize * DwVfpRegister::NumAvailableRegisters()));
+ for (int i = 0; i < DwVfpRegister::NumAvailableRegisters(); i++) {
DwVfpRegister reg = DwVfpRegister::from_code(i);
__ vstr(reg, MemOperand(sp, i * kDoubleSize));
}
@@ -2054,11 +2054,12 @@ void StoreBufferOverflowStub::Generate(MacroAssembler* masm) {
argument_count);
if (save_doubles_ == kSaveFPRegs) {
CpuFeatures::Scope scope(VFP2);
- for (int i = 0; i < DwVfpRegister::kNumRegisters; i++) {
+ for (int i = 0; i < DwVfpRegister::NumAvailableRegisters(); i++) {
DwVfpRegister reg = DwVfpRegister::from_code(i);
__ vldr(reg, MemOperand(sp, i * kDoubleSize));
}
- __ add(sp, sp, Operand(kDoubleSize * DwVfpRegister::kNumRegisters));
+ __ add(sp, sp, Operand(kDoubleSize *
+ DwVfpRegister::NumAvailableRegisters()));
}
__ ldm(ia_w, sp, kCallerSaved | pc.bit()); // Also pop pc to get Ret(0).
}
@@ -3644,7 +3645,7 @@ void MathPowStub::Generate(MacroAssembler* masm) {
__ b(eq, &done);
// Add +0 to convert -0 to +0.
- __ vadd(double_scratch, double_base, kDoubleRegZero);
+ __ vadd(double_scratch, double_base, DwVfpRegister::ZeroReg());
__ vsqrt(double_result, double_scratch);
__ jmp(&done);
@@ -3657,11 +3658,11 @@ void MathPowStub::Generate(MacroAssembler* masm) {
// Math.pow(-Infinity, -0.5) == 0 (ECMA spec, 15.8.2.13).
__ vmov(double_scratch, -V8_INFINITY, scratch);
__ VFPCompareAndSetFlags(double_base, double_scratch);
- __ vmov(double_result, kDoubleRegZero, eq);
+ __ vmov(double_result, DwVfpRegister::ZeroReg(), eq);
__ b(eq, &done);
// Add +0 to convert -0 to +0.
- __ vadd(double_scratch, double_base, kDoubleRegZero);
+ __ vadd(double_scratch, double_base, DwVfpRegister::ZeroReg());
__ vmov(double_result, 1.0, scratch);
__ vsqrt(double_scratch, double_scratch);
__ vdiv(double_result, double_result, double_scratch);
@@ -4022,9 +4023,10 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
if (CpuFeatures::IsSupported(VFP2)) {
CpuFeatures::Scope scope(VFP2);
// Save callee-saved vfp registers.
- __ vstm(db_w, sp, kFirstCalleeSavedDoubleReg, kLastCalleeSavedDoubleReg);
+ __ Vstm(db_w, sp, DwVfpRegister::FirstCalleeSavedReg(),
+ DwVfpRegister::LastCalleeSavedReg());
// Set up the reserved register for 0.0.
- __ vmov(kDoubleRegZero, 0.0);
+ __ vmov(DwVfpRegister::ZeroReg(), 0.0);
}
// Get address of argv, see stm above.
@@ -4036,7 +4038,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
// Set up argv in r4.
int offset_to_argv = (kNumCalleeSaved + 1) * kPointerSize;
if (CpuFeatures::IsSupported(VFP2)) {
- offset_to_argv += kNumDoubleCalleeSaved * kDoubleSize;
+ offset_to_argv += DwVfpRegister::NumCalleeSaved() * kDoubleSize;
}
__ ldr(r4, MemOperand(sp, offset_to_argv));
@@ -4176,7 +4178,8 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
if (CpuFeatures::IsSupported(VFP2)) {
CpuFeatures::Scope scope(VFP2);
// Restore callee-saved vfp registers.
- __ vldm(ia_w, sp, kFirstCalleeSavedDoubleReg, kLastCalleeSavedDoubleReg);
+ __ Vldm(ia_w, sp, DwVfpRegister::FirstCalleeSavedReg(),
+ DwVfpRegister::LastCalleeSavedReg());
}
__ ldm(ia_w, sp, kCalleeSaved | pc.bit());

Powered by Google App Engine
This is Rietveld 408576698