| Index: src/crankshaft/mips64/lithium-codegen-mips64.cc
 | 
| diff --git a/src/crankshaft/mips64/lithium-codegen-mips64.cc b/src/crankshaft/mips64/lithium-codegen-mips64.cc
 | 
| index 7b89a6a0ebc068c08386790f14467f6363f1d759..68f19df9ec9d36e719c176f6aa3851e7c82b0ad4 100644
 | 
| --- a/src/crankshaft/mips64/lithium-codegen-mips64.cc
 | 
| +++ b/src/crankshaft/mips64/lithium-codegen-mips64.cc
 | 
| @@ -1410,8 +1410,7 @@ void LCodeGen::DoMulS(LMulS* instr) {
 | 
|            if (constant < 0) __ Dsubu(result, zero_reg, result);
 | 
|          } else if (base::bits::IsPowerOfTwo32(constant_abs - 1)) {
 | 
|            int32_t shift = WhichPowerOf2(constant_abs - 1);
 | 
| -          __ dsll(scratch, left, shift);
 | 
| -          __ Daddu(result, scratch, left);
 | 
| +          __ Dlsa(result, left, left, shift);
 | 
|            // Correct the sign of the result if the constant is negative.
 | 
|            if (constant < 0) __ Dsubu(result, zero_reg, result);
 | 
|          } else if (base::bits::IsPowerOfTwo32(constant_abs + 1)) {
 | 
| @@ -1512,8 +1511,7 @@ void LCodeGen::DoMulI(LMulI* instr) {
 | 
|            if (constant < 0) __ Subu(result, zero_reg, result);
 | 
|          } else if (base::bits::IsPowerOfTwo32(constant_abs - 1)) {
 | 
|            int32_t shift = WhichPowerOf2(constant_abs - 1);
 | 
| -          __ sll(scratch, left, shift);
 | 
| -          __ addu(result, scratch, left);
 | 
| +          __ Lsa(result, left, left, shift);
 | 
|            // Correct the sign of the result if the constant is negative.
 | 
|            if (constant < 0) __ Subu(result, zero_reg, result);
 | 
|          } else if (base::bits::IsPowerOfTwo32(constant_abs + 1)) {
 | 
| @@ -2703,8 +2701,7 @@ void LCodeGen::DoReturn(LReturn* instr) {
 | 
|      Register reg = ToRegister(instr->parameter_count());
 | 
|      // The argument count parameter is a smi
 | 
|      __ SmiUntag(reg);
 | 
| -    __ dsll(at, reg, kPointerSizeLog2);
 | 
| -    __ Daddu(sp, sp, at);
 | 
| +    __ Dlsa(sp, sp, reg, kPointerSizeLog2);
 | 
|    }
 | 
|  
 | 
|    __ Jump(ra);
 | 
| @@ -2921,8 +2918,7 @@ void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) {
 | 
|        Register index = ToRegister(instr->index());
 | 
|        __ li(at, Operand(const_length + 1));
 | 
|        __ Dsubu(result, at, index);
 | 
| -      __ dsll(at, result, kPointerSizeLog2);
 | 
| -      __ Daddu(at, arguments, at);
 | 
| +      __ Dlsa(at, arguments, result, kPointerSizeLog2);
 | 
|        __ ld(result, MemOperand(at));
 | 
|      }
 | 
|    } else if (instr->index()->IsConstantOperand()) {
 | 
| @@ -2931,12 +2927,10 @@ void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) {
 | 
|      int loc = const_index - 1;
 | 
|      if (loc != 0) {
 | 
|        __ Dsubu(result, length, Operand(loc));
 | 
| -      __ dsll(at, result, kPointerSizeLog2);
 | 
| -      __ Daddu(at, arguments, at);
 | 
| +      __ Dlsa(at, arguments, result, kPointerSizeLog2);
 | 
|        __ ld(result, MemOperand(at));
 | 
|      } else {
 | 
| -      __ dsll(at, length, kPointerSizeLog2);
 | 
| -      __ Daddu(at, arguments, at);
 | 
| +      __ Dlsa(at, arguments, length, kPointerSizeLog2);
 | 
|        __ ld(result, MemOperand(at));
 | 
|      }
 | 
|    } else {
 | 
| @@ -2944,8 +2938,7 @@ void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) {
 | 
|      Register index = ToRegister(instr->index());
 | 
|      __ Dsubu(result, length, index);
 | 
|      __ Daddu(result, result, 1);
 | 
| -    __ dsll(at, result, kPointerSizeLog2);
 | 
| -    __ Daddu(at, arguments, at);
 | 
| +    __ Dlsa(at, arguments, result, kPointerSizeLog2);
 | 
|      __ ld(result, MemOperand(at));
 | 
|    }
 | 
|  }
 | 
| @@ -3107,8 +3100,7 @@ void LCodeGen::DoLoadKeyedFixedArray(LLoadKeyed* instr) {
 | 
|      __ SmiScale(scratch, key, kPointerSizeLog2);
 | 
|      __ daddu(scratch, elements, scratch);
 | 
|      } else {
 | 
| -      __ dsll(scratch, key, kPointerSizeLog2);
 | 
| -      __ daddu(scratch, elements, scratch);
 | 
| +      __ Dlsa(scratch, elements, key, kPointerSizeLog2);
 | 
|      }
 | 
|    }
 | 
|  
 | 
| @@ -4282,8 +4274,7 @@ void LCodeGen::DoStoreKeyedFixedArray(LStoreKeyed* instr) {
 | 
|        __ SmiScale(scratch, key, kPointerSizeLog2);
 | 
|        __ daddu(store_base, elements, scratch);
 | 
|      } else {
 | 
| -      __ dsll(scratch, key, kPointerSizeLog2);
 | 
| -      __ daddu(store_base, elements, scratch);
 | 
| +      __ Dlsa(store_base, elements, key, kPointerSizeLog2);
 | 
|      }
 | 
|    }
 | 
|  
 | 
| @@ -4588,8 +4579,7 @@ void LCodeGen::DoStringCharFromCode(LStringCharFromCode* instr) {
 | 
|    __ Branch(deferred->entry(), hi,
 | 
|              char_code, Operand(String::kMaxOneByteCharCode));
 | 
|    __ LoadRoot(result, Heap::kSingleCharacterStringCacheRootIndex);
 | 
| -  __ dsll(scratch, char_code, kPointerSizeLog2);
 | 
| -  __ Daddu(result, result, scratch);
 | 
| +  __ Dlsa(result, result, char_code, kPointerSizeLog2);
 | 
|    __ ld(result, FieldMemOperand(result, FixedArray::kHeaderSize));
 | 
|    __ LoadRoot(scratch, Heap::kUndefinedValueRootIndex);
 | 
|    __ Branch(deferred->entry(), eq, result, Operand(scratch));
 | 
| 
 |