Fix SHL, SHR, USHR implementation bug.
Change-Id: I506469f69087759b4ae30fad084f9fe3c559c2d6
diff --git a/src/compiler_llvm/method_compiler.h b/src/compiler_llvm/method_compiler.h
index 3127447..7e56046 100644
--- a/src/compiler_llvm/method_compiler.h
+++ b/src/compiler_llvm/method_compiler.h
@@ -112,6 +112,9 @@
kIntArithm_And,
kIntArithm_Or,
kIntArithm_Xor,
+ };
+
+ enum IntShiftArithmKind {
kIntArithm_Shl,
kIntArithm_Shr,
kIntArithm_UShr,
@@ -222,6 +225,12 @@
void EmitInsn_IntArithmImmediate(GEN_INSN_ARGS, IntArithmKind arithm);
+ void EmitInsn_IntShiftArithm(GEN_INSN_ARGS, IntShiftArithmKind arithm,
+ JType op_jty, bool is_2addr);
+
+ void EmitInsn_IntShiftArithmImmediate(GEN_INSN_ARGS,
+ IntShiftArithmKind arithm);
+
void EmitInsn_RSubImmediate(GEN_INSN_ARGS);
@@ -275,6 +284,12 @@
IntArithmKind arithm,
JType op_jty);
+ llvm::Value* EmitIntShiftArithmResultComputation(uint32_t dex_pc,
+ llvm::Value* lhs,
+ llvm::Value* rhs,
+ IntShiftArithmKind arithm,
+ JType op_jty);
+
llvm::Value* EmitFPArithmResultComputation(uint32_t dex_pc,
llvm::Value* lhs,
llvm::Value* rhs,