mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
target/riscv: support for 128-bit M extension
Mult are generated inline (using a cool trick pointed out by Richard), but for div and rem, given the complexity of the implementation of these instructions, we call helpers to produce their behavior. From an implementation standpoint, the helpers return the low part of the results, while the high part is temporarily stored in a dedicated field of cpu_env that is used to update the architectural register in the generation wrapper. Signed-off-by: Frédéric Pétrot <frederic.petrot@univ-grenoble-alpes.fr> Co-authored-by: Fabien Portas <fabien.portas@grenoble-inp.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-id: 20220106210108.138226-15-frederic.petrot@univ-grenoble-alpes.fr Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
7fd40f8679
commit
b3a5d1fbeb
6 changed files with 295 additions and 13 deletions
|
@ -1101,3 +1101,9 @@ DEF_HELPER_5(vsext_vf2_d, void, ptr, ptr, ptr, env, i32)
|
|||
DEF_HELPER_5(vsext_vf4_w, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vsext_vf4_d, void, ptr, ptr, ptr, env, i32)
|
||||
DEF_HELPER_5(vsext_vf8_d, void, ptr, ptr, ptr, env, i32)
|
||||
|
||||
/* 128-bit integer multiplication and division */
|
||||
DEF_HELPER_5(divu_i128, tl, env, tl, tl, tl, tl)
|
||||
DEF_HELPER_5(divs_i128, tl, env, tl, tl, tl, tl)
|
||||
DEF_HELPER_5(remu_i128, tl, env, tl, tl, tl, tl)
|
||||
DEF_HELPER_5(rems_i128, tl, env, tl, tl, tl, tl)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue