tcg: Use constant zero when expanding with divu2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
40f40fc8f0
commit
bfefdbea9e
16
tcg/tcg-op.c
16
tcg/tcg-op.c
@ -342,8 +342,8 @@ void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2)
|
|||||||
tcg_gen_op3_i32(INDEX_op_divu_i32, ret, arg1, arg2);
|
tcg_gen_op3_i32(INDEX_op_divu_i32, ret, arg1, arg2);
|
||||||
} else if (TCG_TARGET_HAS_div2_i32) {
|
} else if (TCG_TARGET_HAS_div2_i32) {
|
||||||
TCGv_i32 t0 = tcg_temp_ebb_new_i32();
|
TCGv_i32 t0 = tcg_temp_ebb_new_i32();
|
||||||
tcg_gen_movi_i32(t0, 0);
|
TCGv_i32 zero = tcg_constant_i32(0);
|
||||||
tcg_gen_op5_i32(INDEX_op_divu2_i32, ret, t0, arg1, t0, arg2);
|
tcg_gen_op5_i32(INDEX_op_divu2_i32, ret, t0, arg1, zero, arg2);
|
||||||
tcg_temp_free_i32(t0);
|
tcg_temp_free_i32(t0);
|
||||||
} else {
|
} else {
|
||||||
gen_helper_divu_i32(ret, arg1, arg2);
|
gen_helper_divu_i32(ret, arg1, arg2);
|
||||||
@ -362,8 +362,8 @@ void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2)
|
|||||||
tcg_temp_free_i32(t0);
|
tcg_temp_free_i32(t0);
|
||||||
} else if (TCG_TARGET_HAS_div2_i32) {
|
} else if (TCG_TARGET_HAS_div2_i32) {
|
||||||
TCGv_i32 t0 = tcg_temp_ebb_new_i32();
|
TCGv_i32 t0 = tcg_temp_ebb_new_i32();
|
||||||
tcg_gen_movi_i32(t0, 0);
|
TCGv_i32 zero = tcg_constant_i32(0);
|
||||||
tcg_gen_op5_i32(INDEX_op_divu2_i32, t0, ret, arg1, t0, arg2);
|
tcg_gen_op5_i32(INDEX_op_divu2_i32, t0, ret, arg1, zero, arg2);
|
||||||
tcg_temp_free_i32(t0);
|
tcg_temp_free_i32(t0);
|
||||||
} else {
|
} else {
|
||||||
gen_helper_remu_i32(ret, arg1, arg2);
|
gen_helper_remu_i32(ret, arg1, arg2);
|
||||||
@ -1674,8 +1674,8 @@ void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2)
|
|||||||
tcg_gen_op3_i64(INDEX_op_divu_i64, ret, arg1, arg2);
|
tcg_gen_op3_i64(INDEX_op_divu_i64, ret, arg1, arg2);
|
||||||
} else if (TCG_TARGET_HAS_div2_i64) {
|
} else if (TCG_TARGET_HAS_div2_i64) {
|
||||||
TCGv_i64 t0 = tcg_temp_ebb_new_i64();
|
TCGv_i64 t0 = tcg_temp_ebb_new_i64();
|
||||||
tcg_gen_movi_i64(t0, 0);
|
TCGv_i64 zero = tcg_constant_i64(0);
|
||||||
tcg_gen_op5_i64(INDEX_op_divu2_i64, ret, t0, arg1, t0, arg2);
|
tcg_gen_op5_i64(INDEX_op_divu2_i64, ret, t0, arg1, zero, arg2);
|
||||||
tcg_temp_free_i64(t0);
|
tcg_temp_free_i64(t0);
|
||||||
} else {
|
} else {
|
||||||
gen_helper_divu_i64(ret, arg1, arg2);
|
gen_helper_divu_i64(ret, arg1, arg2);
|
||||||
@ -1694,8 +1694,8 @@ void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2)
|
|||||||
tcg_temp_free_i64(t0);
|
tcg_temp_free_i64(t0);
|
||||||
} else if (TCG_TARGET_HAS_div2_i64) {
|
} else if (TCG_TARGET_HAS_div2_i64) {
|
||||||
TCGv_i64 t0 = tcg_temp_ebb_new_i64();
|
TCGv_i64 t0 = tcg_temp_ebb_new_i64();
|
||||||
tcg_gen_movi_i64(t0, 0);
|
TCGv_i64 zero = tcg_constant_i64(0);
|
||||||
tcg_gen_op5_i64(INDEX_op_divu2_i64, t0, ret, arg1, t0, arg2);
|
tcg_gen_op5_i64(INDEX_op_divu2_i64, t0, ret, arg1, zero, arg2);
|
||||||
tcg_temp_free_i64(t0);
|
tcg_temp_free_i64(t0);
|
||||||
} else {
|
} else {
|
||||||
gen_helper_remu_i64(ret, arg1, arg2);
|
gen_helper_remu_i64(ret, arg1, arg2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user