mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-02-25 17:56:50 +00:00
target/arm: Remove redundant shift tests
The immediate shift generator functions already test for, and eliminate, the case of a shift by zero. Backports commit 464eaa9571fae5867d9aea7d7209c091c8a50223 from qemu
This commit is contained in:
parent
4dd30ebfbd
commit
df4c773ed2
|
@ -8994,8 +8994,7 @@ static void disas_arm_insn(DisasContext *s, unsigned int insn)
|
|||
shift = (insn >> 10) & 3;
|
||||
/* ??? In many cases it's not necessary to do a
|
||||
rotate, a shift is sufficient. */
|
||||
if (shift != 0)
|
||||
tcg_gen_rotri_i32(tcg_ctx, tmp, tmp, shift * 8);
|
||||
tcg_gen_rotri_i32(tcg_ctx, tmp, tmp, shift * 8);
|
||||
op1 = (insn >> 20) & 7;
|
||||
switch (op1) {
|
||||
case 0: gen_sxtb16(tmp); break;
|
||||
|
@ -10068,8 +10067,7 @@ static void disas_thumb2_insn(DisasContext *s, uint32_t insn)
|
|||
shift = (insn >> 4) & 3;
|
||||
/* ??? In many cases it's not necessary to do a
|
||||
rotate, a shift is sufficient. */
|
||||
if (shift != 0)
|
||||
tcg_gen_rotri_i32(tcg_ctx, tmp, tmp, shift * 8);
|
||||
tcg_gen_rotri_i32(tcg_ctx, tmp, tmp, shift * 8);
|
||||
op = (insn >> 20) & 7;
|
||||
switch (op) {
|
||||
case 0: gen_sxth(tmp); break;
|
||||
|
@ -10796,11 +10794,10 @@ static void disas_thumb2_insn(DisasContext *s, uint32_t insn)
|
|||
case 7:
|
||||
goto illegal_op;
|
||||
default: /* Saturate. */
|
||||
if (shift) {
|
||||
if (op & 1)
|
||||
tcg_gen_sari_i32(tcg_ctx, tmp, tmp, shift);
|
||||
else
|
||||
tcg_gen_shli_i32(tcg_ctx, tmp, tmp, shift);
|
||||
if (op & 1) {
|
||||
tcg_gen_sari_i32(tcg_ctx, tmp, tmp, shift);
|
||||
} else {
|
||||
tcg_gen_shli_i32(tcg_ctx, tmp, tmp, shift);
|
||||
}
|
||||
tmp2 = tcg_const_i32(tcg_ctx, imm);
|
||||
if (op & 4) {
|
||||
|
@ -10991,9 +10988,7 @@ static void disas_thumb2_insn(DisasContext *s, uint32_t insn)
|
|||
goto illegal_op;
|
||||
}
|
||||
tmp = load_reg(s, rm);
|
||||
if (shift) {
|
||||
tcg_gen_shli_i32(tcg_ctx, tmp, tmp, shift);
|
||||
}
|
||||
tcg_gen_shli_i32(tcg_ctx, tmp, tmp, shift);
|
||||
tcg_gen_add_i32(tcg_ctx, addr, addr, tmp);
|
||||
tcg_temp_free_i32(tcg_ctx, tmp);
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue