1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- From 216a6e190232aabac13eea58f9be63c44194ece1 Mon Sep 17 00:00:00 2001
- From: Kito Cheng <kito.cheng@sifive.com>
- Date: Tue, 20 Oct 2020 17:54:26 +0800
- Subject: [PATCH 090/107] target/riscv: rvb: min/max instructions
- Signed-off-by: Kito Cheng <kito.cheng@sifive.com>
- Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
- ---
- target/riscv/insn32.decode | 4 ++++
- target/riscv/insn_trans/trans_rvb.c.inc | 24 ++++++++++++++++++++++++
- 2 files changed, 28 insertions(+)
- diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode
- index 28ac42d196..0d951f7f1a 100644
- --- a/target/riscv/insn32.decode
- +++ b/target/riscv/insn32.decode
- @@ -701,3 +701,7 @@ xnor 0100000 .......... 100 ..... 0110011 @r
- pack 0000100 .......... 100 ..... 0110011 @r
- packu 0100100 .......... 100 ..... 0110011 @r
- packh 0000100 .......... 111 ..... 0110011 @r
- +min 0000101 .......... 100 ..... 0110011 @r
- +minu 0000101 .......... 101 ..... 0110011 @r
- +max 0000101 .......... 110 ..... 0110011 @r
- +maxu 0000101 .......... 111 ..... 0110011 @r
- diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_trans/trans_rvb.c.inc
- index 2d24dafac0..2aa4515fe3 100644
- --- a/target/riscv/insn_trans/trans_rvb.c.inc
- +++ b/target/riscv/insn_trans/trans_rvb.c.inc
- @@ -71,6 +71,30 @@ static bool trans_packh(DisasContext *ctx, arg_packh *a)
- return gen_arith(ctx, a, gen_packh);
- }
-
- +static bool trans_min(DisasContext *ctx, arg_min *a)
- +{
- + REQUIRE_EXT(ctx, RVB);
- + return gen_arith(ctx, a, tcg_gen_smin_tl);
- +}
- +
- +static bool trans_max(DisasContext *ctx, arg_max *a)
- +{
- + REQUIRE_EXT(ctx, RVB);
- + return gen_arith(ctx, a, tcg_gen_smax_tl);
- +}
- +
- +static bool trans_minu(DisasContext *ctx, arg_minu *a)
- +{
- + REQUIRE_EXT(ctx, RVB);
- + return gen_arith(ctx, a, tcg_gen_umin_tl);
- +}
- +
- +static bool trans_maxu(DisasContext *ctx, arg_maxu *a)
- +{
- + REQUIRE_EXT(ctx, RVB);
- + return gen_arith(ctx, a, tcg_gen_umax_tl);
- +}
- +
- /* RV64-only instructions */
- #ifdef TARGET_RISCV64
-
- --
- 2.33.1
|