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 3f2f1c9fe001031be0839eb65b61594d13e28fe1..831627dde5cfed8553a8f036e2b53008a78a3bc1 100644 |
--- a/src/compiler/arm64/code-generator-arm64.cc |
+++ b/src/compiler/arm64/code-generator-arm64.cc |
@@ -331,16 +331,17 @@ Condition FlagsConditionToCondition(FlagsCondition condition) { |
} while (0) |
-#define ASSEMBLE_SHIFT(asm_instr, width) \ |
- do { \ |
- if (instr->InputAt(1)->IsRegister()) { \ |
- __ asm_instr(i.OutputRegister##width(), i.InputRegister##width(0), \ |
- i.InputRegister##width(1)); \ |
- } else { \ |
- int imm = \ |
- static_cast<int>(i.InputOperand##width(1).immediate().value()); \ |
- __ asm_instr(i.OutputRegister##width(), i.InputRegister##width(0), imm); \ |
- } \ |
+#define ASSEMBLE_SHIFT(asm_instr, width) \ |
+ do { \ |
+ if (instr->InputAt(1)->IsRegister()) { \ |
+ __ asm_instr(i.OutputRegister##width(), i.InputRegister##width(0), \ |
+ i.InputRegister##width(1)); \ |
+ } else { \ |
+ uint32_t imm = \ |
+ static_cast<uint32_t>(i.InputOperand##width(1).ImmediateValue()); \ |
+ __ asm_instr(i.OutputRegister##width(), i.InputRegister##width(0), \ |
+ imm % (width)); \ |
+ } \ |
} while (0) |