aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorPalmer Dabbelt <palmer@dabbelt.com>2015-09-17 14:32:57 -0700
committerPalmer Dabbelt <palmer@dabbelt.com>2015-09-17 14:32:57 -0700
commit562a0c1d17ae1bb183f5bd16e48ed6c17c185892 (patch)
tree2d4d7058913320529a23ade6f5f653c6778dd935 /binutils
parentdf81277a591ee8baa6ee26f09761851cd5e2287e (diff)
downloadriscv-gnu-toolchain-562a0c1d17ae1bb183f5bd16e48ed6c17c185892.zip
riscv-gnu-toolchain-562a0c1d17ae1bb183f5bd16e48ed6c17c185892.tar.gz
riscv-gnu-toolchain-562a0c1d17ae1bb183f5bd16e48ed6c17c185892.tar.bz2
Remove Hwacha from binutils
Diffstat (limited to 'binutils')
-rw-r--r--binutils/gas/config/tc-riscv.c120
-rw-r--r--binutils/include/elf/riscv.h2
-rw-r--r--binutils/include/opcode/riscv.h4
-rw-r--r--binutils/opcodes/riscv-dis.c66
-rw-r--r--binutils/opcodes/riscv-opc.c201
5 files changed, 8 insertions, 385 deletions
diff --git a/binutils/gas/config/tc-riscv.c b/binutils/gas/config/tc-riscv.c
index cde9e10..f45a4a1 100644
--- a/binutils/gas/config/tc-riscv.c
+++ b/binutils/gas/config/tc-riscv.c
@@ -417,8 +417,6 @@ enum reg_class {
RCLASS_GPR,
RCLASS_FPR,
RCLASS_CSR,
- RCLASS_VEC_GPR,
- RCLASS_VEC_FPR,
RCLASS_MAX
};
@@ -525,37 +523,14 @@ validate_riscv_insn (const struct riscv_opcode *opc)
{
/* Xcustom */
case '^':
- switch (c = *p++)
- {
- case 'd': USE_BITS (OP_MASK_RD, OP_SH_RD); break;
- case 's': USE_BITS (OP_MASK_RS1, OP_SH_RS1); break;
- case 't': USE_BITS (OP_MASK_RS2, OP_SH_RS2); break;
- case 'j': USE_BITS (OP_MASK_CUSTOM_IMM, OP_SH_CUSTOM_IMM); break;
- }
- break;
- /* Xhwacha */
- case '#':
- switch (c = *p++)
- {
- case 'g': USE_BITS (OP_MASK_IMMNGPR, OP_SH_IMMNGPR); break;
- case 'f': USE_BITS (OP_MASK_IMMNFPR, OP_SH_IMMNFPR); break;
- case 'n': USE_BITS (OP_MASK_IMMSEGNELM, OP_SH_IMMSEGNELM); break;
- case 'd': USE_BITS (OP_MASK_VRD, OP_SH_VRD); break;
- case 's': USE_BITS (OP_MASK_VRS, OP_SH_VRS); break;
- case 't': USE_BITS (OP_MASK_VRT, OP_SH_VRT); break;
- case 'r': USE_BITS (OP_MASK_VRR, OP_SH_VRR); break;
- case 'D': USE_BITS (OP_MASK_VFD, OP_SH_VFD); break;
- case 'S': USE_BITS (OP_MASK_VFS, OP_SH_VFS); break;
- case 'T': USE_BITS (OP_MASK_VFT, OP_SH_VFT); break;
- case 'R': USE_BITS (OP_MASK_VFR, OP_SH_VFR); break;
-
- default:
- as_bad (_("internal: bad RISC-V opcode (unknown extension operand "
- "type `#%c'): %s %s"),
- c, opc->name, opc->args);
- return 0;
- }
- break;
+ switch (c = *p++)
+ {
+ case 'd': USE_BITS (OP_MASK_RD, OP_SH_RD); break;
+ case 's': USE_BITS (OP_MASK_RS1, OP_SH_RS1); break;
+ case 't': USE_BITS (OP_MASK_RS2, OP_SH_RS2); break;
+ case 'j': USE_BITS (OP_MASK_CUSTOM_IMM, OP_SH_CUSTOM_IMM); break;
+ }
+ break;
case 'C': /* RVC */
switch (c = *p++)
{
@@ -696,8 +671,6 @@ md_begin (void)
hash_reg_names (RCLASS_GPR, riscv_gpr_names_abi, NGPR);
hash_reg_names (RCLASS_FPR, riscv_fpr_names_numeric, NFPR);
hash_reg_names (RCLASS_FPR, riscv_fpr_names_abi, NFPR);
- hash_reg_names (RCLASS_VEC_GPR, riscv_vec_gpr_names, NVGPR);
- hash_reg_names (RCLASS_VEC_FPR, riscv_vec_fpr_names, NVFPR);
#define DECLARE_CSR(name, num) hash_reg_name (RCLASS_CSR, #name, num);
#include "opcode/riscv-opc.h"
@@ -1329,83 +1302,6 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
continue;
}
- /* Xhwacha */
- case '#':
- switch (*++args)
- {
- case 'g':
- my_getExpression (imm_expr, s);
- /* check_absolute_expr (ip, &imm_expr); */
- if ((unsigned long) imm_expr->X_add_number > 32)
- as_warn (_("Improper ngpr amount (%lu)"),
- (unsigned long) imm_expr->X_add_number);
- INSERT_OPERAND (IMMNGPR, *ip, imm_expr->X_add_number);
- imm_expr->X_op = O_absent;
- s = expr_end;
- continue;
- case 'f':
- my_getExpression (imm_expr, s);
- /* check_absolute_expr (ip, &imm_expr); */
- if ((unsigned long) imm_expr->X_add_number > 32)
- as_warn (_("Improper nfpr amount (%lu)"),
- (unsigned long) imm_expr->X_add_number);
- INSERT_OPERAND (IMMNFPR, *ip, imm_expr->X_add_number);
- imm_expr->X_op = O_absent;
- s = expr_end;
- continue;
- case 'n':
- my_getExpression (imm_expr, s);
- /* check_absolute_expr (ip, &imm_expr); */
- if ((unsigned long) imm_expr->X_add_number > 8)
- as_warn (_("Improper nelm amount (%lu)"),
- (unsigned long) imm_expr->X_add_number);
- INSERT_OPERAND (IMMSEGNELM, *ip, imm_expr->X_add_number - 1);
- imm_expr->X_op = O_absent;
- s = expr_end;
- continue;
- case 'd':
- if (!reg_lookup (&s, RCLASS_VEC_GPR, &regno))
- as_bad (_("Invalid vector register"));
- INSERT_OPERAND (VRD, *ip, regno);
- continue;
- case 's':
- if (!reg_lookup (&s, RCLASS_VEC_GPR, &regno))
- as_bad (_("Invalid vector register"));
- INSERT_OPERAND (VRS, *ip, regno);
- continue;
- case 't':
- if (!reg_lookup (&s, RCLASS_VEC_GPR, &regno))
- as_bad (_("Invalid vector register"));
- INSERT_OPERAND (VRT, *ip, regno);
- continue;
- case 'r':
- if (!reg_lookup (&s, RCLASS_VEC_GPR, &regno))
- as_bad (_("Invalid vector register"));
- INSERT_OPERAND (VRR, *ip, regno);
- continue;
- case 'D':
- if (!reg_lookup (&s, RCLASS_VEC_FPR, &regno))
- as_bad (_("Invalid vector register"));
- INSERT_OPERAND (VFD, *ip, regno);
- continue;
- case 'S':
- if (!reg_lookup (&s, RCLASS_VEC_FPR, &regno))
- as_bad (_("Invalid vector register"));
- INSERT_OPERAND (VFS, *ip, regno);
- continue;
- case 'T':
- if (!reg_lookup (&s, RCLASS_VEC_FPR, &regno))
- as_bad (_("Invalid vector register"));
- INSERT_OPERAND (VFT, *ip, regno);
- continue;
- case 'R':
- if (!reg_lookup (&s, RCLASS_VEC_FPR, &regno))
- as_bad (_("Invalid vector register"));
- INSERT_OPERAND (VFR, *ip, regno);
- continue;
- }
- break;
-
case 'C': /* RVC */
switch (*++args)
{
diff --git a/binutils/include/elf/riscv.h b/binutils/include/elf/riscv.h
index cb9ebea..dd72740 100644
--- a/binutils/include/elf/riscv.h
+++ b/binutils/include/elf/riscv.h
@@ -88,7 +88,6 @@ END_RELOC_NUMBERS (R_RISCV_max)
#define EF_RISCV_EXT_MASK 0xffff
#define EF_RISCV_EXT_SH 16
#define E_RISCV_EXT_Xcustom 0x0000
-#define E_RISCV_EXT_Xhwacha 0x0001
#define E_RISCV_EXT_RESERVED 0xffff
#define EF_GET_RISCV_EXT(x) \
@@ -111,7 +110,6 @@ struct riscv_extension_entry
static const struct riscv_extension_entry riscv_extension_map[] =
{
{"Xcustom", E_RISCV_EXT_Xcustom},
- {"Xhwacha", E_RISCV_EXT_Xhwacha},
};
/* Given an extension name, return an elf flag. */
diff --git a/binutils/include/opcode/riscv.h b/binutils/include/opcode/riscv.h
index d19745e..cf5afe7 100644
--- a/binutils/include/opcode/riscv.h
+++ b/binutils/include/opcode/riscv.h
@@ -250,8 +250,6 @@ static const char * const riscv_pred_succ[16] = {
#define NGPR 32
#define NFPR 32
-#define NVGPR 32
-#define NVFPR 32
#define RISCV_JUMP_BITS RISCV_BIGIMM_BITS
#define RISCV_JUMP_ALIGN_BITS 1
@@ -352,8 +350,6 @@ extern const char * const riscv_gpr_names_numeric[NGPR];
extern const char * const riscv_gpr_names_abi[NGPR];
extern const char * const riscv_fpr_names_numeric[NFPR];
extern const char * const riscv_fpr_names_abi[NFPR];
-extern const char * const riscv_vec_gpr_names[NVGPR];
-extern const char * const riscv_vec_fpr_names[NVFPR];
extern const struct riscv_opcode riscv_builtin_opcodes[];
extern const int bfd_riscv_num_builtin_opcodes;
diff --git a/binutils/opcodes/riscv-dis.c b/binutils/opcodes/riscv-dis.c
index 581e4f9..f145b67 100644
--- a/binutils/opcodes/riscv-dis.c
+++ b/binutils/opcodes/riscv-dis.c
@@ -148,72 +148,6 @@ print_insn_args (const char *d, insn_t l, bfd_vma pc, disassemble_info *info)
}
break;
- /* Xhwacha */
- case '#':
- switch ( *++d ) {
- case 'g':
- (*info->fprintf_func)
- ( info->stream, "%d",
- (int)((l >> OP_SH_IMMNGPR) & OP_MASK_IMMNGPR));
- break;
- case 'f':
- (*info->fprintf_func)
- ( info->stream, "%d",
- (int)((l >> OP_SH_IMMNFPR) & OP_MASK_IMMNFPR));
- break;
- case 'p':
- (*info->fprintf_func)
- ( info->stream, "%d",
- (int)((l >> OP_SH_CUSTOM_IMM) & OP_MASK_CUSTOM_IMM));
- break;
- case 'n':
- (*info->fprintf_func)
- ( info->stream, "%d",
- (int)(((l >> OP_SH_IMMSEGNELM) & OP_MASK_IMMSEGNELM) + 1));
- break;
- case 'd':
- (*info->fprintf_func)
- ( info->stream, "%s",
- riscv_vec_gpr_names[(l >> OP_SH_VRD) & OP_MASK_VRD]);
- break;
- case 's':
- (*info->fprintf_func)
- ( info->stream, "%s",
- riscv_vec_gpr_names[(l >> OP_SH_VRS) & OP_MASK_VRS]);
- break;
- case 't':
- (*info->fprintf_func)
- ( info->stream, "%s",
- riscv_vec_gpr_names[(l >> OP_SH_VRT) & OP_MASK_VRT]);
- break;
- case 'r':
- (*info->fprintf_func)
- ( info->stream, "%s",
- riscv_vec_gpr_names[(l >> OP_SH_VRR) & OP_MASK_VRR]);
- break;
- case 'D':
- (*info->fprintf_func)
- ( info->stream, "%s",
- riscv_vec_fpr_names[(l >> OP_SH_VFD) & OP_MASK_VFD]);
- break;
- case 'S':
- (*info->fprintf_func)
- ( info->stream, "%s",
- riscv_vec_fpr_names[(l >> OP_SH_VFS) & OP_MASK_VFS]);
- break;
- case 'T':
- (*info->fprintf_func)
- ( info->stream, "%s",
- riscv_vec_fpr_names[(l >> OP_SH_VFT) & OP_MASK_VFT]);
- break;
- case 'R':
- (*info->fprintf_func)
- ( info->stream, "%s",
- riscv_vec_fpr_names[(l >> OP_SH_VFR) & OP_MASK_VFR]);
- break;
- }
- break;
-
case 'C': /* RVC */
switch (*++d)
{
diff --git a/binutils/opcodes/riscv-opc.c b/binutils/opcodes/riscv-opc.c
index 83b84a2..faab646 100644
--- a/binutils/opcodes/riscv-opc.c
+++ b/binutils/opcodes/riscv-opc.c
@@ -56,22 +56,6 @@ const char * const riscv_fpr_names_abi[32] = {
"fs8", "fs9", "fs10", "fs11", "ft8", "ft9", "ft10", "ft11"
};
-const char * const riscv_vec_gpr_names[32] =
-{
- "vx0", "vx1", "vx2", "vx3", "vx4", "vx5", "vx6", "vx7",
- "vx8", "vx9", "vx10", "vx11", "vx12", "vx13", "vx14", "vx15",
- "vx16", "vx17", "vx18", "vx19", "vx20", "vx21", "vx22", "vx23",
- "vx24", "vx25", "vx26", "vx27", "vx28", "vx29", "vx30", "vx31"
-};
-
-const char * const riscv_vec_fpr_names[32] =
-{
- "vf0", "vf1", "vf2", "vf3", "vf4", "vf5", "vf6", "vf7",
- "vf8", "vf9", "vf10", "vf11", "vf12", "vf13", "vf14", "vf15",
- "vf16", "vf17", "vf18", "vf19", "vf20", "vf21", "vf22", "vf23",
- "vf24", "vf25", "vf26", "vf27", "vf28", "vf29", "vf30", "vf31"
-};
-
/* The order of overloaded instructions matters. Label arguments and
register arguments look the same. Instructions that can have either
for arguments must apear in the correct order in this table for the
@@ -599,60 +583,6 @@ const struct riscv_opcode riscv_builtin_opcodes[] =
{"sfence.vm", "I", "s", MATCH_SFENCE_VM, MASK_SFENCE_VM, match_opcode, RD_xs1 },
{"wfi", "I", "", MATCH_WFI, MASK_WFI, match_opcode, 0 },
-/* Half-precision floating-point instruction subset */
-{"flh", "Xhwacha", "D,o(s)", MATCH_FLH, MASK_FLH, match_opcode, WR_fd|RD_xs1 },
-{"fsh", "Xhwacha", "T,q(s)", MATCH_FSH, MASK_FSH, match_opcode, RD_xs1|RD_fs2 },
-{"fsgnj.h", "Xhwacha", "D,S,T", MATCH_FSGNJ_H, MASK_FSGNJ_H, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fsgnjn.h", "Xhwacha", "D,S,T", MATCH_FSGNJN_H, MASK_FSGNJN_H, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fsgnjx.h", "Xhwacha", "D,S,T", MATCH_FSGNJX_H, MASK_FSGNJX_H, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fadd.h", "Xhwacha", "D,S,T", MATCH_FADD_H | MASK_RM, MASK_FADD_H | MASK_RM, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fadd.h", "Xhwacha", "D,S,T,m", MATCH_FADD_H, MASK_FADD_H, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fsub.h", "Xhwacha", "D,S,T", MATCH_FSUB_H | MASK_RM, MASK_FSUB_H | MASK_RM, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fsub.h", "Xhwacha", "D,S,T,m", MATCH_FSUB_H, MASK_FSUB_H, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fmul.h", "Xhwacha", "D,S,T", MATCH_FMUL_H | MASK_RM, MASK_FMUL_H | MASK_RM, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fmul.h", "Xhwacha", "D,S,T,m", MATCH_FMUL_H, MASK_FMUL_H, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fdiv.h", "Xhwacha", "D,S,T", MATCH_FDIV_H | MASK_RM, MASK_FDIV_H | MASK_RM, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fdiv.h", "Xhwacha", "D,S,T,m", MATCH_FDIV_H, MASK_FDIV_H, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fsqrt.h", "Xhwacha", "D,S", MATCH_FSQRT_H | MASK_RM, MASK_FSQRT_H | MASK_RM, match_opcode, WR_fd|RD_fs1 },
-{"fsqrt.h", "Xhwacha", "D,S,m", MATCH_FSQRT_H, MASK_FSQRT_H, match_opcode, WR_fd|RD_fs1 },
-{"fmin.h", "Xhwacha", "D,S,T", MATCH_FMIN_H, MASK_FMIN_H, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fmax.h", "Xhwacha", "D,S,T", MATCH_FMAX_H, MASK_FMAX_H, match_opcode, WR_fd|RD_fs1|RD_fs2 },
-{"fmadd.h", "Xhwacha", "D,S,T,R", MATCH_FMADD_H | MASK_RM, MASK_FMADD_H | MASK_RM, match_opcode, WR_fd|RD_fs1|RD_fs2|RD_fs3 },
-{"fmadd.h", "Xhwacha", "D,S,T,R,m", MATCH_FMADD_H, MASK_FMADD_H, match_opcode, WR_fd|RD_fs1|RD_fs2|RD_fs3 },
-{"fnmadd.h", "Xhwacha", "D,S,T,R", MATCH_FNMADD_H | MASK_RM, MASK_FNMADD_H | MASK_RM, match_opcode, WR_fd|RD_fs1|RD_fs2|RD_fs3 },
-{"fnmadd.h", "Xhwacha", "D,S,T,R,m", MATCH_FNMADD_H, MASK_FNMADD_H, match_opcode, WR_fd|RD_fs1|RD_fs2|RD_fs3 },
-{"fmsub.h", "Xhwacha", "D,S,T,R", MATCH_FMSUB_H | MASK_RM, MASK_FMSUB_H | MASK_RM, match_opcode, WR_fd|RD_fs1|RD_fs2|RD_fs3 },
-{"fmsub.h", "Xhwacha", "D,S,T,R,m", MATCH_FMSUB_H, MASK_FMSUB_H, match_opcode, WR_fd|RD_fs1|RD_fs2|RD_fs3 },
-{"fnmsub.h", "Xhwacha", "D,S,T,R", MATCH_FNMSUB_H | MASK_RM, MASK_FNMSUB_H | MASK_RM, match_opcode, WR_fd|RD_fs1|RD_fs2|RD_fs3 },
-{"fnmsub.h", "Xhwacha", "D,S,T,R,m", MATCH_FNMSUB_H, MASK_FNMSUB_H, match_opcode, WR_fd|RD_fs1|RD_fs2|RD_fs3 },
-{"fcvt.s.h", "Xhwacha", "D,S", MATCH_FCVT_S_H, MASK_FCVT_S_H | MASK_RM, match_opcode, WR_fd|RD_fs1 },
-{"fcvt.h.s", "Xhwacha", "D,S", MATCH_FCVT_H_S | MASK_RM, MASK_FCVT_H_S | MASK_RM, match_opcode, WR_fd|RD_fs1 },
-{"fcvt.h.s", "Xhwacha", "D,S,m", MATCH_FCVT_H_S, MASK_FCVT_H_S, match_opcode, WR_fd|RD_fs1 },
-{"fcvt.d.h", "Xhwacha", "D,S", MATCH_FCVT_D_H, MASK_FCVT_D_H | MASK_RM, match_opcode, WR_fd|RD_fs1 },
-{"fcvt.h.d", "Xhwacha", "D,S", MATCH_FCVT_H_D | MASK_RM, MASK_FCVT_H_D | MASK_RM, match_opcode, WR_fd|RD_fs1 },
-{"fcvt.h.d", "Xhwacha", "D,S,m", MATCH_FCVT_H_D, MASK_FCVT_H_D, match_opcode, WR_fd|RD_fs1 },
-{"feq.h", "Xhwacha", "d,S,T", MATCH_FEQ_H, MASK_FEQ_H, match_opcode, WR_xd|RD_fs1|RD_fs2 },
-{"flt.h", "Xhwacha", "d,S,T", MATCH_FLT_H, MASK_FLT_H, match_opcode, WR_xd|RD_fs1|RD_fs2 },
-{"fle.h", "Xhwacha", "d,S,T", MATCH_FLE_H, MASK_FLE_H, match_opcode, WR_xd|RD_fs1|RD_fs2 },
-{"fgt.h", "Xhwacha", "d,T,S", MATCH_FLT_H, MASK_FLT_H, match_opcode, WR_xd|RD_fs1|RD_fs2 },
-{"fge.h", "Xhwacha", "d,T,S", MATCH_FLE_H, MASK_FLE_H, match_opcode, WR_xd|RD_fs1|RD_fs2 },
-{"fmv.x.h", "Xhwacha", "d,S", MATCH_FMV_X_H, MASK_FMV_X_H, match_opcode, WR_xd|RD_fs1 },
-{"fmv.h.x", "Xhwacha", "D,s", MATCH_FMV_H_X, MASK_FMV_H_X, match_opcode, WR_fd|RD_xs1 },
-{"fcvt.w.h", "Xhwacha", "d,S", MATCH_FCVT_W_H | MASK_RM, MASK_FCVT_W_H | MASK_RM, match_opcode, WR_xd|RD_fs1 },
-{"fcvt.w.h", "Xhwacha", "d,S,m", MATCH_FCVT_W_H, MASK_FCVT_W_H, match_opcode, WR_xd|RD_fs1 },
-{"fcvt.wu.h", "Xhwacha", "d,S", MATCH_FCVT_WU_H | MASK_RM, MASK_FCVT_WU_H | MASK_RM, match_opcode, WR_xd|RD_fs1 },
-{"fcvt.wu.h", "Xhwacha", "d,S,m", MATCH_FCVT_WU_H, MASK_FCVT_WU_H, match_opcode, WR_xd|RD_fs1 },
-{"fcvt.h.w", "Xhwacha", "D,s", MATCH_FCVT_H_W, MASK_FCVT_H_W | MASK_RM, match_opcode, WR_fd|RD_xs1 },
-{"fcvt.h.wu", "Xhwacha", "D,s", MATCH_FCVT_H_WU, MASK_FCVT_H_WU | MASK_RM, match_opcode, WR_fd|RD_xs1 },
-{"fcvt.l.h", "Xhwacha", "d,S", MATCH_FCVT_L_H | MASK_RM, MASK_FCVT_L_H | MASK_RM, match_opcode, WR_xd|RD_fs1 },
-{"fcvt.l.h", "Xhwacha", "d,S,m", MATCH_FCVT_L_H, MASK_FCVT_L_H, match_opcode, WR_xd|RD_fs1 },
-{"fcvt.lu.h", "Xhwacha", "d,S", MATCH_FCVT_LU_H | MASK_RM, MASK_FCVT_LU_H | MASK_RM, match_opcode, WR_xd|RD_fs1 },
-{"fcvt.lu.h", "Xhwacha", "d,S,m", MATCH_FCVT_LU_H, MASK_FCVT_LU_H, match_opcode, WR_xd|RD_fs1 },
-{"fcvt.h.l", "Xhwacha", "D,s", MATCH_FCVT_H_L | MASK_RM, MASK_FCVT_H_L | MASK_RM, match_opcode, WR_fd|RD_xs1 },
-{"fcvt.h.l", "Xhwacha", "D,s,m", MATCH_FCVT_H_L, MASK_FCVT_H_L, match_opcode, WR_fd|RD_xs1 },
-{"fcvt.h.lu", "Xhwacha", "D,s", MATCH_FCVT_H_LU | MASK_RM, MASK_FCVT_H_L | MASK_RM, match_opcode, WR_fd|RD_xs1 },
-{"fcvt.h.lu", "Xhwacha", "D,s,m", MATCH_FCVT_H_LU, MASK_FCVT_H_LU, match_opcode, WR_fd|RD_xs1 },
-
/* Rocket Custom Coprocessor extension */
{"custom0", "Xcustom", "d,s,t,^j", MATCH_CUSTOM0_RD_RS1_RS2, MASK_CUSTOM0_RD_RS1_RS2, match_opcode, 0},
{"custom0", "Xcustom", "d,s,^t,^j", MATCH_CUSTOM0_RD_RS1, MASK_CUSTOM0_RD_RS1, match_opcode, 0},
@@ -678,137 +608,6 @@ const struct riscv_opcode riscv_builtin_opcodes[] =
{"custom3", "Xcustom", "^d,s,t,^j", MATCH_CUSTOM3_RS1_RS2, MASK_CUSTOM3_RS1_RS2, match_opcode, 0},
{"custom3", "Xcustom", "^d,s,^t,^j", MATCH_CUSTOM3_RS1, MASK_CUSTOM3_RS1, match_opcode, 0},
{"custom3", "Xcustom", "^d,^s,^t,^j", MATCH_CUSTOM3, MASK_CUSTOM3, match_opcode, 0},
-
-/* Xhwacha extension */
-{"stop", "Xhwacha", "", MATCH_STOP, MASK_STOP, match_opcode, 0},
-{"utidx", "Xhwacha", "d", MATCH_UTIDX, MASK_UTIDX, match_opcode, WR_xd},
-{"movz", "Xhwacha", "d,s,t", MATCH_MOVZ, MASK_MOVZ, match_opcode, WR_xd|RD_xs1|RD_xs2},
-{"movn", "Xhwacha", "d,s,t", MATCH_MOVN, MASK_MOVN, match_opcode, WR_xd|RD_xs1|RD_xs2},
-{"fmovz", "Xhwacha", "D,s,T", MATCH_FMOVZ, MASK_FMOVZ, match_opcode, WR_fd|RD_xs1|RD_fs2},
-{"fmovn", "Xhwacha", "D,s,T", MATCH_FMOVN, MASK_FMOVN, match_opcode, WR_fd|RD_xs1|RD_fs2},
-
-/* unit stride */
-/* xloads */
-{"vld", "Xhwacha", "#d,s", MATCH_VLD, MASK_VLD, match_opcode, 0},
-{"vlw", "Xhwacha", "#d,s", MATCH_VLW, MASK_VLW, match_opcode, 0},
-{"vlwu", "Xhwacha", "#d,s", MATCH_VLWU, MASK_VLWU, match_opcode, 0},
-{"vlh", "Xhwacha", "#d,s", MATCH_VLH, MASK_VLH, match_opcode, 0},
-{"vlhu", "Xhwacha", "#d,s", MATCH_VLHU, MASK_VLHU, match_opcode, 0},
-{"vlb", "Xhwacha", "#d,s", MATCH_VLB, MASK_VLB, match_opcode, 0},
-{"vlbu", "Xhwacha", "#d,s", MATCH_VLBU, MASK_VLBU, match_opcode, 0},
-/* floads */
-{"vfld", "Xhwacha", "#D,s", MATCH_VFLD, MASK_VFLD, match_opcode, 0},
-{"vflw", "Xhwacha", "#D,s", MATCH_VFLW, MASK_VFLW, match_opcode, 0},
-
-/* stride */
-/* xloads */
-{"vlstd", "Xhwacha", "#d,s,t", MATCH_VLSTD, MASK_VLSTD, match_opcode, 0},
-{"vlstw", "Xhwacha", "#d,s,t", MATCH_VLSTW, MASK_VLSTW, match_opcode, 0},
-{"vlstwu", "Xhwacha", "#d,s,t", MATCH_VLSTWU, MASK_VLSTWU, match_opcode, 0},
-{"vlsth", "Xhwacha", "#d,s,t", MATCH_VLSTH, MASK_VLSTH, match_opcode, 0},
-{"vlsthu", "Xhwacha", "#d,s,t", MATCH_VLSTHU, MASK_VLSTHU, match_opcode, 0},
-{"vlstb", "Xhwacha", "#d,s,t", MATCH_VLSTB, MASK_VLSTB, match_opcode, 0},
-{"vlstbu", "Xhwacha", "#d,s,t", MATCH_VLSTBU, MASK_VLSTBU, match_opcode, 0},
-/* floads */
-{"vflstd", "Xhwacha", "#D,s,t", MATCH_VFLSTD, MASK_VFLSTD, match_opcode, 0},
-{"vflstw", "Xhwacha", "#D,s,t", MATCH_VFLSTW, MASK_VFLSTW, match_opcode, 0},
-
-/* segment */
-/* xloads */
-{"vlsegd", "Xhwacha", "#d,s,#n", MATCH_VLSEGD, MASK_VLSEGD, match_opcode, 0},
-{"vlsegw", "Xhwacha", "#d,s,#n", MATCH_VLSEGW, MASK_VLSEGW, match_opcode, 0},
-{"vlsegwu", "Xhwacha", "#d,s,#n", MATCH_VLSEGWU, MASK_VLSEGWU, match_opcode, 0},
-{"vlsegh", "Xhwacha", "#d,s,#n", MATCH_VLSEGH, MASK_VLSEGH, match_opcode, 0},
-{"vlseghu", "Xhwacha", "#d,s,#n", MATCH_VLSEGHU, MASK_VLSEGHU, match_opcode, 0},
-{"vlsegb", "Xhwacha", "#d,s,#n", MATCH_VLSEGB, MASK_VLSEGB, match_opcode, 0},
-{"vlsegbu", "Xhwacha", "#d,s,#n", MATCH_VLSEGBU, MASK_VLSEGBU, match_opcode, 0},
-/* floads */
-{"vflsegd", "Xhwacha", "#D,s,#n", MATCH_VFLSEGD, MASK_VFLSEGD, match_opcode, 0},
-{"vflsegw", "Xhwacha", "#D,s,#n", MATCH_VFLSEGW, MASK_VFLSEGW, match_opcode, 0},
-
-/* stride segment */
-/* xloads */
-{"vlsegstd", "Xhwacha", "#d,s,t,#n", MATCH_VLSEGSTD, MASK_VLSEGSTD, match_opcode, 0},
-{"vlsegstw", "Xhwacha", "#d,s,t,#n", MATCH_VLSEGSTW, MASK_VLSEGSTW, match_opcode, 0},
-{"vlsegstwu", "Xhwacha", "#d,s,t,#n", MATCH_VLSEGSTWU, MASK_VLSEGSTWU, match_opcode, 0},
-{"vlsegsth", "Xhwacha", "#d,s,t,#n", MATCH_VLSEGSTH, MASK_VLSEGSTH, match_opcode, 0},
-{"vlsegsthu", "Xhwacha", "#d,s,t,#n", MATCH_VLSEGSTHU, MASK_VLSEGSTHU, match_opcode, 0},
-{"vlsegstb", "Xhwacha", "#d,s,t,#n", MATCH_VLSEGSTB, MASK_VLSEGSTB, match_opcode, 0},
-{"vlsegstbu", "Xhwacha", "#d,s,t,#n", MATCH_VLSEGSTBU, MASK_VLSEGSTBU, match_opcode, 0},
-/* floads */
-{"vflsegstd", "Xhwacha", "#D,s,t,#n", MATCH_VFLSEGSTD, MASK_VFLSEGSTD, match_opcode, 0},
-{"vflsegstw", "Xhwacha", "#D,s,t,#n", MATCH_VFLSEGSTW, MASK_VFLSEGSTW, match_opcode, 0},
-
-/* unit stride */
-/* xstores */
-{"vsd", "Xhwacha", "#d,s", MATCH_VSD, MASK_VSD, match_opcode, 0},
-{"vsw", "Xhwacha", "#d,s", MATCH_VSW, MASK_VSW, match_opcode, 0},
-{"vsh", "Xhwacha", "#d,s", MATCH_VSH, MASK_VSH, match_opcode, 0},
-{"vsb", "Xhwacha", "#d,s", MATCH_VSB, MASK_VSB, match_opcode, 0},
-/* fstores */
-{"vfsd", "Xhwacha", "#D,s", MATCH_VFSD, MASK_VFSD, match_opcode, 0},
-{"vfsw", "Xhwacha", "#D,s", MATCH_VFSW, MASK_VFSW, match_opcode, 0},
-
-/* stride */
-/* xstores */
-{"vsstd", "Xhwacha", "#d,s,t", MATCH_VSSTD, MASK_VSSTD, match_opcode, 0},
-{"vsstw", "Xhwacha", "#d,s,t", MATCH_VSSTW, MASK_VSSTW, match_opcode, 0},
-{"vssth", "Xhwacha", "#d,s,t", MATCH_VSSTH, MASK_VSSTH, match_opcode, 0},
-{"vsstb", "Xhwacha", "#d,s,t", MATCH_VSSTB, MASK_VSSTB, match_opcode, 0},
-/* fstores */
-{"vfsstd", "Xhwacha", "#D,s,t", MATCH_VFSSTD, MASK_VFSSTD, match_opcode, 0},
-{"vfsstw", "Xhwacha", "#D,s,t", MATCH_VFSSTW, MASK_VFSSTW, match_opcode, 0},
-
-/* segment */
-/* xstores */
-{"vssegd", "Xhwacha", "#d,s,#n", MATCH_VSSEGD, MASK_VSSEGD, match_opcode, 0},
-{"vssegw", "Xhwacha", "#d,s,#n", MATCH_VSSEGW, MASK_VSSEGW, match_opcode, 0},
-{"vssegh", "Xhwacha", "#d,s,#n", MATCH_VSSEGH, MASK_VSSEGH, match_opcode, 0},
-{"vssegb", "Xhwacha", "#d,s,#n", MATCH_VSSEGB, MASK_VSSEGB, match_opcode, 0},
-/* fstores */
-{"vfssegd", "Xhwacha", "#D,s,#n", MATCH_VFSSEGD, MASK_VFSSEGD, match_opcode, 0},
-{"vfssegw", "Xhwacha", "#D,s,#n", MATCH_VFSSEGW, MASK_VFSSEGW, match_opcode, 0},
-
-/* stride segment */
-/* xsegstores */
-{"vssegstd", "Xhwacha", "#d,s,t,#n", MATCH_VSSEGSTD, MASK_VSSEGSTD, match_opcode, 0},
-{"vssegstw", "Xhwacha", "#d,s,t,#n", MATCH_VSSEGSTW, MASK_VSSEGSTW, match_opcode, 0},
-{"vssegsth", "Xhwacha", "#d,s,t,#n", MATCH_VSSEGSTH, MASK_VSSEGSTH, match_opcode, 0},
-{"vssegstb", "Xhwacha", "#d,s,t,#n", MATCH_VSSEGSTB, MASK_VSSEGSTB, match_opcode, 0},
-/* fsegstores */
-{"vfssegstd", "Xhwacha", "#D,s,t,#n", MATCH_VFSSEGSTD, MASK_VFSSEGSTD, match_opcode, 0},
-{"vfssegstw", "Xhwacha", "#D,s,t,#n", MATCH_VFSSEGSTW, MASK_VFSSEGSTW, match_opcode, 0},
-
-{"vsetcfg", "Xhwacha", "s", MATCH_VSETCFG, MASK_VSETCFG | MASK_IMM, match_opcode, 0},
-{"vsetcfg", "Xhwacha", "#g,#f", MATCH_VSETCFG, MASK_VSETCFG | MASK_RS1, match_opcode, 0},
-{"vsetcfg", "Xhwacha", "s,#g,#f", MATCH_VSETCFG, MASK_VSETCFG, match_opcode, 0},
-{"vsetucfg", "Xhwacha", "d,u", MATCH_LUI, MASK_LUI, match_opcode, INSN_ALIAS | WR_xd},
-{"vsetvl", "Xhwacha", "d,s", MATCH_VSETVL, MASK_VSETVL, match_opcode, 0},
-{"vgetcfg", "Xhwacha", "d", MATCH_VGETCFG, MASK_VGETCFG, match_opcode, 0},
-{"vgetvl", "Xhwacha", "d", MATCH_VGETVL, MASK_VGETVL, match_opcode, 0},
-
-{"vmvv", "Xhwacha", "#d,#s", MATCH_VMVV, MASK_VMVV, match_opcode, 0},
-{"vmsv", "Xhwacha", "#d,s", MATCH_VMSV, MASK_VMSV, match_opcode, 0},
-{"vfmvv", "Xhwacha", "#D,#S", MATCH_VFMVV, MASK_VFMVV, match_opcode, 0},
-{"vfmsv.d", "Xhwacha", "#D,s", MATCH_VFMSV_D, MASK_VFMSV_D, match_opcode, 0},
-{"vfmsv.s", "Xhwacha", "#D,s", MATCH_VFMSV_S, MASK_VFMSV_S, match_opcode, 0},
-
-{"vf", "Xhwacha", "q(s)", MATCH_VF, MASK_VF, match_opcode, 0},
-{"vf", "Xhwacha", "A,s", 0, (int) M_VF, match_never, INSN_MACRO },
-
-{"vxcptcause", "Xhwacha", "d", MATCH_VXCPTCAUSE, MASK_VXCPTCAUSE, match_opcode, 0},
-{"vxcptaux", "Xhwacha", "d", MATCH_VXCPTAUX, MASK_VXCPTAUX, match_opcode, 0},
-
-{"vxcptsave", "Xhwacha", "s", MATCH_VXCPTSAVE, MASK_VXCPTSAVE, match_opcode, 0},
-{"vxcptrestore", "Xhwacha", "s", MATCH_VXCPTRESTORE, MASK_VXCPTRESTORE, match_opcode, 0},
-{"vxcptkill", "Xhwacha", "", MATCH_VXCPTKILL, MASK_VXCPTKILL, match_opcode, 0},
-
-{"vxcptevac", "Xhwacha", "s", MATCH_VXCPTEVAC, MASK_VXCPTEVAC, match_opcode, 0},
-{"vxcpthold", "Xhwacha", "s", MATCH_VXCPTHOLD, MASK_VXCPTHOLD, match_opcode, 0},
-{"venqcmd", "Xhwacha", "s,t", MATCH_VENQCMD, MASK_VENQCMD, match_opcode, 0},
-{"venqimm1", "Xhwacha", "s,t", MATCH_VENQIMM1, MASK_VENQIMM1, match_opcode, 0},
-{"venqimm2", "Xhwacha", "s,t", MATCH_VENQIMM2, MASK_VENQIMM2, match_opcode, 0},
-{"venqcnt", "Xhwacha", "s,t", MATCH_VENQCNT, MASK_VENQCNT, match_opcode, 0},
};
#define RISCV_NUM_OPCODES \