Index: src/mips/lithium-mips.cc |
diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc |
index 19892fccc45f01d24a1a9457217a0f72ef0dca7b..d824deea91935d53cff97a8967f15e6747a176cb 100644 |
--- a/src/mips/lithium-mips.cc |
+++ b/src/mips/lithium-mips.cc |
@@ -1152,6 +1152,13 @@ LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) { |
LOperand* input = UseFixedDouble(instr->value(), f4); |
LUnaryMathOperation* result = new LUnaryMathOperation(input, NULL); |
return MarkAsCall(DefineFixedDouble(result, f4), instr); |
+ } else if (op == kMathPowHalf) { |
+ // Input cannot be the same as the result. |
+ // See lithium-codegen-mips.cc::DoMathPowHalf. |
+ LOperand* input = UseFixedDouble(instr->value(), f8); |
+ LOperand* temp = FixedTemp(f6); |
+ LUnaryMathOperation* result = new LUnaryMathOperation(input, temp); |
+ return DefineFixedDouble(result, f4); |
} else { |
LOperand* input = UseRegisterAtStart(instr->value()); |
LOperand* temp = (op == kMathFloor) ? TempRegister() : NULL; |
@@ -1165,8 +1172,6 @@ LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) { |
return DefineAsRegister(result); |
case kMathRound: |
return AssignEnvironment(DefineAsRegister(result)); |
- case kMathPowHalf: |
- return DefineAsRegister(result); |
default: |
UNREACHABLE(); |
return NULL; |