mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2024-12-23 19:15:34 +00:00
target/arm: Use tcg_gen_rotri_i32 for gen_swap_half
Rotate is the more compact and obvious way to swap 16-bit elements of a 32-bit word. Backports commit adefba76e8bf10dfb342094d2f5debfeedb1a74d from qemu
This commit is contained in:
parent
751ab7b24b
commit
4a1cc16eef
|
@ -457,11 +457,7 @@ static TCGv_i64 gen_muls_i64_i32(DisasContext *s, TCGv_i32 a, TCGv_i32 b)
|
||||||
static void gen_swap_half(DisasContext *s, TCGv_i32 var)
|
static void gen_swap_half(DisasContext *s, TCGv_i32 var)
|
||||||
{
|
{
|
||||||
TCGContext *tcg_ctx = s->uc->tcg_ctx;
|
TCGContext *tcg_ctx = s->uc->tcg_ctx;
|
||||||
TCGv_i32 tmp = tcg_temp_new_i32(tcg_ctx);
|
tcg_gen_rotri_i32(tcg_ctx, var, var, 16);
|
||||||
tcg_gen_shri_i32(tcg_ctx, tmp, var, 16);
|
|
||||||
tcg_gen_shli_i32(tcg_ctx, var, var, 16);
|
|
||||||
tcg_gen_or_i32(tcg_ctx, var, var, tmp);
|
|
||||||
tcg_temp_free_i32(tcg_ctx, tmp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Dual 16-bit add. Result placed in t0 and t1 is marked as dead.
|
/* Dual 16-bit add. Result placed in t0 and t1 is marked as dead.
|
||||||
|
|
Loading…
Reference in a new issue