diff --git a/qemu/aarch64.h b/qemu/aarch64.h index 961d3a17..718e548f 100644 --- a/qemu/aarch64.h +++ b/qemu/aarch64.h @@ -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 diff --git a/qemu/aarch64eb.h b/qemu/aarch64eb.h index 8d793be8..b34c409a 100644 --- a/qemu/aarch64eb.h +++ b/qemu/aarch64eb.h @@ -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 diff --git a/qemu/arm.h b/qemu/arm.h index 5f8733ee..e9c480c7 100644 --- a/qemu/arm.h +++ b/qemu/arm.h @@ -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 diff --git a/qemu/armeb.h b/qemu/armeb.h index e515b832..834ff9cc 100644 --- a/qemu/armeb.h +++ b/qemu/armeb.h @@ -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 diff --git a/qemu/header_gen.py b/qemu/header_gen.py index f53fbccb..fa7b15dd 100644 --- a/qemu/header_gen.py +++ b/qemu/header_gen.py @@ -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', diff --git a/qemu/m68k.h b/qemu/m68k.h index 8b110810..42be1f3c 100644 --- a/qemu/m68k.h +++ b/qemu/m68k.h @@ -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 diff --git a/qemu/mips.h b/qemu/mips.h index 434e35b7..23e14009 100644 --- a/qemu/mips.h +++ b/qemu/mips.h @@ -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 diff --git a/qemu/mips64.h b/qemu/mips64.h index 998d8dcc..7158d35f 100644 --- a/qemu/mips64.h +++ b/qemu/mips64.h @@ -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 diff --git a/qemu/mips64el.h b/qemu/mips64el.h index 8a034451..44be4533 100644 --- a/qemu/mips64el.h +++ b/qemu/mips64el.h @@ -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 diff --git a/qemu/mipsel.h b/qemu/mipsel.h index 8bd0481f..f8e213a3 100644 --- a/qemu/mipsel.h +++ b/qemu/mipsel.h @@ -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 diff --git a/qemu/powerpc.h b/qemu/powerpc.h index 0d178c54..e77c2dbe 100644 --- a/qemu/powerpc.h +++ b/qemu/powerpc.h @@ -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 diff --git a/qemu/riscv32.h b/qemu/riscv32.h index e4bdf456..907e685a 100644 --- a/qemu/riscv32.h +++ b/qemu/riscv32.h @@ -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 diff --git a/qemu/riscv64.h b/qemu/riscv64.h index 7bb8d91d..5e87976f 100644 --- a/qemu/riscv64.h +++ b/qemu/riscv64.h @@ -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 diff --git a/qemu/sparc.h b/qemu/sparc.h index b4523031..af0c1488 100644 --- a/qemu/sparc.h +++ b/qemu/sparc.h @@ -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 diff --git a/qemu/sparc64.h b/qemu/sparc64.h index 3592eaf9..e9edcb8e 100644 --- a/qemu/sparc64.h +++ b/qemu/sparc64.h @@ -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 diff --git a/qemu/target/arm/helper.h b/qemu/target/arm/helper.h index 00240b40..c51140b2 100644 --- a/qemu/target/arm/helper.h +++ b/qemu/target/arm/helper.h @@ -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) diff --git a/qemu/target/arm/op_helper.c b/qemu/target/arm/op_helper.c index 28d351aa..47c32411 100644 --- a/qemu/target/arm/op_helper.c +++ b/qemu/target/arm/op_helper.c @@ -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; diff --git a/qemu/target/arm/translate.c b/qemu/target/arm/translate.c index 90da8594..316451e9 100644 --- a/qemu/target/arm/translate.c +++ b/qemu/target/arm/translate.c @@ -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 diff --git a/qemu/x86_64.h b/qemu/x86_64.h index e3f9df3e..33ee2432 100644 --- a/qemu/x86_64.h +++ b/qemu/x86_64.h @@ -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