mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
target/riscv: Add Zvbb ISA extension support
This commit adds support for the Zvbb vector-crypto extension, which consists of the following instructions: * vrol.[vv,vx] * vror.[vv,vx,vi] * vbrev8.v * vrev8.v * vandn.[vv,vx] * vbrev.v * vclz.v * vctz.v * vcpop.v * vwsll.[vv,vx,vi] Translation functions are defined in `target/riscv/insn_trans/trans_rvvk.c.inc` and helpers are defined in `target/riscv/vcrypto_helper.c`. Co-authored-by: Nazar Kazakov <nazar.kazakov@codethink.co.uk> Co-authored-by: William Salmon <will.salmon@codethink.co.uk> Co-authored-by: Kiran Ostrolenk <kiran.ostrolenk@codethink.co.uk> [max.chou@sifive.com: Fix imm mode of vror.vi] Signed-off-by: Nazar Kazakov <nazar.kazakov@codethink.co.uk> Signed-off-by: William Salmon <will.salmon@codethink.co.uk> Signed-off-by: Kiran Ostrolenk <kiran.ostrolenk@codethink.co.uk> Signed-off-by: Dickon Hood <dickon.hood@codethink.co.uk> Signed-off-by: Max Chou <max.chou@sifive.com> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> [max.chou@sifive.com: Exposed x-zvbb property] Message-ID: <20230711165917.2629866-9-max.chou@sifive.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
2152e48b50
commit
0602847289
6 changed files with 397 additions and 0 deletions
|
@ -1188,3 +1188,65 @@ DEF_HELPER_6(vclmul_vv, void, ptr, ptr, ptr, ptr, env, i32)
|
|||
DEF_HELPER_6(vclmul_vx, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vclmulh_vv, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vclmulh_vx, void, ptr, ptr, tl, ptr, env, i32)
|
||||
|
||||
DEF_HELPER_6(vror_vv_b, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vror_vv_h, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vror_vv_w, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vror_vv_d, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
|
||||
DEF_HELPER_6(vror_vx_b, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vror_vx_h, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vror_vx_w, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vror_vx_d, void, ptr, ptr, tl, ptr, env, i32)
|
||||
|
||||
DEF_HELPER_6(vrol_vv_b, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vrol_vv_h, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vrol_vv_w, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vrol_vv_d, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
|
||||
DEF_HELPER_6(vrol_vx_b, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vrol_vx_h, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vrol_vx_w, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vrol_vx_d, void, ptr, ptr, tl, ptr, env, i32)
|
||||
|
||||
DEF_HELPER_5(vrev8_v_b, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vrev8_v_h, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vrev8_v_w, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vrev8_v_d, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vbrev8_v_b, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vbrev8_v_h, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vbrev8_v_w, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vbrev8_v_d, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vbrev_v_b, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vbrev_v_h, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vbrev_v_w, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vbrev_v_d, void, ptr, ptr, ptr, env, i32)
|
||||
|
||||
DEF_HELPER_5(vclz_v_b, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vclz_v_h, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vclz_v_w, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vclz_v_d, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vctz_v_b, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vctz_v_h, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vctz_v_w, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vctz_v_d, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vcpop_v_b, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vcpop_v_h, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vcpop_v_w, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vcpop_v_d, void, ptr, ptr, ptr, env, i32)
|
||||
|
||||
DEF_HELPER_6(vwsll_vv_b, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vwsll_vv_h, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vwsll_vv_w, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vwsll_vx_b, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vwsll_vx_h, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vwsll_vx_w, void, ptr, ptr, tl, ptr, env, i32)
|
||||
|
||||
DEF_HELPER_6(vandn_vv_b, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vandn_vv_h, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vandn_vv_w, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vandn_vv_d, void, ptr, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_6(vandn_vx_b, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vandn_vx_h, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vandn_vx_w, void, ptr, ptr, tl, ptr, env, i32)
|
||||
DEF_HELPER_6(vandn_vx_d, void, ptr, ptr, tl, ptr, env, i32)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue