From: LIU Zhiwei <zhiwei_liu@c-sky.com> To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Cc: peter.maydell@linaro.org, richard.henderson@linaro.org, wxy194768@alibaba-inc.com, chihmin.chao@sifive.com, wenmeng_zhang@c-sky.com, Alistair.Francis@wdc.com, alex.bennee@linaro.org, LIU Zhiwei <zhiwei_liu@c-sky.com> Subject: [PATCH 05/11] riscv: Add RV64D instructions description Date: Sun, 12 Jul 2020 00:16:49 +0800 [thread overview] Message-ID: <20200711161655.2856-6-zhiwei_liu@c-sky.com> (raw) In-Reply-To: <20200711161655.2856-1-zhiwei_liu@c-sky.com> For supporting multi-precison, split all 32 fp registers into two groups. The RV64D instructions will use only the 16 fp registers selected by gfp64(). Signed-off-by: LIU Zhiwei <zhiwei_liu@c-sky.com> --- rv64.risu | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/rv64.risu b/rv64.risu index 0dcc9a1..a6fa9fc 100644 --- a/rv64.risu +++ b/rv64.risu @@ -364,3 +364,103 @@ FCVT_S_L RISCV 1101000 00010 rs1:5 rm:3 rd:5 1010011 \ FCVT_S_LU RISCV 1101000 00011 rs1:5 rm:3 rd:5 1010011 \ !constraints { greg($rs1) && gfp32($rd) && grm($rm); } + +@RV64D + +FLD RISCV imm:12 rs1:5 011 rd:5 0000111 \ +!constraints { gbase($rs1) && gfp64($rd); } \ +!memory { align(8); reg_plus_imm($rs1, sextract($imm, 12)); } + +FSD RISCV imm5:7 rs2:5 rs1:5 010 imm:5 0100111 \ +!constraints { gbase($rs1) && gfp64($rs2); } \ +!memory { align(8); reg_plus_imm($rs1, sextract($imm5 << 5 | $imm, 12)); } + +FMADD_D RISCV rs3:5 01 rs2:5 rs1:5 rm:3 rd:5 1000011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FMSUB_D RISCV rs3:5 01 rs2:5 rs1:5 rm:3 rd:5 1000111 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FNMSUB_D RISCV rs3:5 01 rs2:5 rs1:5 rm:3 rd:5 1001011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FNMADD_D RISCV rs3:5 01 rs2:5 rs1:5 rm:3 rd:5 1001111 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FADD_D RISCV 0000001 rs2:5 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FSUB_D RISCV 0000101 rs2:5 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FMUL_D RISCV 0001001 rs2:5 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FDIV_D RISCV 0001101 rs2:5 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FSQRT_D RISCV 0101101 00000 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rd) && grm($rm); } + +FSGNJ_D RISCV 0010001 rs2:5 rs1:5 000 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd); } + +FSGNJN_D RISCV 0010001 rs2:5 rs1:5 001 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd); } + +FSGNJX_D RISCV 0010001 rs2:5 rs1:5 010 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd); } + +FMIN_D RISCV 0010101 rs2:5 rs1:5 000 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd); } + +FMAX_D RISCV 0010101 rs2:5 rs1:5 001 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd); } + +FCVT_S_D RISCV 0100000 00001 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rd) && grm($rm); } + +FCVT_D_S RISCV 0100001 00000 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rd) && grm($rm); } + +FEQ_D RISCV 1010001 rs2:5 rs1:5 010 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && gfp64($rs1); } + +FLT_D RISCV 1010001 rs2:5 rs1:5 001 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && gfp64($rs1); } + +FLE_D RISCV 1010001 rs2:5 rs1:5 000 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && gfp64($rs1); } + +FCLASS_D RISCV 1110001 00000 rs1:5 001 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1); } + +FCVT_W_D RISCV 1100001 00000 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && grm($rm); } + +FCVT_WU_D RISCV 1100001 00001 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && grm($rm); } + +FCVT_D_W RISCV 1101001 00000 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rs1) && gfp64($rd) && grm($rm); } + +FCVT_D_WU RISCV 1101001 00001 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rs1) && gfp64($rd) && grm($rm); } + +FCVT_L_D RISCV 1100001 00010 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && grm($rm); } + +FCVT_LU_D RISCV 1100001 00011 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && grm($rm); } + +FCVT_D_L RISCV 1101001 00010 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rs1) && gfp64($rd) && grm($rm); } + +FCVT_D_LU RISCV 1101001 00011 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rs1) && gfp64($rd) && grm($rm); } + +FMV_D_X RISCV 1111001 00000 rs1:5 000 rd:5 1010011 \ +!constraints { greg($rs1) && gfp64($rd); } + +FMV_X_D RISCV 1110001 00000 rs1:5 000 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1); } -- 2.23.0
WARNING: multiple messages have this Message-ID (diff)
From: LIU Zhiwei <zhiwei_liu@c-sky.com> To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Cc: richard.henderson@linaro.org, Alistair.Francis@wdc.com, chihmin.chao@sifive.com, alex.bennee@linaro.org, peter.maydell@linaro.org, wenmeng_zhang@c-sky.com, wxy194768@alibaba-inc.com, LIU Zhiwei <zhiwei_liu@c-sky.com> Subject: [PATCH 05/11] riscv: Add RV64D instructions description Date: Sun, 12 Jul 2020 00:16:49 +0800 [thread overview] Message-ID: <20200711161655.2856-6-zhiwei_liu@c-sky.com> (raw) In-Reply-To: <20200711161655.2856-1-zhiwei_liu@c-sky.com> For supporting multi-precison, split all 32 fp registers into two groups. The RV64D instructions will use only the 16 fp registers selected by gfp64(). Signed-off-by: LIU Zhiwei <zhiwei_liu@c-sky.com> --- rv64.risu | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/rv64.risu b/rv64.risu index 0dcc9a1..a6fa9fc 100644 --- a/rv64.risu +++ b/rv64.risu @@ -364,3 +364,103 @@ FCVT_S_L RISCV 1101000 00010 rs1:5 rm:3 rd:5 1010011 \ FCVT_S_LU RISCV 1101000 00011 rs1:5 rm:3 rd:5 1010011 \ !constraints { greg($rs1) && gfp32($rd) && grm($rm); } + +@RV64D + +FLD RISCV imm:12 rs1:5 011 rd:5 0000111 \ +!constraints { gbase($rs1) && gfp64($rd); } \ +!memory { align(8); reg_plus_imm($rs1, sextract($imm, 12)); } + +FSD RISCV imm5:7 rs2:5 rs1:5 010 imm:5 0100111 \ +!constraints { gbase($rs1) && gfp64($rs2); } \ +!memory { align(8); reg_plus_imm($rs1, sextract($imm5 << 5 | $imm, 12)); } + +FMADD_D RISCV rs3:5 01 rs2:5 rs1:5 rm:3 rd:5 1000011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FMSUB_D RISCV rs3:5 01 rs2:5 rs1:5 rm:3 rd:5 1000111 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FNMSUB_D RISCV rs3:5 01 rs2:5 rs1:5 rm:3 rd:5 1001011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FNMADD_D RISCV rs3:5 01 rs2:5 rs1:5 rm:3 rd:5 1001111 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FADD_D RISCV 0000001 rs2:5 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FSUB_D RISCV 0000101 rs2:5 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FMUL_D RISCV 0001001 rs2:5 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FDIV_D RISCV 0001101 rs2:5 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd) && grm($rm); } + +FSQRT_D RISCV 0101101 00000 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rd) && grm($rm); } + +FSGNJ_D RISCV 0010001 rs2:5 rs1:5 000 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd); } + +FSGNJN_D RISCV 0010001 rs2:5 rs1:5 001 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd); } + +FSGNJX_D RISCV 0010001 rs2:5 rs1:5 010 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd); } + +FMIN_D RISCV 0010101 rs2:5 rs1:5 000 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd); } + +FMAX_D RISCV 0010101 rs2:5 rs1:5 001 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rs2) && gfp64($rd); } + +FCVT_S_D RISCV 0100000 00001 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rd) && grm($rm); } + +FCVT_D_S RISCV 0100001 00000 rs1:5 rm:3 rd:5 1010011 \ +!constraints { gfp64($rs1) && gfp64($rd) && grm($rm); } + +FEQ_D RISCV 1010001 rs2:5 rs1:5 010 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && gfp64($rs1); } + +FLT_D RISCV 1010001 rs2:5 rs1:5 001 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && gfp64($rs1); } + +FLE_D RISCV 1010001 rs2:5 rs1:5 000 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && gfp64($rs1); } + +FCLASS_D RISCV 1110001 00000 rs1:5 001 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1); } + +FCVT_W_D RISCV 1100001 00000 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && grm($rm); } + +FCVT_WU_D RISCV 1100001 00001 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && grm($rm); } + +FCVT_D_W RISCV 1101001 00000 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rs1) && gfp64($rd) && grm($rm); } + +FCVT_D_WU RISCV 1101001 00001 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rs1) && gfp64($rd) && grm($rm); } + +FCVT_L_D RISCV 1100001 00010 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && grm($rm); } + +FCVT_LU_D RISCV 1100001 00011 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1) && grm($rm); } + +FCVT_D_L RISCV 1101001 00010 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rs1) && gfp64($rd) && grm($rm); } + +FCVT_D_LU RISCV 1101001 00011 rs1:5 rm:3 rd:5 1010011 \ +!constraints { greg($rs1) && gfp64($rd) && grm($rm); } + +FMV_D_X RISCV 1111001 00000 rs1:5 000 rd:5 1010011 \ +!constraints { greg($rs1) && gfp64($rd); } + +FMV_X_D RISCV 1110001 00000 rs1:5 000 rd:5 1010011 \ +!constraints { greg($rd) && gfp64($rs1); } -- 2.23.0
next prev parent reply other threads:[~2020-07-11 16:24 UTC|newest] Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-07-11 16:16 [PATCH 00/11] RISC-V risu porting LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-11 16:16 ` [PATCH 01/11] riscv: Add RV64I instructions description LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-11 16:16 ` [PATCH 02/11] riscv: Add RV64M " LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-11 16:16 ` [PATCH 03/11] riscv: Add RV64A " LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-11 16:16 ` [PATCH 04/11] riscv: Add RV64F " LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei [this message] 2020-07-11 16:16 ` [PATCH 05/11] riscv: Add RV64D " LIU Zhiwei 2020-07-11 16:16 ` [PATCH 06/11] riscv: Add RV64C " LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-11 16:16 ` [PATCH 07/11] riscv: Generate payload scripts LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-11 16:16 ` [PATCH 08/11] riscv: Add standard test case LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-11 16:16 ` [PATCH 09/11] riscv: Define riscv struct reginfo LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-11 16:16 ` [PATCH 10/11] riscv: Implement payload load interfaces LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-11 16:16 ` [PATCH 11/11] riscv: Add configure script LIU Zhiwei 2020-07-11 16:16 ` LIU Zhiwei 2020-07-22 2:50 ` [PATCH 00/11] RISC-V risu porting LIU Zhiwei 2020-07-22 2:50 ` LIU Zhiwei
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200711161655.2856-6-zhiwei_liu@c-sky.com \ --to=zhiwei_liu@c-sky.com \ --cc=Alistair.Francis@wdc.com \ --cc=alex.bennee@linaro.org \ --cc=chihmin.chao@sifive.com \ --cc=peter.maydell@linaro.org \ --cc=qemu-devel@nongnu.org \ --cc=qemu-riscv@nongnu.org \ --cc=richard.henderson@linaro.org \ --cc=wenmeng_zhang@c-sky.com \ --cc=wxy194768@alibaba-inc.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.