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

Unified Diff: src/mips64/builtins-mips64.cc

Issue 1643973002: MIPS: Refine '[builtins] Make Math.max and Math.min fast by default.' (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix comments. Created 4 years, 11 months 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
« no previous file with comments | « src/mips/builtins-mips.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/mips64/builtins-mips64.cc
diff --git a/src/mips64/builtins-mips64.cc b/src/mips64/builtins-mips64.cc
index f377f755b519265760fc3b1cbb0d6d5d11e52494..87f2ce383478ca4e5b66cb68c258063ece602cbc 100644
--- a/src/mips64/builtins-mips64.cc
+++ b/src/mips64/builtins-mips64.cc
@@ -165,11 +165,10 @@ void Builtins::Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind) {
{
// Check if all parameters done.
__ Dsubu(a0, a0, Operand(1));
- __ Branch(USE_DELAY_SLOT, &done_loop, lt, a0, Operand(zero_reg));
+ __ Branch(&done_loop, lt, a0, Operand(zero_reg));
// Load the next parameter tagged value into a2.
- __ dsll(at, a0, kPointerSizeLog2); // In delay slot
- __ Daddu(at, at, sp);
+ __ Dlsa(at, sp, a0, kPointerSizeLog2);
__ ld(a2, MemOperand(at));
// Load the double value of the parameter into f2, maybe converting the
@@ -177,8 +176,8 @@ void Builtins::Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind) {
Label convert, convert_smi, convert_number, done_convert;
__ bind(&convert);
__ JumpIfSmi(a2, &convert_smi);
- __ ld(t0, FieldMemOperand(a2, HeapObject::kMapOffset));
- __ JumpIfRoot(t0, Heap::kHeapNumberMapRootIndex, &convert_number);
+ __ ld(a4, FieldMemOperand(a2, HeapObject::kMapOffset));
+ __ JumpIfRoot(a4, Heap::kHeapNumberMapRootIndex, &convert_number);
{
// Parameter is not a Number, use the ToNumberStub to convert it.
FrameScope scope(masm, StackFrame::INTERNAL);
@@ -197,7 +196,7 @@ void Builtins::Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind) {
__ ldc1(f0, FieldMemOperand(a1, HeapNumber::kValueOffset));
__ jmp(&done_restore);
__ bind(&restore_smi);
- __ SmiToDoubleFPURegister(a1, f0, t0);
+ __ SmiToDoubleFPURegister(a1, f0, a4);
__ bind(&done_restore);
}
__ SmiUntag(a3);
@@ -208,11 +207,11 @@ void Builtins::Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind) {
__ ldc1(f2, FieldMemOperand(a2, HeapNumber::kValueOffset));
__ jmp(&done_convert);
__ bind(&convert_smi);
- __ SmiToDoubleFPURegister(a2, f2, t0);
+ __ SmiToDoubleFPURegister(a2, f2, a4);
__ bind(&done_convert);
// Perform the actual comparison with the accumulator value on the left hand
- // side (d1) and the next parameter value on the right hand side (d2).
+ // side (f0) and the next parameter value on the right hand side (f2).
Label compare_equal, compare_nan, compare_swap;
__ BranchF(&compare_equal, &compare_nan, eq, f0, f2);
__ BranchF(&compare_swap, nullptr, cc, f0, f2);
@@ -220,8 +219,10 @@ void Builtins::Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind) {
// Left and right hand side are equal, check for -0 vs. +0.
__ bind(&compare_equal);
- __ FmoveHigh(t0, reg);
- __ Branch(&loop, ne, t0, Operand(0x80000000));
+ __ FmoveHigh(a4, reg);
+ // Make a4 unsigned.
+ __ dsll32(a4, a4, 0);
+ __ Branch(&loop, ne, a4, Operand(0x8000000000000000));
// Result is on the right hand side.
__ bind(&compare_swap);
@@ -237,8 +238,7 @@ void Builtins::Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind) {
}
__ bind(&done_loop);
- __ dsll(a3, a3, kPointerSizeLog2);
- __ Daddu(sp, sp, a3);
+ __ Dlsa(sp, sp, a3, kPointerSizeLog2);
__ mov(v0, a1);
__ DropAndRet(1);
}
« no previous file with comments | « src/mips/builtins-mips.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698