| Index: src/compiler/arm64/code-generator-arm64.cc
|
| diff --git a/src/compiler/arm64/code-generator-arm64.cc b/src/compiler/arm64/code-generator-arm64.cc
|
| index ae16ead1afcee8c5eee389eb5835b8b119fbc1fe..0f9fb7ce7d0bfd22f1280203841e568e7f9d3af6 100644
|
| --- a/src/compiler/arm64/code-generator-arm64.cc
|
| +++ b/src/compiler/arm64/code-generator-arm64.cc
|
| @@ -159,7 +159,6 @@ class Arm64OperandConverter final : public InstructionOperandConverter {
|
| const size_t index = *first_index;
|
| switch (AddressingModeField::decode(instr_->opcode())) {
|
| case kMode_None:
|
| - case kMode_Operand2_R_LSL_I:
|
| case kMode_Operand2_R_LSR_I:
|
| case kMode_Operand2_R_ASR_I:
|
| case kMode_Operand2_R_ROR_I:
|
| @@ -168,6 +167,10 @@ class Arm64OperandConverter final : public InstructionOperandConverter {
|
| case kMode_Operand2_R_SXTB:
|
| case kMode_Operand2_R_SXTH:
|
| break;
|
| + case kMode_Operand2_R_LSL_I:
|
| + *first_index += 3;
|
| + return MemOperand(InputRegister(index + 0), InputRegister(index + 1),
|
| + LSL, InputInt32(index + 2));
|
| case kMode_MRI:
|
| *first_index += 2;
|
| return MemOperand(InputRegister(index + 0), InputInt32(index + 1));
|
| @@ -1364,7 +1367,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| __ Ldrsb(i.OutputRegister(), i.MemoryOperand());
|
| break;
|
| case kArm64Strb:
|
| - __ Strb(i.InputOrZeroRegister64(2), i.MemoryOperand());
|
| + __ Strb(i.InputOrZeroRegister64(0), i.MemoryOperand(1));
|
| break;
|
| case kArm64Ldrh:
|
| __ Ldrh(i.OutputRegister(), i.MemoryOperand());
|
| @@ -1373,31 +1376,31 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| __ Ldrsh(i.OutputRegister(), i.MemoryOperand());
|
| break;
|
| case kArm64Strh:
|
| - __ Strh(i.InputOrZeroRegister64(2), i.MemoryOperand());
|
| + __ Strh(i.InputOrZeroRegister64(0), i.MemoryOperand(1));
|
| break;
|
| case kArm64LdrW:
|
| __ Ldr(i.OutputRegister32(), i.MemoryOperand());
|
| break;
|
| case kArm64StrW:
|
| - __ Str(i.InputOrZeroRegister32(2), i.MemoryOperand());
|
| + __ Str(i.InputOrZeroRegister32(0), i.MemoryOperand(1));
|
| break;
|
| case kArm64Ldr:
|
| __ Ldr(i.OutputRegister(), i.MemoryOperand());
|
| break;
|
| case kArm64Str:
|
| - __ Str(i.InputOrZeroRegister64(2), i.MemoryOperand());
|
| + __ Str(i.InputOrZeroRegister64(0), i.MemoryOperand(1));
|
| break;
|
| case kArm64LdrS:
|
| __ Ldr(i.OutputDoubleRegister().S(), i.MemoryOperand());
|
| break;
|
| case kArm64StrS:
|
| - __ Str(i.InputFloat32OrZeroRegister(2), i.MemoryOperand());
|
| + __ Str(i.InputFloat32OrZeroRegister(0), i.MemoryOperand(1));
|
| break;
|
| case kArm64LdrD:
|
| __ Ldr(i.OutputDoubleRegister(), i.MemoryOperand());
|
| break;
|
| case kArm64StrD:
|
| - __ Str(i.InputFloat64OrZeroRegister(2), i.MemoryOperand());
|
| + __ Str(i.InputFloat64OrZeroRegister(0), i.MemoryOperand(1));
|
| break;
|
| case kCheckedLoadInt8:
|
| ASSEMBLE_CHECKED_LOAD_INTEGER(Ldrsb);
|
|
|