Index: src/compiler/mips64/code-generator-mips64.cc |
diff --git a/src/compiler/mips64/code-generator-mips64.cc b/src/compiler/mips64/code-generator-mips64.cc |
index afa221db59a6698ddb528c83474c61c3be049c71..47a766e8c2c9983e8cefa1f5ca5254167532cd2b 100644 |
--- a/src/compiler/mips64/code-generator-mips64.cc |
+++ b/src/compiler/mips64/code-generator-mips64.cc |
@@ -496,6 +496,18 @@ FPUCondition FlagsConditionToConditionCmpFPU(bool& predicate, |
__ sync(); \ |
} while (0) |
+#define ASSEMBLE_IEEE754_BINOP(name) \ |
+ do { \ |
+ FrameScope scope(masm(), StackFrame::MANUAL); \ |
+ __ PrepareCallCFunction(0, 2, kScratchReg); \ |
+ __ MovToFloatParameters(i.InputDoubleRegister(0), \ |
+ i.InputDoubleRegister(1)); \ |
+ __ CallCFunction(ExternalReference::ieee754_##name##_function(isolate()), \ |
+ 0, 2); \ |
+ /* Move the result in the double result register. */ \ |
+ __ MovFromFloatResult(i.OutputDoubleRegister()); \ |
+ } while (0) |
+ |
#define ASSEMBLE_IEEE754_UNOP(name) \ |
do { \ |
FrameScope scope(masm(), StackFrame::MANUAL); \ |
@@ -738,6 +750,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( |
Operand(offset.offset())); |
break; |
} |
+ case kIeee754Float64Atan: |
+ ASSEMBLE_IEEE754_UNOP(atan); |
+ break; |
+ case kIeee754Float64Atan2: |
+ ASSEMBLE_IEEE754_BINOP(atan2); |
+ break; |
case kIeee754Float64Log: |
ASSEMBLE_IEEE754_UNOP(log); |
break; |