1
0
Fork 0
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:
Richard Henderson 2019-11-18 20:12:42 -05:00 committed by Lioncash
parent fb2d3c9a9a
commit 3d3d56056b
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7
19 changed files with 2 additions and 34 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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',

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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;

View file

@ -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

View file

@ -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