mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-03-30 07:16:58 +00:00
target/arm: Remove helper_double_saturate
Replace x = double_saturate(y) with x = add_saturate(y, y). There is no need for a separate more specialized helper. Backports commit 640581a06d14e2d0d3c3ba79b916de6bc43578b0 from qemu
This commit is contained in:
parent
fb2d3c9a9a
commit
3d3d56056b
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_aarch64
|
||||
#define helper_divu_i32 helper_divu_i32_aarch64
|
||||
#define helper_divu_i64 helper_divu_i64_aarch64
|
||||
#define helper_double_saturate helper_double_saturate_aarch64
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_aarch64
|
||||
#define helper_exception_internal helper_exception_internal_aarch64
|
||||
#define helper_exception_return helper_exception_return_aarch64
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_aarch64eb
|
||||
#define helper_divu_i32 helper_divu_i32_aarch64eb
|
||||
#define helper_divu_i64 helper_divu_i64_aarch64eb
|
||||
#define helper_double_saturate helper_double_saturate_aarch64eb
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_aarch64eb
|
||||
#define helper_exception_internal helper_exception_internal_aarch64eb
|
||||
#define helper_exception_return helper_exception_return_aarch64eb
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_arm
|
||||
#define helper_divu_i32 helper_divu_i32_arm
|
||||
#define helper_divu_i64 helper_divu_i64_arm
|
||||
#define helper_double_saturate helper_double_saturate_arm
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_arm
|
||||
#define helper_exception_internal helper_exception_internal_arm
|
||||
#define helper_exception_return helper_exception_return_arm
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_armeb
|
||||
#define helper_divu_i32 helper_divu_i32_armeb
|
||||
#define helper_divu_i64 helper_divu_i64_armeb
|
||||
#define helper_double_saturate helper_double_saturate_armeb
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_armeb
|
||||
#define helper_exception_internal helper_exception_internal_armeb
|
||||
#define helper_exception_return helper_exception_return_armeb
|
||||
|
|
|
@ -1099,7 +1099,6 @@ symbols = (
|
|||
'helper_div_i64',
|
||||
'helper_divu_i32',
|
||||
'helper_divu_i64',
|
||||
'helper_double_saturate',
|
||||
'helper_exception_bkpt_insn',
|
||||
'helper_exception_internal',
|
||||
'helper_exception_return',
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_m68k
|
||||
#define helper_divu_i32 helper_divu_i32_m68k
|
||||
#define helper_divu_i64 helper_divu_i64_m68k
|
||||
#define helper_double_saturate helper_double_saturate_m68k
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_m68k
|
||||
#define helper_exception_internal helper_exception_internal_m68k
|
||||
#define helper_exception_return helper_exception_return_m68k
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_mips
|
||||
#define helper_divu_i32 helper_divu_i32_mips
|
||||
#define helper_divu_i64 helper_divu_i64_mips
|
||||
#define helper_double_saturate helper_double_saturate_mips
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_mips
|
||||
#define helper_exception_internal helper_exception_internal_mips
|
||||
#define helper_exception_return helper_exception_return_mips
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_mips64
|
||||
#define helper_divu_i32 helper_divu_i32_mips64
|
||||
#define helper_divu_i64 helper_divu_i64_mips64
|
||||
#define helper_double_saturate helper_double_saturate_mips64
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_mips64
|
||||
#define helper_exception_internal helper_exception_internal_mips64
|
||||
#define helper_exception_return helper_exception_return_mips64
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_mips64el
|
||||
#define helper_divu_i32 helper_divu_i32_mips64el
|
||||
#define helper_divu_i64 helper_divu_i64_mips64el
|
||||
#define helper_double_saturate helper_double_saturate_mips64el
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_mips64el
|
||||
#define helper_exception_internal helper_exception_internal_mips64el
|
||||
#define helper_exception_return helper_exception_return_mips64el
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_mipsel
|
||||
#define helper_divu_i32 helper_divu_i32_mipsel
|
||||
#define helper_divu_i64 helper_divu_i64_mipsel
|
||||
#define helper_double_saturate helper_double_saturate_mipsel
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_mipsel
|
||||
#define helper_exception_internal helper_exception_internal_mipsel
|
||||
#define helper_exception_return helper_exception_return_mipsel
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_powerpc
|
||||
#define helper_divu_i32 helper_divu_i32_powerpc
|
||||
#define helper_divu_i64 helper_divu_i64_powerpc
|
||||
#define helper_double_saturate helper_double_saturate_powerpc
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_powerpc
|
||||
#define helper_exception_internal helper_exception_internal_powerpc
|
||||
#define helper_exception_return helper_exception_return_powerpc
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_riscv32
|
||||
#define helper_divu_i32 helper_divu_i32_riscv32
|
||||
#define helper_divu_i64 helper_divu_i64_riscv32
|
||||
#define helper_double_saturate helper_double_saturate_riscv32
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_riscv32
|
||||
#define helper_exception_internal helper_exception_internal_riscv32
|
||||
#define helper_exception_return helper_exception_return_riscv32
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_riscv64
|
||||
#define helper_divu_i32 helper_divu_i32_riscv64
|
||||
#define helper_divu_i64 helper_divu_i64_riscv64
|
||||
#define helper_double_saturate helper_double_saturate_riscv64
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_riscv64
|
||||
#define helper_exception_internal helper_exception_internal_riscv64
|
||||
#define helper_exception_return helper_exception_return_riscv64
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_sparc
|
||||
#define helper_divu_i32 helper_divu_i32_sparc
|
||||
#define helper_divu_i64 helper_divu_i64_sparc
|
||||
#define helper_double_saturate helper_double_saturate_sparc
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_sparc
|
||||
#define helper_exception_internal helper_exception_internal_sparc
|
||||
#define helper_exception_return helper_exception_return_sparc
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_sparc64
|
||||
#define helper_divu_i32 helper_divu_i32_sparc64
|
||||
#define helper_divu_i64 helper_divu_i64_sparc64
|
||||
#define helper_double_saturate helper_double_saturate_sparc64
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_sparc64
|
||||
#define helper_exception_internal helper_exception_internal_sparc64
|
||||
#define helper_exception_return helper_exception_return_sparc64
|
||||
|
|
|
@ -8,7 +8,6 @@ DEF_HELPER_3(add_saturate, i32, env, i32, i32)
|
|||
DEF_HELPER_3(sub_saturate, i32, env, i32, i32)
|
||||
DEF_HELPER_3(add_usaturate, i32, env, i32, i32)
|
||||
DEF_HELPER_3(sub_usaturate, i32, env, i32, i32)
|
||||
DEF_HELPER_2(double_saturate, i32, env, s32)
|
||||
DEF_HELPER_FLAGS_2(sdiv, TCG_CALL_NO_RWG_SE, s32, s32, s32)
|
||||
DEF_HELPER_FLAGS_2(udiv, TCG_CALL_NO_RWG_SE, i32, i32, i32)
|
||||
DEF_HELPER_FLAGS_1(rbit, TCG_CALL_NO_RWG_SE, i32, i32)
|
||||
|
|
|
@ -134,21 +134,6 @@ uint32_t HELPER(sub_saturate)(CPUARMState *env, uint32_t a, uint32_t b)
|
|||
return res;
|
||||
}
|
||||
|
||||
uint32_t HELPER(double_saturate)(CPUARMState *env, int32_t val)
|
||||
{
|
||||
uint32_t res;
|
||||
if (val >= 0x40000000) {
|
||||
res = ~SIGNBIT;
|
||||
env->QF = 1;
|
||||
} else if (val <= (int32_t)0xc0000000) {
|
||||
res = SIGNBIT;
|
||||
env->QF = 1;
|
||||
} else {
|
||||
res = val << 1;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
uint32_t HELPER(add_usaturate)(CPUARMState *env, uint32_t a, uint32_t b)
|
||||
{
|
||||
uint32_t res = a + b;
|
||||
|
|
|
@ -8290,7 +8290,7 @@ static void disas_arm_insn(DisasContext *s, unsigned int insn)
|
|||
tmp = load_reg(s, rm);
|
||||
tmp2 = load_reg(s, rn);
|
||||
if (op1 & 2)
|
||||
gen_helper_double_saturate(tcg_ctx, tmp2, tcg_ctx->cpu_env, tmp2);
|
||||
gen_helper_add_saturate(tcg_ctx, tmp2, tcg_ctx->cpu_env, tmp2, tmp2);
|
||||
if (op1 & 1)
|
||||
gen_helper_sub_saturate(tcg_ctx, tmp, tcg_ctx->cpu_env, tmp, tmp2);
|
||||
else
|
||||
|
@ -10129,7 +10129,7 @@ static void disas_thumb2_insn(DisasContext *s, uint32_t insn)
|
|||
tmp = load_reg(s, rn);
|
||||
tmp2 = load_reg(s, rm);
|
||||
if (op & 1)
|
||||
gen_helper_double_saturate(tcg_ctx, tmp, tcg_ctx->cpu_env, tmp);
|
||||
gen_helper_add_saturate(tcg_ctx, tmp, tcg_ctx->cpu_env, tmp, tmp);
|
||||
if (op & 2)
|
||||
gen_helper_sub_saturate(tcg_ctx, tmp, tcg_ctx->cpu_env, tmp2, tmp);
|
||||
else
|
||||
|
|
|
@ -1093,7 +1093,6 @@
|
|||
#define helper_div_i64 helper_div_i64_x86_64
|
||||
#define helper_divu_i32 helper_divu_i32_x86_64
|
||||
#define helper_divu_i64 helper_divu_i64_x86_64
|
||||
#define helper_double_saturate helper_double_saturate_x86_64
|
||||
#define helper_exception_bkpt_insn helper_exception_bkpt_insn_x86_64
|
||||
#define helper_exception_internal helper_exception_internal_x86_64
|
||||
#define helper_exception_return helper_exception_return_x86_64
|
||||
|
|
Loading…
Reference in a new issue