From e77307f37e7538622d48a5a43560d60d27e318da Mon Sep 17 00:00:00 2001 From: Philipp Tomsich Date: Fri, 17 Mar 2023 00:10:56 +0100 Subject: Add (unratified) Zfa extension Zfa adds 'missing' floating-point functionality: - fli.[hsdq]: floating-point load-immediate - fminm/fmaxm.[hsdq]: IEEE 754-2019 minimum and maximum - fround(nx)?.[hsdq]: IEEE 754-2019 roundToIntegral(Exact)? - fcvtmod.w.d: ECMAScript modular float->integer conversion - move instructions for XLEN < FLEN - comparisons that support quiet NaN inputs This adds a surprisingly large number of files, as the instructions added with Zfa depend on context (e.g., .h-variants become available only if Zfh is present). --- unratified/rv32_d_zfa | 2 ++ unratified/rv64_q_zfa | 2 ++ unratified/rv_d_zfa | 8 ++++++++ unratified/rv_f_zfa | 7 +++++++ unratified/rv_q_zfa | 7 +++++++ unratified/rv_zfh_zfa | 7 +++++++ 6 files changed, 33 insertions(+) create mode 100644 unratified/rv32_d_zfa create mode 100644 unratified/rv64_q_zfa create mode 100644 unratified/rv_d_zfa create mode 100644 unratified/rv_f_zfa create mode 100644 unratified/rv_q_zfa create mode 100644 unratified/rv_zfh_zfa diff --git a/unratified/rv32_d_zfa b/unratified/rv32_d_zfa new file mode 100644 index 0000000..2b7c89f --- /dev/null +++ b/unratified/rv32_d_zfa @@ -0,0 +1,2 @@ +fmvh.x.d rd rs1 24..20=1 31..27=0x1C 14..12=0 26..25=1 6..2=0x14 1..0=3 +fmvp.d.x rd rs1 24..20=1 31..27=0x16 14..12=0 26..25=1 6..2=0x14 1..0=3 diff --git a/unratified/rv64_q_zfa b/unratified/rv64_q_zfa new file mode 100644 index 0000000..b9ec80d --- /dev/null +++ b/unratified/rv64_q_zfa @@ -0,0 +1,2 @@ +fmvh.x.q rd rs1 24..20=1 31..27=0x1C 14..12=0 26..25=3 6..2=0x14 1..0=3 +fmvp.q.x rd rs1 24..20=1 31..27=0x16 14..12=0 26..25=3 6..2=0x14 1..0=3 \ No newline at end of file diff --git a/unratified/rv_d_zfa b/unratified/rv_d_zfa new file mode 100644 index 0000000..7158eef --- /dev/null +++ b/unratified/rv_d_zfa @@ -0,0 +1,8 @@ +fli.d rd rs1 24..20=1 31..27=0x1E 14..12=0 26..25=1 6..2=0x14 1..0=3 +fminm.d rd rs1 rs2 31..27=0x05 14..12=2 26..25=1 6..2=0x14 1..0=3 +fmaxm.d rd rs1 rs2 31..27=0x05 14..12=3 26..25=1 6..2=0x14 1..0=3 +fround.d rd rs1 24..20=4 31..27=0x08 rm 26..25=1 6..2=0x14 1..0=3 +froundnx.d rd rs1 24..20=5 31..27=0x08 rm 26..25=1 6..2=0x14 1..0=3 +fcvtmod.w.d rd rs1 24..20=8 31..27=0x18 14..12=1 26..25=1 6..2=0x14 1..0=3 +fleq.d rd rs1 rs2 31..27=0x14 14..12=4 26..25=1 6..2=0x14 1..0=3 +fltq.d rd rs1 rs2 31..27=0x14 14..12=5 26..25=1 6..2=0x14 1..0=3 diff --git a/unratified/rv_f_zfa b/unratified/rv_f_zfa new file mode 100644 index 0000000..045fc27 --- /dev/null +++ b/unratified/rv_f_zfa @@ -0,0 +1,7 @@ +fli.s rd rs1 24..20=1 31..27=0x1E 14..12=0 26..25=0 6..2=0x14 1..0=3 +fminm.s rd rs1 rs2 31..27=0x05 14..12=2 26..25=0 6..2=0x14 1..0=3 +fmaxm.s rd rs1 rs2 31..27=0x05 14..12=3 26..25=0 6..2=0x14 1..0=3 +fround.s rd rs1 24..20=4 31..27=0x08 rm 26..25=0 6..2=0x14 1..0=3 +froundnx.s rd rs1 24..20=5 31..27=0x08 rm 26..25=0 6..2=0x14 1..0=3 +fleq.s rd rs1 rs2 31..27=0x14 14..12=4 26..25=0 6..2=0x14 1..0=3 +fltq.s rd rs1 rs2 31..27=0x14 14..12=5 26..25=0 6..2=0x14 1..0=3 diff --git a/unratified/rv_q_zfa b/unratified/rv_q_zfa new file mode 100644 index 0000000..da45f9d --- /dev/null +++ b/unratified/rv_q_zfa @@ -0,0 +1,7 @@ +fli.q rd rs1 24..20=1 31..27=0x1E 14..12=0 26..25=3 6..2=0x14 1..0=3 +fminm.q rd rs1 rs2 31..27=0x05 14..12=2 26..25=3 6..2=0x14 1..0=3 +fmaxm.q rd rs1 rs2 31..27=0x05 14..12=3 26..25=3 6..2=0x14 1..0=3 +fround.q rd rs1 24..20=4 31..27=0x08 rm 26..25=3 6..2=0x14 1..0=3 +froundnx.q rd rs1 24..20=5 31..27=0x08 rm 26..25=3 6..2=0x14 1..0=3 +fleq.q rd rs1 rs2 31..27=0x14 14..12=4 26..25=3 6..2=0x14 1..0=3 +fltq.q rd rs1 rs2 31..27=0x14 14..12=5 26..25=3 6..2=0x14 1..0=3 diff --git a/unratified/rv_zfh_zfa b/unratified/rv_zfh_zfa new file mode 100644 index 0000000..f92d7a9 --- /dev/null +++ b/unratified/rv_zfh_zfa @@ -0,0 +1,7 @@ +fli.h rd rs1 24..20=1 31..27=0x1E 14..12=0 26..25=2 6..2=0x14 1..0=3 +fminm.h rd rs1 rs2 31..27=0x05 14..12=2 26..25=2 6..2=0x14 1..0=3 +fmaxm.h rd rs1 rs2 31..27=0x05 14..12=3 26..25=2 6..2=0x14 1..0=3 +fround.h rd rs1 24..20=4 31..27=0x08 rm 26..25=2 6..2=0x14 1..0=3 +froundnx.h rd rs1 24..20=5 31..27=0x08 rm 26..25=2 6..2=0x14 1..0=3 +fleq.h rd rs1 rs2 31..27=0x14 14..12=4 26..25=2 6..2=0x14 1..0=3 +fltq.h rd rs1 rs2 31..27=0x14 14..12=5 26..25=2 6..2=0x14 1..0=3 -- cgit v1.1