Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 458639dd897d62e8b0c3c1cc5ea2564784d0485f..8c107d95f7f6e0f2d7f1179c164dafaa89f0af95 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -1489,6 +1489,9 @@ void LCodeGen::DoShiftI(LShiftI* instr) { |
// Mask the right_op operand. |
__ and_(scratch, ToRegister(right_op), Operand(0x1F)); |
switch (instr->op()) { |
+ case Token::ROR: |
+ __ mov(result, Operand(left, ROR, scratch)); |
+ break; |
case Token::SAR: |
__ mov(result, Operand(left, ASR, scratch)); |
break; |
@@ -1512,6 +1515,13 @@ void LCodeGen::DoShiftI(LShiftI* instr) { |
int value = ToInteger32(LConstantOperand::cast(right_op)); |
uint8_t shift_count = static_cast<uint8_t>(value & 0x1F); |
switch (instr->op()) { |
+ case Token::ROR: |
+ if (shift_count != 0) { |
+ __ mov(result, Operand(left, ROR, shift_count)); |
+ } else { |
+ __ Move(result, left); |
+ } |
+ break; |
case Token::SAR: |
if (shift_count != 0) { |
__ mov(result, Operand(left, ASR, shift_count)); |