Index: src/mips/macro-assembler-mips.cc |
diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc |
index 611ed32a9fb11c32c4db724d57f1095e64622fdc..4a127763aefe9a7d6f8d9bea18215b4167b11dbf 100644 |
--- a/src/mips/macro-assembler-mips.cc |
+++ b/src/mips/macro-assembler-mips.cc |
@@ -1052,6 +1052,19 @@ void MacroAssembler::Pref(int32_t hint, const MemOperand& rs) { |
} |
+void MacroAssembler::Lsa(Register rd, Register rt, Register rs, uint8_t sa, |
+ Register scratch) { |
+ if (IsMipsArchVariant(kMips32r6) && sa <= 4) { |
+ lsa(rd, rt, rs, sa); |
+ } else { |
+ Register tmp = rd.is(rt) ? scratch : rd; |
+ DCHECK(!tmp.is(rt)); |
+ sll(tmp, rs, sa); |
+ Addu(rd, rt, tmp); |
+ } |
+} |
+ |
+ |
// ------------Pseudo-instructions------------- |
void MacroAssembler::Ulw(Register rd, const MemOperand& rs) { |