target/hppa: Fix deposit assert from trans_shrpw_imm
authorRichard Henderson <richard.henderson@linaro.org>
Mon, 13 Dec 2021 17:38:38 +0000 (09:38 -0800)
committerRichard Henderson <richard.henderson@linaro.org>
Fri, 24 Dec 2021 01:47:01 +0000 (17:47 -0800)
commit05bfd4db08608bc4c22de729780c1f74612fbc0e
tree0828ad00145351584c77a6e3ec71952f79494372
parentf18155a207dbc6a23f06a4af667280743819c31e
target/hppa: Fix deposit assert from trans_shrpw_imm

Because sa may be 0,

    tcg_gen_deposit_reg(dest, t0, cpu_gr[a->r1], 32 - sa, sa);

may attempt a zero-width deposit at bit 32, which will assert
for TARGET_REGISTER_BITS == 32.

Use the newer extract2 when possible, which itself includes the
rotri special case; otherwise mirror the code from trans_shrpw_sar,
using concat and shri.

Cc: qemu-stable@nongnu.org
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/635
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
target/hppa/translate.c