RISC-V: Add floating-point arithmetic instructions for T-Head VECTOR vendor extension

T-Head has a range of vendor-specific instructions. Therefore
it makes sense to group them into smaller chunks in form of
vendor extensions.

This patch adds floating-point arithmetic instructions for the
"XTheadVector" extension. The 'th' prefix and the
"XTheadVector" extension are documented in a PR for the
RISC-V toolchain conventions ([1]).

[1] https://github.com/riscv-non-isa/riscv-toolchain-conventions/pull/19

Co-developed-by: Lifang Xia <lifang_xia@linux.alibaba.com>
Co-developed-by: Christoph Müllner <christoph.muellner@vrull.eu>

gas/ChangeLog:

	* testsuite/gas/riscv/x-thead-vector.d: Add tests for
	floating-point arithmetic instructions.
	* testsuite/gas/riscv/x-thead-vector.s: Likewise.

include/ChangeLog:

	* opcode/riscv-opc.h (MATCH_TH_VFSQRTV): New.

opcodes/ChangeLog:

	* riscv-opc.c: Likewise.
This commit is contained in:
Jin Ma
2023-11-18 15:07:39 +08:00
committed by Nelson Chu
parent 9a51da2636
commit 1ba39b6fe5
4 changed files with 480 additions and 0 deletions
+36
View File
@@ -2909,6 +2909,42 @@
#define MASK_TH_VASUBVX 0xfc00707f
#define MATCH_TH_VWSMACCSUVV 0xf8000057
#define MASK_TH_VWSMACCSUVV 0xfc00707f
#define MATCH_TH_VFSQRTV 0x8c001057
#define MASK_TH_VFSQRTV 0xfc0ff07f
#define MATCH_TH_VMFORDVV 0x68001057
#define MASK_TH_VMFORDVV 0xfc00707f
#define MATCH_TH_VMFORDVF 0x68005057
#define MASK_TH_VMFORDVF 0xfc00707f
#define MATCH_TH_VFCLASSV 0x8c081057
#define MASK_TH_VFCLASSV 0xfc0ff07f
#define MATCH_TH_VFCVTXUFV 0x88001057
#define MASK_TH_VFCVTXUFV 0xfc0ff07f
#define MATCH_TH_VFCVTXFV 0x88009057
#define MASK_TH_VFCVTXFV 0xfc0ff07f
#define MATCH_TH_VFCVTFXUV 0x88011057
#define MASK_TH_VFCVTFXUV 0xfc0ff07f
#define MATCH_TH_VFCVTFXV 0x88019057
#define MASK_TH_VFCVTFXV 0xfc0ff07f
#define MATCH_TH_VFWCVTXUFV 0x88041057
#define MASK_TH_VFWCVTXUFV 0xfc0ff07f
#define MATCH_TH_VFWCVTXFV 0x88049057
#define MASK_TH_VFWCVTXFV 0xfc0ff07f
#define MATCH_TH_VFWCVTFXUV 0x88051057
#define MASK_TH_VFWCVTFXUV 0xfc0ff07f
#define MATCH_TH_VFWCVTFXV 0x88059057
#define MASK_TH_VFWCVTFXV 0xfc0ff07f
#define MATCH_TH_VFWCVTFFV 0x88061057
#define MASK_TH_VFWCVTFFV 0xfc0ff07f
#define MATCH_TH_VFNCVTXUFV 0x88081057
#define MASK_TH_VFNCVTXUFV 0xfc0ff07f
#define MATCH_TH_VFNCVTXFV 0x88089057
#define MASK_TH_VFNCVTXFV 0xfc0ff07f
#define MATCH_TH_VFNCVTFXUV 0x88091057
#define MASK_TH_VFNCVTFXUV 0xfc0ff07f
#define MATCH_TH_VFNCVTFXV 0x88099057
#define MASK_TH_VFNCVTFXV 0xfc0ff07f
#define MATCH_TH_VFNCVTFFV 0x880a1057
#define MASK_TH_VFNCVTFFV 0xfc0ff07f
/* Vendor-specific (Ventana Microsystems) XVentanaCondOps instructions */
#define MATCH_VT_MASKC 0x607b
#define MASK_VT_MASKC 0xfe00707f