aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/mips/macro-assembler-mips.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/mips/macro-assembler-mips.h')
-rw-r--r--deps/v8/src/mips/macro-assembler-mips.h57
1 files changed, 41 insertions, 16 deletions
diff --git a/deps/v8/src/mips/macro-assembler-mips.h b/deps/v8/src/mips/macro-assembler-mips.h
index 481c7d4a52..22d12b430b 100644
--- a/deps/v8/src/mips/macro-assembler-mips.h
+++ b/deps/v8/src/mips/macro-assembler-mips.h
@@ -488,7 +488,7 @@ class MacroAssembler: public Assembler {
// ---------------------------------------------------------------------------
// Allocation support.
- // Allocate an object in new space or old pointer space. The object_size is
+ // Allocate an object in new space or old space. The object_size is
// specified either in bytes or in words if the allocation flag SIZE_IN_WORDS
// is passed. If the space is exhausted control continues at the gc_required
// label. The allocated object is returned in result. If the flag
@@ -771,22 +771,39 @@ class MacroAssembler: public Assembler {
// general-purpose register.
void Mfhc1(Register rt, FPURegister fs);
- // Wrapper function for the different cmp/branch types.
- void BranchF(Label* target,
- Label* nan,
- Condition cc,
- FPURegister cmp1,
- FPURegister cmp2,
- BranchDelaySlot bd = PROTECT);
+ // Wrapper functions for the different cmp/branch types.
+ inline void BranchF32(Label* target, Label* nan, Condition cc,
+ FPURegister cmp1, FPURegister cmp2,
+ BranchDelaySlot bd = PROTECT) {
+ BranchFCommon(S, target, nan, cc, cmp1, cmp2, bd);
+ }
+
+ inline void BranchF64(Label* target, Label* nan, Condition cc,
+ FPURegister cmp1, FPURegister cmp2,
+ BranchDelaySlot bd = PROTECT) {
+ BranchFCommon(D, target, nan, cc, cmp1, cmp2, bd);
+ }
// Alternate (inline) version for better readability with USE_DELAY_SLOT.
- inline void BranchF(BranchDelaySlot bd,
- Label* target,
- Label* nan,
- Condition cc,
- FPURegister cmp1,
- FPURegister cmp2) {
- BranchF(target, nan, cc, cmp1, cmp2, bd);
+ inline void BranchF64(BranchDelaySlot bd, Label* target, Label* nan,
+ Condition cc, FPURegister cmp1, FPURegister cmp2) {
+ BranchF64(target, nan, cc, cmp1, cmp2, bd);
+ }
+
+ inline void BranchF32(BranchDelaySlot bd, Label* target, Label* nan,
+ Condition cc, FPURegister cmp1, FPURegister cmp2) {
+ BranchF32(target, nan, cc, cmp1, cmp2, bd);
+ }
+
+ // Alias functions for backward compatibility.
+ inline void BranchF(Label* target, Label* nan, Condition cc, FPURegister cmp1,
+ FPURegister cmp2, BranchDelaySlot bd = PROTECT) {
+ BranchF64(target, nan, cc, cmp1, cmp2, bd);
+ }
+
+ inline void BranchF(BranchDelaySlot bd, Label* target, Label* nan,
+ Condition cc, FPURegister cmp1, FPURegister cmp2) {
+ BranchF64(bd, target, nan, cc, cmp1, cmp2);
}
// Truncates a double using a specific rounding mode, and writes the value
@@ -1616,10 +1633,18 @@ const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT
void BranchAndLinkShort(Label* L, Condition cond, Register rs,
const Operand& rt,
BranchDelaySlot bdslot = PROTECT);
- void J(Label* L, BranchDelaySlot bdslot);
void Jr(Label* L, BranchDelaySlot bdslot);
void Jalr(Label* L, BranchDelaySlot bdslot);
+ // Common implementation of BranchF functions for the different formats.
+ void BranchFCommon(SecondaryField sizeField, Label* target, Label* nan,
+ Condition cc, FPURegister cmp1, FPURegister cmp2,
+ BranchDelaySlot bd = PROTECT);
+
+ void BranchShortF(SecondaryField sizeField, Label* target, Condition cc,
+ FPURegister cmp1, FPURegister cmp2,
+ BranchDelaySlot bd = PROTECT);
+
// Helper functions for generating invokes.
void InvokePrologue(const ParameterCount& expected,
const ParameterCount& actual,