mbox series

[v6,0/8] target/riscv: support Zfh, Zfhmin extension v0.1

Message ID 20211210074329.5775-1-frank.chang@sifive.com (mailing list archive)
Headers show
Series target/riscv: support Zfh, Zfhmin extension v0.1 | expand

Message

Frank Chang Dec. 10, 2021, 7:43 a.m. UTC
From: Frank Chang <frank.chang@sifive.com>

Zfh - Half width floating point
Zfhmin - Subset of half width floating point

Zfh, Zfhmin v0.1 is now in public review period and is required by
RVV extension:
https://groups.google.com/a/groups.riscv.org/g/isa-dev/c/63gDCinXTwE/m/871Wm9XIBQAJ

Zfh, Zfhmin can be enabled with -cpu option: Zfh=true and Zfhmin=true
respectively.

The port is available at:
https://github.com/sifive/qemu/tree/zfh-upstream-v6

Note: This patchset depends on another patchset listed in Based-on
      section below so it is not able to be built unless the patchset
      is applied.

Changelog:

v6:
  * Rebase on riscv-to-apply.next.

v5:
  * Rebase on riscv-to-apply.next.

v4:
  * Spilt Zfh, Zfhmin cpu properties related changes into individual
    patches.

v3:
  * Use the renamed softfloat min/max APIs: *_minimum_number()
    and *_maximum_number().
  * Pick softfloat min/max APIs based on CPU privilege spec version.
  * Add braces for if statements in REQUIRE_ZFH() and
    REQUIRE_ZFH_OR_ZFHMIN().
  * Rearrange the positions of Zfh and Zfhmin cpu properties.

v2:
  * Use {get,dest}_gpr APIs.
  * Add Zfhmin extension.

Based-on: <20211021160847.2748577-1-frank.chang@sifive.com>

Frank Chang (3):
  target/riscv: zfh: add Zfh cpu property
  target/riscv: zfh: implement zfhmin extension
  target/riscv: zfh: add Zfhmin cpu property

Kito Cheng (5):
  target/riscv: zfh: half-precision load and store
  target/riscv: zfh: half-precision computational
  target/riscv: zfh: half-precision convert and move
  target/riscv: zfh: half-precision floating-point compare
  target/riscv: zfh: half-precision floating-point classify

 target/riscv/cpu.c                        |   2 +
 target/riscv/cpu.h                        |   2 +
 target/riscv/fpu_helper.c                 | 180 ++++++++
 target/riscv/helper.h                     |  29 ++
 target/riscv/insn32.decode                |  38 ++
 target/riscv/insn_trans/trans_rvzfh.c.inc | 537 ++++++++++++++++++++++
 target/riscv/internals.h                  |  16 +
 target/riscv/translate.c                  |  20 +
 8 files changed, 824 insertions(+)
 create mode 100644 target/riscv/insn_trans/trans_rvzfh.c.inc

--
2.31.1

Comments

Alistair Francis Dec. 14, 2021, 11:05 p.m. UTC | #1
On Fri, Dec 10, 2021 at 5:44 PM <frank.chang@sifive.com> wrote:
>
> From: Frank Chang <frank.chang@sifive.com>
>
> Zfh - Half width floating point
> Zfhmin - Subset of half width floating point
>
> Zfh, Zfhmin v0.1 is now in public review period and is required by
> RVV extension:
> https://groups.google.com/a/groups.riscv.org/g/isa-dev/c/63gDCinXTwE/m/871Wm9XIBQAJ
>
> Zfh, Zfhmin can be enabled with -cpu option: Zfh=true and Zfhmin=true
> respectively.
>
> The port is available at:
> https://github.com/sifive/qemu/tree/zfh-upstream-v6
>
> Note: This patchset depends on another patchset listed in Based-on
>       section below so it is not able to be built unless the patchset
>       is applied.
>
> Changelog:
>
> v6:
>   * Rebase on riscv-to-apply.next.
>
> v5:
>   * Rebase on riscv-to-apply.next.
>
> v4:
>   * Spilt Zfh, Zfhmin cpu properties related changes into individual
>     patches.
>
> v3:
>   * Use the renamed softfloat min/max APIs: *_minimum_number()
>     and *_maximum_number().
>   * Pick softfloat min/max APIs based on CPU privilege spec version.
>   * Add braces for if statements in REQUIRE_ZFH() and
>     REQUIRE_ZFH_OR_ZFHMIN().
>   * Rearrange the positions of Zfh and Zfhmin cpu properties.
>
> v2:
>   * Use {get,dest}_gpr APIs.
>   * Add Zfhmin extension.
>
> Based-on: <20211021160847.2748577-1-frank.chang@sifive.com>
>
> Frank Chang (3):
>   target/riscv: zfh: add Zfh cpu property
>   target/riscv: zfh: implement zfhmin extension
>   target/riscv: zfh: add Zfhmin cpu property
>
> Kito Cheng (5):
>   target/riscv: zfh: half-precision load and store
>   target/riscv: zfh: half-precision computational
>   target/riscv: zfh: half-precision convert and move
>   target/riscv: zfh: half-precision floating-point compare
>   target/riscv: zfh: half-precision floating-point classify
>
>  target/riscv/cpu.c                        |   2 +
>  target/riscv/cpu.h                        |   2 +
>  target/riscv/fpu_helper.c                 | 180 ++++++++
>  target/riscv/helper.h                     |  29 ++
>  target/riscv/insn32.decode                |  38 ++
>  target/riscv/insn_trans/trans_rvzfh.c.inc | 537 ++++++++++++++++++++++
>  target/riscv/internals.h                  |  16 +
>  target/riscv/translate.c                  |  20 +
>  8 files changed, 824 insertions(+)
>  create mode 100644 target/riscv/insn_trans/trans_rvzfh.c.inc

Thanks!

Applied to riscv-to-apply.next

Alistair

>
> --
> 2.31.1
>
>