| 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,
|
|
|