Index: src/arm64/lithium-arm64.cc |
diff --git a/src/arm64/lithium-arm64.cc b/src/arm64/lithium-arm64.cc |
index 7f5e2a3044e8861debbf94cf32bc9f687487ff81..b15b414bfb0b718371dbd8ec4bcde2a08286ca5b 100644 |
--- a/src/arm64/lithium-arm64.cc |
+++ b/src/arm64/lithium-arm64.cc |
@@ -2017,11 +2017,14 @@ LInstruction* LChunkBuilder::DoPower(HPower* instr) { |
Representation exponent_type = instr->right()->representation(); |
DCHECK(instr->left()->representation().IsDouble()); |
LOperand* left = UseFixedDouble(instr->left(), d0); |
- LOperand* right = exponent_type.IsInteger32() |
- ? UseFixed(instr->right(), x12) |
- : exponent_type.IsDouble() |
- ? UseFixedDouble(instr->right(), d1) |
- : UseFixed(instr->right(), x11); |
+ LOperand* right; |
+ if (exponent_type.IsInteger32()) { |
+ right = UseFixed(instr->right(), MathPowIntegerDescriptor::exponent()); |
+ } else if (exponent_type.IsDouble()) { |
+ right = UseFixedDouble(instr->right(), d1); |
+ } else { |
+ right = UseFixed(instr->right(), MathPowTaggedDescriptor::exponent()); |
+ } |
LPower* result = new(zone()) LPower(left, right); |
return MarkAsCall(DefineFixedDouble(result, d0), |
instr, |