mirror of
https://github.com/qemu/qemu.git
synced 2025-01-07 14:13:27 +08:00
target/riscv: Remove shift-one instructions (proposed Zbo in pre-0.93 draft-B)
The Zb[abcs] ratification package does not include the proposed shift-one instructions. There currently is no clear plan to whether these (or variants of them) will be ratified as Zbo (or a different extension) or what the timeframe for such a decision could be. Signed-off-by: Philipp Tomsich <philipp.tomsich@vrull.eu> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Acked-by: Bin Meng <bmeng.cn@gmail.com> Message-id: 20210911140016.834071-8-philipp.tomsich@vrull.eu Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
dd98a74034
commit
628d8c88c1
@ -693,8 +693,6 @@ bset 0010100 .......... 001 ..... 0110011 @r
|
||||
bclr 0100100 .......... 001 ..... 0110011 @r
|
||||
binv 0110100 .......... 001 ..... 0110011 @r
|
||||
bext 0100100 .......... 101 ..... 0110011 @r
|
||||
slo 0010000 .......... 001 ..... 0110011 @r
|
||||
sro 0010000 .......... 101 ..... 0110011 @r
|
||||
ror 0110000 .......... 101 ..... 0110011 @r
|
||||
rol 0110000 .......... 001 ..... 0110011 @r
|
||||
grev 0110100 .......... 101 ..... 0110011 @r
|
||||
@ -704,8 +702,6 @@ bseti 00101. ........... 001 ..... 0010011 @sh
|
||||
bclri 01001. ........... 001 ..... 0010011 @sh
|
||||
binvi 01101. ........... 001 ..... 0010011 @sh
|
||||
bexti 01001. ........... 101 ..... 0010011 @sh
|
||||
sloi 00100. ........... 001 ..... 0010011 @sh
|
||||
sroi 00100. ........... 101 ..... 0010011 @sh
|
||||
rori 01100. ........... 101 ..... 0010011 @sh
|
||||
grevi 01101. ........... 101 ..... 0010011 @sh
|
||||
gorci 00101. ........... 101 ..... 0010011 @sh
|
||||
@ -717,15 +713,11 @@ cpopw 0110000 00010 ..... 001 ..... 0011011 @r2
|
||||
|
||||
packw 0000100 .......... 100 ..... 0111011 @r
|
||||
packuw 0100100 .......... 100 ..... 0111011 @r
|
||||
slow 0010000 .......... 001 ..... 0111011 @r
|
||||
srow 0010000 .......... 101 ..... 0111011 @r
|
||||
rorw 0110000 .......... 101 ..... 0111011 @r
|
||||
rolw 0110000 .......... 001 ..... 0111011 @r
|
||||
grevw 0110100 .......... 101 ..... 0111011 @r
|
||||
gorcw 0010100 .......... 101 ..... 0111011 @r
|
||||
|
||||
sloiw 0010000 .......... 001 ..... 0011011 @sh5
|
||||
sroiw 0010000 .......... 101 ..... 0011011 @sh5
|
||||
roriw 0110000 .......... 101 ..... 0011011 @sh5
|
||||
greviw 0110100 .......... 101 ..... 0011011 @sh5
|
||||
gorciw 0010100 .......... 101 ..... 0011011 @sh5
|
||||
|
@ -237,44 +237,6 @@ static bool trans_bexti(DisasContext *ctx, arg_bexti *a)
|
||||
return gen_shift_imm_tl(ctx, a, EXT_NONE, gen_bext);
|
||||
}
|
||||
|
||||
static void gen_slo(TCGv ret, TCGv arg1, TCGv arg2)
|
||||
{
|
||||
tcg_gen_not_tl(ret, arg1);
|
||||
tcg_gen_shl_tl(ret, ret, arg2);
|
||||
tcg_gen_not_tl(ret, ret);
|
||||
}
|
||||
|
||||
static bool trans_slo(DisasContext *ctx, arg_slo *a)
|
||||
{
|
||||
REQUIRE_EXT(ctx, RVB);
|
||||
return gen_shift(ctx, a, EXT_NONE, gen_slo);
|
||||
}
|
||||
|
||||
static bool trans_sloi(DisasContext *ctx, arg_sloi *a)
|
||||
{
|
||||
REQUIRE_EXT(ctx, RVB);
|
||||
return gen_shift_imm_tl(ctx, a, EXT_NONE, gen_slo);
|
||||
}
|
||||
|
||||
static void gen_sro(TCGv ret, TCGv arg1, TCGv arg2)
|
||||
{
|
||||
tcg_gen_not_tl(ret, arg1);
|
||||
tcg_gen_shr_tl(ret, ret, arg2);
|
||||
tcg_gen_not_tl(ret, ret);
|
||||
}
|
||||
|
||||
static bool trans_sro(DisasContext *ctx, arg_sro *a)
|
||||
{
|
||||
REQUIRE_EXT(ctx, RVB);
|
||||
return gen_shift(ctx, a, EXT_ZERO, gen_sro);
|
||||
}
|
||||
|
||||
static bool trans_sroi(DisasContext *ctx, arg_sroi *a)
|
||||
{
|
||||
REQUIRE_EXT(ctx, RVB);
|
||||
return gen_shift_imm_tl(ctx, a, EXT_ZERO, gen_sro);
|
||||
}
|
||||
|
||||
static bool trans_ror(DisasContext *ctx, arg_ror *a)
|
||||
{
|
||||
REQUIRE_EXT(ctx, RVB);
|
||||
@ -420,38 +382,6 @@ static bool trans_packuw(DisasContext *ctx, arg_packuw *a)
|
||||
return gen_arith(ctx, a, EXT_NONE, gen_packuw);
|
||||
}
|
||||
|
||||
static bool trans_slow(DisasContext *ctx, arg_slow *a)
|
||||
{
|
||||
REQUIRE_64BIT(ctx);
|
||||
REQUIRE_EXT(ctx, RVB);
|
||||
ctx->w = true;
|
||||
return gen_shift(ctx, a, EXT_NONE, gen_slo);
|
||||
}
|
||||
|
||||
static bool trans_sloiw(DisasContext *ctx, arg_sloiw *a)
|
||||
{
|
||||
REQUIRE_64BIT(ctx);
|
||||
REQUIRE_EXT(ctx, RVB);
|
||||
ctx->w = true;
|
||||
return gen_shift_imm_tl(ctx, a, EXT_NONE, gen_slo);
|
||||
}
|
||||
|
||||
static bool trans_srow(DisasContext *ctx, arg_srow *a)
|
||||
{
|
||||
REQUIRE_64BIT(ctx);
|
||||
REQUIRE_EXT(ctx, RVB);
|
||||
ctx->w = true;
|
||||
return gen_shift(ctx, a, EXT_ZERO, gen_sro);
|
||||
}
|
||||
|
||||
static bool trans_sroiw(DisasContext *ctx, arg_sroiw *a)
|
||||
{
|
||||
REQUIRE_64BIT(ctx);
|
||||
REQUIRE_EXT(ctx, RVB);
|
||||
ctx->w = true;
|
||||
return gen_shift_imm_tl(ctx, a, EXT_ZERO, gen_sro);
|
||||
}
|
||||
|
||||
static void gen_rorw(TCGv ret, TCGv arg1, TCGv arg2)
|
||||
{
|
||||
TCGv_i32 t1 = tcg_temp_new_i32();
|
||||
|
Loading…
Reference in New Issue
Block a user