Eliminate redundant x86 compare for GenDivZeroCheck
For x86, the ALU operations on general purpose registers update the flags.
Thus, when generating the zero check for divide/remainder operations, the
compare is not needed.
Change-Id: I07bfdf7d5491d3e3e9d98a932472d7f18d5b46d3
Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
diff --git a/compiler/dex/quick/mir_to_lir.h b/compiler/dex/quick/mir_to_lir.h
index 2a25f2f..9dc35c6 100644
--- a/compiler/dex/quick/mir_to_lir.h
+++ b/compiler/dex/quick/mir_to_lir.h
@@ -682,7 +682,15 @@
bool is_div) = 0;
virtual void GenCmpLong(RegLocation rl_dest, RegLocation rl_src1,
RegLocation rl_src2) = 0;
+
+ /**
+ * @brief Used for generating code that throws ArithmeticException if both registers are zero.
+ * @details This is used for generating DivideByZero checks when divisor is held in two separate registers.
+ * @param reg_lo The register holding the lower 32-bits.
+ * @param reg_hi The register holding the upper 32-bits.
+ */
virtual void GenDivZeroCheck(int reg_lo, int reg_hi) = 0;
+
virtual void GenEntrySequence(RegLocation* ArgLocs,
RegLocation rl_method) = 0;
virtual void GenExitSequence() = 0;