Lines 19-25
Link Here
|
19 |
|
19 |
|
20 |
#include "qemu/osdep.h" |
20 |
#include "qemu/osdep.h" |
21 |
#include "disas/dis-asm.h" |
21 |
#include "disas/dis-asm.h" |
22 |
|
22 |
#include "target/riscv/cpu_cfg.h" |
23 |
|
23 |
|
24 |
/* types */ |
24 |
/* types */ |
25 |
|
25 |
|
Lines 969-974
typedef enum {
Link Here
|
969 |
/* structures */ |
969 |
/* structures */ |
970 |
|
970 |
|
971 |
typedef struct { |
971 |
typedef struct { |
|
|
972 |
RISCVCPUConfig *cfg; |
972 |
uint64_t pc; |
973 |
uint64_t pc; |
973 |
uint64_t inst; |
974 |
uint64_t inst; |
974 |
int32_t imm; |
975 |
int32_t imm; |
Lines 1109-1116
static const char rv_vreg_name_sym[32][4] = {
Link Here
|
1109 |
/* pseudo-instruction constraints */ |
1110 |
/* pseudo-instruction constraints */ |
1110 |
|
1111 |
|
1111 |
static const rvc_constraint rvcc_jal[] = { rvc_rd_eq_ra, rvc_end }; |
1112 |
static const rvc_constraint rvcc_jal[] = { rvc_rd_eq_ra, rvc_end }; |
1112 |
static const rvc_constraint rvcc_jalr[] = { rvc_rd_eq_ra, rvc_imm_eq_zero, rvc_end }; |
1113 |
static const rvc_constraint rvcc_jalr[] = { rvc_rd_eq_ra, rvc_imm_eq_zero, |
1113 |
static const rvc_constraint rvcc_nop[] = { rvc_rd_eq_x0, rvc_rs1_eq_x0, rvc_imm_eq_zero, rvc_end }; |
1114 |
rvc_end }; |
|
|
1115 |
static const rvc_constraint rvcc_nop[] = { rvc_rd_eq_x0, rvc_rs1_eq_x0, |
1116 |
rvc_imm_eq_zero, rvc_end }; |
1114 |
static const rvc_constraint rvcc_mv[] = { rvc_imm_eq_zero, rvc_end }; |
1117 |
static const rvc_constraint rvcc_mv[] = { rvc_imm_eq_zero, rvc_end }; |
1115 |
static const rvc_constraint rvcc_not[] = { rvc_imm_eq_n1, rvc_end }; |
1118 |
static const rvc_constraint rvcc_not[] = { rvc_imm_eq_n1, rvc_end }; |
1116 |
static const rvc_constraint rvcc_neg[] = { rvc_rs1_eq_x0, rvc_end }; |
1119 |
static const rvc_constraint rvcc_neg[] = { rvc_rs1_eq_x0, rvc_end }; |
Lines 1140-1157
static const rvc_constraint rvcc_bleu[] = { rvc_end };
Link Here
|
1140 |
static const rvc_constraint rvcc_bgt[] = { rvc_end }; |
1143 |
static const rvc_constraint rvcc_bgt[] = { rvc_end }; |
1141 |
static const rvc_constraint rvcc_bgtu[] = { rvc_end }; |
1144 |
static const rvc_constraint rvcc_bgtu[] = { rvc_end }; |
1142 |
static const rvc_constraint rvcc_j[] = { rvc_rd_eq_x0, rvc_end }; |
1145 |
static const rvc_constraint rvcc_j[] = { rvc_rd_eq_x0, rvc_end }; |
1143 |
static const rvc_constraint rvcc_ret[] = { rvc_rd_eq_x0, rvc_rs1_eq_ra, rvc_end }; |
1146 |
static const rvc_constraint rvcc_ret[] = { rvc_rd_eq_x0, rvc_rs1_eq_ra, |
1144 |
static const rvc_constraint rvcc_jr[] = { rvc_rd_eq_x0, rvc_imm_eq_zero, rvc_end }; |
1147 |
rvc_end }; |
1145 |
static const rvc_constraint rvcc_rdcycle[] = { rvc_rs1_eq_x0, rvc_csr_eq_0xc00, rvc_end }; |
1148 |
static const rvc_constraint rvcc_jr[] = { rvc_rd_eq_x0, rvc_imm_eq_zero, |
1146 |
static const rvc_constraint rvcc_rdtime[] = { rvc_rs1_eq_x0, rvc_csr_eq_0xc01, rvc_end }; |
1149 |
rvc_end }; |
1147 |
static const rvc_constraint rvcc_rdinstret[] = { rvc_rs1_eq_x0, rvc_csr_eq_0xc02, rvc_end }; |
1150 |
static const rvc_constraint rvcc_rdcycle[] = { rvc_rs1_eq_x0, rvc_csr_eq_0xc00, |
1148 |
static const rvc_constraint rvcc_rdcycleh[] = { rvc_rs1_eq_x0, rvc_csr_eq_0xc80, rvc_end }; |
1151 |
rvc_end }; |
1149 |
static const rvc_constraint rvcc_rdtimeh[] = { rvc_rs1_eq_x0, rvc_csr_eq_0xc81, rvc_end }; |
1152 |
static const rvc_constraint rvcc_rdtime[] = { rvc_rs1_eq_x0, rvc_csr_eq_0xc01, |
|
|
1153 |
rvc_end }; |
1154 |
static const rvc_constraint rvcc_rdinstret[] = { rvc_rs1_eq_x0, |
1155 |
rvc_csr_eq_0xc02, rvc_end }; |
1156 |
static const rvc_constraint rvcc_rdcycleh[] = { rvc_rs1_eq_x0, |
1157 |
rvc_csr_eq_0xc80, rvc_end }; |
1158 |
static const rvc_constraint rvcc_rdtimeh[] = { rvc_rs1_eq_x0, rvc_csr_eq_0xc81, |
1159 |
rvc_end }; |
1150 |
static const rvc_constraint rvcc_rdinstreth[] = { rvc_rs1_eq_x0, |
1160 |
static const rvc_constraint rvcc_rdinstreth[] = { rvc_rs1_eq_x0, |
1151 |
rvc_csr_eq_0xc82, rvc_end }; |
1161 |
rvc_csr_eq_0xc82, rvc_end }; |
1152 |
static const rvc_constraint rvcc_frcsr[] = { rvc_rs1_eq_x0, rvc_csr_eq_0x003, rvc_end }; |
1162 |
static const rvc_constraint rvcc_frcsr[] = { rvc_rs1_eq_x0, rvc_csr_eq_0x003, |
1153 |
static const rvc_constraint rvcc_frrm[] = { rvc_rs1_eq_x0, rvc_csr_eq_0x002, rvc_end }; |
1163 |
rvc_end }; |
1154 |
static const rvc_constraint rvcc_frflags[] = { rvc_rs1_eq_x0, rvc_csr_eq_0x001, rvc_end }; |
1164 |
static const rvc_constraint rvcc_frrm[] = { rvc_rs1_eq_x0, rvc_csr_eq_0x002, |
|
|
1165 |
rvc_end }; |
1166 |
static const rvc_constraint rvcc_frflags[] = { rvc_rs1_eq_x0, rvc_csr_eq_0x001, |
1167 |
rvc_end }; |
1155 |
static const rvc_constraint rvcc_fscsr[] = { rvc_csr_eq_0x003, rvc_end }; |
1168 |
static const rvc_constraint rvcc_fscsr[] = { rvc_csr_eq_0x003, rvc_end }; |
1156 |
static const rvc_constraint rvcc_fsrm[] = { rvc_csr_eq_0x002, rvc_end }; |
1169 |
static const rvc_constraint rvcc_fsrm[] = { rvc_csr_eq_0x002, rvc_end }; |
1157 |
static const rvc_constraint rvcc_fsflags[] = { rvc_csr_eq_0x001, rvc_end }; |
1170 |
static const rvc_constraint rvcc_fsflags[] = { rvc_csr_eq_0x001, rvc_end }; |
Lines 1553-1569
const rv_opcode_data opcode_data[] = {
Link Here
|
1553 |
{ "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1, NULL, 0, 0, 0 }, |
1566 |
{ "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1, NULL, 0, 0, 0 }, |
1554 |
{ "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, |
1567 |
{ "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, |
1555 |
rv_op_addi, rv_op_addi, rvcd_imm_nz }, |
1568 |
rv_op_addi, rv_op_addi, rvcd_imm_nz }, |
1556 |
{ "c.fld", rv_codec_cl_ld, rv_fmt_frd_offset_rs1, NULL, rv_op_fld, rv_op_fld, 0 }, |
1569 |
{ "c.fld", rv_codec_cl_ld, rv_fmt_frd_offset_rs1, NULL, rv_op_fld, |
1557 |
{ "c.lw", rv_codec_cl_lw, rv_fmt_rd_offset_rs1, NULL, rv_op_lw, rv_op_lw, rv_op_lw }, |
1570 |
rv_op_fld, 0 }, |
|
|
1571 |
{ "c.lw", rv_codec_cl_lw, rv_fmt_rd_offset_rs1, NULL, rv_op_lw, rv_op_lw, |
1572 |
rv_op_lw }, |
1558 |
{ "c.flw", rv_codec_cl_lw, rv_fmt_frd_offset_rs1, NULL, rv_op_flw, 0, 0 }, |
1573 |
{ "c.flw", rv_codec_cl_lw, rv_fmt_frd_offset_rs1, NULL, rv_op_flw, 0, 0 }, |
1559 |
{ "c.fsd", rv_codec_cs_sd, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsd, rv_op_fsd, 0 }, |
1574 |
{ "c.fsd", rv_codec_cs_sd, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsd, |
1560 |
{ "c.sw", rv_codec_cs_sw, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw, rv_op_sw, rv_op_sw }, |
1575 |
rv_op_fsd, 0 }, |
|
|
1576 |
{ "c.sw", rv_codec_cs_sw, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw, rv_op_sw, |
1577 |
rv_op_sw }, |
1561 |
{ "c.fsw", rv_codec_cs_sw, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsw, 0, 0 }, |
1578 |
{ "c.fsw", rv_codec_cs_sw, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsw, 0, 0 }, |
1562 |
{ "c.nop", rv_codec_ci_none, rv_fmt_none, NULL, rv_op_addi, rv_op_addi, rv_op_addi }, |
1579 |
{ "c.nop", rv_codec_ci_none, rv_fmt_none, NULL, rv_op_addi, rv_op_addi, |
|
|
1580 |
rv_op_addi }, |
1563 |
{ "c.addi", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_addi, |
1581 |
{ "c.addi", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_addi, |
1564 |
rv_op_addi, rvcd_imm_nz }, |
1582 |
rv_op_addi, rvcd_imm_nz }, |
1565 |
{ "c.jal", rv_codec_cj_jal, rv_fmt_rd_offset, NULL, rv_op_jal, 0, 0 }, |
1583 |
{ "c.jal", rv_codec_cj_jal, rv_fmt_rd_offset, NULL, rv_op_jal, 0, 0 }, |
1566 |
{ "c.li", rv_codec_ci_li, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_addi, rv_op_addi }, |
1584 |
{ "c.li", rv_codec_ci_li, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_addi, |
|
|
1585 |
rv_op_addi }, |
1567 |
{ "c.addi16sp", rv_codec_ci_16sp, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, |
1586 |
{ "c.addi16sp", rv_codec_ci_16sp, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, |
1568 |
rv_op_addi, rv_op_addi, rvcd_imm_nz }, |
1587 |
rv_op_addi, rv_op_addi, rvcd_imm_nz }, |
1569 |
{ "c.lui", rv_codec_ci_lui, rv_fmt_rd_imm, NULL, rv_op_lui, rv_op_lui, |
1588 |
{ "c.lui", rv_codec_ci_lui, rv_fmt_rd_imm, NULL, rv_op_lui, rv_op_lui, |
Lines 1574-1610
const rv_opcode_data opcode_data[] = {
Link Here
|
1574 |
rv_op_srai, rv_op_srai, rvcd_imm_nz }, |
1593 |
rv_op_srai, rv_op_srai, rvcd_imm_nz }, |
1575 |
{ "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, NULL, rv_op_andi, |
1594 |
{ "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, NULL, rv_op_andi, |
1576 |
rv_op_andi, rv_op_andi }, |
1595 |
rv_op_andi, rv_op_andi }, |
1577 |
{ "c.sub", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_sub, rv_op_sub, rv_op_sub }, |
1596 |
{ "c.sub", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_sub, rv_op_sub, |
1578 |
{ "c.xor", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_xor, rv_op_xor, rv_op_xor }, |
1597 |
rv_op_sub }, |
1579 |
{ "c.or", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_or, rv_op_or, rv_op_or }, |
1598 |
{ "c.xor", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_xor, rv_op_xor, |
1580 |
{ "c.and", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_and, rv_op_and, rv_op_and }, |
1599 |
rv_op_xor }, |
1581 |
{ "c.subw", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_subw, rv_op_subw, rv_op_subw }, |
1600 |
{ "c.or", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_or, rv_op_or, |
1582 |
{ "c.addw", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_addw, rv_op_addw, rv_op_addw }, |
1601 |
rv_op_or }, |
1583 |
{ "c.j", rv_codec_cj, rv_fmt_rd_offset, NULL, rv_op_jal, rv_op_jal, rv_op_jal }, |
1602 |
{ "c.and", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_and, rv_op_and, |
1584 |
{ "c.beqz", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_beq, rv_op_beq, rv_op_beq }, |
1603 |
rv_op_and }, |
1585 |
{ "c.bnez", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_bne, rv_op_bne, rv_op_bne }, |
1604 |
{ "c.subw", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_subw, rv_op_subw, |
|
|
1605 |
rv_op_subw }, |
1606 |
{ "c.addw", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_addw, rv_op_addw, |
1607 |
rv_op_addw }, |
1608 |
{ "c.j", rv_codec_cj, rv_fmt_rd_offset, NULL, rv_op_jal, rv_op_jal, |
1609 |
rv_op_jal }, |
1610 |
{ "c.beqz", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_beq, rv_op_beq, |
1611 |
rv_op_beq }, |
1612 |
{ "c.bnez", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_bne, rv_op_bne, |
1613 |
rv_op_bne }, |
1586 |
{ "c.slli", rv_codec_ci_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_slli, |
1614 |
{ "c.slli", rv_codec_ci_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_slli, |
1587 |
rv_op_slli, rv_op_slli, rvcd_imm_nz }, |
1615 |
rv_op_slli, rv_op_slli, rvcd_imm_nz }, |
1588 |
{ "c.fldsp", rv_codec_ci_ldsp, rv_fmt_frd_offset_rs1, NULL, rv_op_fld, rv_op_fld, rv_op_fld }, |
1616 |
{ "c.fldsp", rv_codec_ci_ldsp, rv_fmt_frd_offset_rs1, NULL, rv_op_fld, |
1589 |
{ "c.lwsp", rv_codec_ci_lwsp, rv_fmt_rd_offset_rs1, NULL, rv_op_lw, rv_op_lw, rv_op_lw }, |
1617 |
rv_op_fld, rv_op_fld }, |
1590 |
{ "c.flwsp", rv_codec_ci_lwsp, rv_fmt_frd_offset_rs1, NULL, rv_op_flw, 0, 0 }, |
1618 |
{ "c.lwsp", rv_codec_ci_lwsp, rv_fmt_rd_offset_rs1, NULL, rv_op_lw, |
1591 |
{ "c.jr", rv_codec_cr_jr, rv_fmt_rd_rs1_offset, NULL, rv_op_jalr, rv_op_jalr, rv_op_jalr }, |
1619 |
rv_op_lw, rv_op_lw }, |
1592 |
{ "c.mv", rv_codec_cr_mv, rv_fmt_rd_rs1_rs2, NULL, rv_op_addi, rv_op_addi, rv_op_addi }, |
1620 |
{ "c.flwsp", rv_codec_ci_lwsp, rv_fmt_frd_offset_rs1, NULL, rv_op_flw, 0, |
1593 |
{ "c.ebreak", rv_codec_ci_none, rv_fmt_none, NULL, rv_op_ebreak, rv_op_ebreak, rv_op_ebreak }, |
1621 |
0 }, |
1594 |
{ "c.jalr", rv_codec_cr_jalr, rv_fmt_rd_rs1_offset, NULL, rv_op_jalr, rv_op_jalr, rv_op_jalr }, |
1622 |
{ "c.jr", rv_codec_cr_jr, rv_fmt_rd_rs1_offset, NULL, rv_op_jalr, |
1595 |
{ "c.add", rv_codec_cr, rv_fmt_rd_rs1_rs2, NULL, rv_op_add, rv_op_add, rv_op_add }, |
1623 |
rv_op_jalr, rv_op_jalr }, |
1596 |
{ "c.fsdsp", rv_codec_css_sdsp, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsd, rv_op_fsd, rv_op_fsd }, |
1624 |
{ "c.mv", rv_codec_cr_mv, rv_fmt_rd_rs1_rs2, NULL, rv_op_addi, rv_op_addi, |
1597 |
{ "c.swsp", rv_codec_css_swsp, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw, rv_op_sw, rv_op_sw }, |
1625 |
rv_op_addi }, |
1598 |
{ "c.fswsp", rv_codec_css_swsp, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsw, 0, 0 }, |
1626 |
{ "c.ebreak", rv_codec_ci_none, rv_fmt_none, NULL, rv_op_ebreak, |
1599 |
{ "c.ld", rv_codec_cl_ld, rv_fmt_rd_offset_rs1, NULL, 0, rv_op_ld, rv_op_ld }, |
1627 |
rv_op_ebreak, rv_op_ebreak }, |
1600 |
{ "c.sd", rv_codec_cs_sd, rv_fmt_rs2_offset_rs1, NULL, 0, rv_op_sd, rv_op_sd }, |
1628 |
{ "c.jalr", rv_codec_cr_jalr, rv_fmt_rd_rs1_offset, NULL, rv_op_jalr, |
1601 |
{ "c.addiw", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, 0, rv_op_addiw, rv_op_addiw }, |
1629 |
rv_op_jalr, rv_op_jalr }, |
1602 |
{ "c.ldsp", rv_codec_ci_ldsp, rv_fmt_rd_offset_rs1, NULL, 0, rv_op_ld, rv_op_ld }, |
1630 |
{ "c.add", rv_codec_cr, rv_fmt_rd_rs1_rs2, NULL, rv_op_add, rv_op_add, |
1603 |
{ "c.sdsp", rv_codec_css_sdsp, rv_fmt_rs2_offset_rs1, NULL, 0, rv_op_sd, rv_op_sd }, |
1631 |
rv_op_add }, |
|
|
1632 |
{ "c.fsdsp", rv_codec_css_sdsp, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsd, |
1633 |
rv_op_fsd, rv_op_fsd }, |
1634 |
{ "c.swsp", rv_codec_css_swsp, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw, |
1635 |
rv_op_sw, rv_op_sw }, |
1636 |
{ "c.fswsp", rv_codec_css_swsp, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsw, 0, |
1637 |
0 }, |
1638 |
{ "c.ld", rv_codec_cl_ld, rv_fmt_rd_offset_rs1, NULL, 0, rv_op_ld, |
1639 |
rv_op_ld }, |
1640 |
{ "c.sd", rv_codec_cs_sd, rv_fmt_rs2_offset_rs1, NULL, 0, rv_op_sd, |
1641 |
rv_op_sd }, |
1642 |
{ "c.addiw", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, 0, rv_op_addiw, |
1643 |
rv_op_addiw }, |
1644 |
{ "c.ldsp", rv_codec_ci_ldsp, rv_fmt_rd_offset_rs1, NULL, 0, rv_op_ld, |
1645 |
rv_op_ld }, |
1646 |
{ "c.sdsp", rv_codec_css_sdsp, rv_fmt_rs2_offset_rs1, NULL, 0, rv_op_sd, |
1647 |
rv_op_sd }, |
1604 |
{ "c.lq", rv_codec_cl_lq, rv_fmt_rd_offset_rs1, NULL, 0, 0, rv_op_lq }, |
1648 |
{ "c.lq", rv_codec_cl_lq, rv_fmt_rd_offset_rs1, NULL, 0, 0, rv_op_lq }, |
1605 |
{ "c.sq", rv_codec_cs_sq, rv_fmt_rs2_offset_rs1, NULL, 0, 0, rv_op_sq }, |
1649 |
{ "c.sq", rv_codec_cs_sq, rv_fmt_rs2_offset_rs1, NULL, 0, 0, rv_op_sq }, |
1606 |
{ "c.lqsp", rv_codec_ci_lqsp, rv_fmt_rd_offset_rs1, NULL, 0, 0, rv_op_lq }, |
1650 |
{ "c.lqsp", rv_codec_ci_lqsp, rv_fmt_rd_offset_rs1, NULL, 0, 0, rv_op_lq }, |
1607 |
{ "c.sqsp", rv_codec_css_sqsp, rv_fmt_rs2_offset_rs1, NULL, 0, 0, rv_op_sq }, |
1651 |
{ "c.sqsp", rv_codec_css_sqsp, rv_fmt_rs2_offset_rs1, NULL, 0, 0, |
|
|
1652 |
rv_op_sq }, |
1608 |
{ "nop", rv_codec_i, rv_fmt_none, NULL, 0, 0, 0 }, |
1653 |
{ "nop", rv_codec_i, rv_fmt_none, NULL, 0, 0, 0 }, |
1609 |
{ "mv", rv_codec_i, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, |
1654 |
{ "mv", rv_codec_i, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, |
1610 |
{ "not", rv_codec_i, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, |
1655 |
{ "not", rv_codec_i, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, |
Lines 1731-2106
const rv_opcode_data opcode_data[] = {
Link Here
|
1731 |
{ "zip", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, |
1776 |
{ "zip", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, |
1732 |
{ "xperm4", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, |
1777 |
{ "xperm4", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, |
1733 |
{ "xperm8", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, |
1778 |
{ "xperm8", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, |
1734 |
{ "vle8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vle8_v, rv_op_vle8_v, 0 }, |
1779 |
{ "vle8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1735 |
{ "vle16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vle16_v, rv_op_vle16_v, 0 }, |
1780 |
{ "vle16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1736 |
{ "vle32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vle32_v, rv_op_vle32_v, 0 }, |
1781 |
{ "vle32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1737 |
{ "vle64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vle64_v, rv_op_vle64_v, 0 }, |
1782 |
{ "vle64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1738 |
{ "vse8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vse8_v, rv_op_vse8_v, 0 }, |
1783 |
{ "vse8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1739 |
{ "vse16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vse16_v, rv_op_vse16_v, 0 }, |
1784 |
{ "vse16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1740 |
{ "vse32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vse32_v, rv_op_vse32_v, 0 }, |
1785 |
{ "vse32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1741 |
{ "vse64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vse64_v, rv_op_vse64_v, 0 }, |
1786 |
{ "vse64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1742 |
{ "vlm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vlm_v, rv_op_vlm_v, 0 }, |
1787 |
{ "vlm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1743 |
{ "vsm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vsm_v, rv_op_vsm_v, 0 }, |
1788 |
{ "vsm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1744 |
{ "vlse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, rv_op_vlse8_v, rv_op_vlse8_v, 0 }, |
1789 |
{ "vlse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, |
1745 |
{ "vlse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, rv_op_vlse16_v, rv_op_vlse16_v, 0 }, |
1790 |
{ "vlse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, |
1746 |
{ "vlse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, rv_op_vlse32_v, rv_op_vlse32_v, 0 }, |
1791 |
{ "vlse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, |
1747 |
{ "vlse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, rv_op_vlse64_v, rv_op_vlse64_v, 0 }, |
1792 |
{ "vlse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, |
1748 |
{ "vsse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, rv_op_vsse8_v, rv_op_vsse8_v, 0 }, |
1793 |
{ "vsse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, |
1749 |
{ "vsse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, rv_op_vsse16_v, rv_op_vsse16_v, 0 }, |
1794 |
{ "vsse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, |
1750 |
{ "vsse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, rv_op_vsse32_v, rv_op_vsse32_v, 0 }, |
1795 |
{ "vsse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, |
1751 |
{ "vsse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, rv_op_vsse64_v, rv_op_vsse64_v, 0 }, |
1796 |
{ "vsse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, |
1752 |
{ "vluxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vluxei8_v, rv_op_vluxei8_v, 0 }, |
1797 |
{ "vluxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1753 |
{ "vluxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vluxei16_v, rv_op_vluxei16_v, 0 }, |
1798 |
{ "vluxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1754 |
{ "vluxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vluxei32_v, rv_op_vluxei32_v, 0 }, |
1799 |
{ "vluxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1755 |
{ "vluxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vluxei64_v, rv_op_vluxei64_v, 0 }, |
1800 |
{ "vluxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1756 |
{ "vloxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vloxei8_v, rv_op_vloxei8_v, 0 }, |
1801 |
{ "vloxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1757 |
{ "vloxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vloxei16_v, rv_op_vloxei16_v, 0 }, |
1802 |
{ "vloxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1758 |
{ "vloxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vloxei32_v, rv_op_vloxei32_v, 0 }, |
1803 |
{ "vloxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1759 |
{ "vloxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vloxei64_v, rv_op_vloxei64_v, 0 }, |
1804 |
{ "vloxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1760 |
{ "vsuxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vsuxei8_v, rv_op_vsuxei8_v, 0 }, |
1805 |
{ "vsuxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1761 |
{ "vsuxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vsuxei16_v, rv_op_vsuxei16_v, 0 }, |
1806 |
{ "vsuxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1762 |
{ "vsuxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vsuxei32_v, rv_op_vsuxei32_v, 0 }, |
1807 |
{ "vsuxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1763 |
{ "vsuxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vsuxei64_v, rv_op_vsuxei64_v, 0 }, |
1808 |
{ "vsuxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1764 |
{ "vsoxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vsoxei8_v, rv_op_vsoxei8_v, 0 }, |
1809 |
{ "vsoxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1765 |
{ "vsoxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vsoxei16_v, rv_op_vsoxei16_v, 0 }, |
1810 |
{ "vsoxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1766 |
{ "vsoxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vsoxei32_v, rv_op_vsoxei32_v, 0 }, |
1811 |
{ "vsoxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1767 |
{ "vsoxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, rv_op_vsoxei64_v, rv_op_vsoxei64_v, 0 }, |
1812 |
{ "vsoxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1768 |
{ "vle8ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vle8ff_v, rv_op_vle8ff_v, 0 }, |
1813 |
{ "vle8ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1769 |
{ "vle16ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vle16ff_v, rv_op_vle16ff_v, 0 }, |
1814 |
{ "vle16ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1770 |
{ "vle32ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vle32ff_v, rv_op_vle32ff_v, 0 }, |
1815 |
{ "vle32ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1771 |
{ "vle64ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vle64ff_v, rv_op_vle64ff_v, 0 }, |
1816 |
{ "vle64ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1772 |
{ "vl1re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl1re8_v, rv_op_vl1re8_v, 0 }, |
1817 |
{ "vl1re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1773 |
{ "vl1re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl1re16_v, rv_op_vl1re16_v, 0 }, |
1818 |
{ "vl1re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1774 |
{ "vl1re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl1re32_v, rv_op_vl1re32_v, 0 }, |
1819 |
{ "vl1re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1775 |
{ "vl1re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl1re64_v, rv_op_vl1re64_v, 0 }, |
1820 |
{ "vl1re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1776 |
{ "vl2re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl2re8_v, rv_op_vl2re8_v, 0 }, |
1821 |
{ "vl2re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1777 |
{ "vl2re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl2re16_v, rv_op_vl2re16_v, 0 }, |
1822 |
{ "vl2re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1778 |
{ "vl2re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl2re32_v, rv_op_vl2re32_v, 0 }, |
1823 |
{ "vl2re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1779 |
{ "vl2re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl2re64_v, rv_op_vl2re64_v, 0 }, |
1824 |
{ "vl2re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1780 |
{ "vl4re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl4re8_v, rv_op_vl4re8_v, 0 }, |
1825 |
{ "vl4re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1781 |
{ "vl4re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl4re16_v, rv_op_vl4re16_v, 0 }, |
1826 |
{ "vl4re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1782 |
{ "vl4re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl4re32_v, rv_op_vl4re32_v, 0 }, |
1827 |
{ "vl4re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1783 |
{ "vl4re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl4re64_v, rv_op_vl4re64_v, 0 }, |
1828 |
{ "vl4re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1784 |
{ "vl8re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl8re8_v, rv_op_vl8re8_v, 0 }, |
1829 |
{ "vl8re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1785 |
{ "vl8re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl8re16_v, rv_op_vl8re16_v, 0 }, |
1830 |
{ "vl8re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1786 |
{ "vl8re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl8re32_v, rv_op_vl8re32_v, 0 }, |
1831 |
{ "vl8re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1787 |
{ "vl8re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vl8re64_v, rv_op_vl8re64_v, 0 }, |
1832 |
{ "vl8re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1788 |
{ "vs1r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vs1r_v, rv_op_vs1r_v, 0 }, |
1833 |
{ "vs1r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1789 |
{ "vs2r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vs2r_v, rv_op_vs2r_v, 0 }, |
1834 |
{ "vs2r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1790 |
{ "vs4r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vs4r_v, rv_op_vs4r_v, 0 }, |
1835 |
{ "vs4r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1791 |
{ "vs8r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, rv_op_vs8r_v, rv_op_vs8r_v, 0 }, |
1836 |
{ "vs8r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, |
1792 |
{ "vadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vadd_vv, rv_op_vadd_vv, 0 }, |
1837 |
{ "vadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1793 |
{ "vadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vadd_vx, rv_op_vadd_vx, 0 }, |
1838 |
{ "vadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1794 |
{ "vadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vadd_vi, rv_op_vadd_vi, 0 }, |
1839 |
{ "vadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1795 |
{ "vsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vsub_vv, rv_op_vsub_vv, 0 }, |
1840 |
{ "vsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1796 |
{ "vsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vsub_vx, rv_op_vsub_vx, 0 }, |
1841 |
{ "vsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1797 |
{ "vrsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vrsub_vx, rv_op_vrsub_vx, 0 }, |
1842 |
{ "vrsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1798 |
{ "vrsub.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vrsub_vi, rv_op_vrsub_vi, 0 }, |
1843 |
{ "vrsub.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1799 |
{ "vwaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwaddu_vv, rv_op_vwaddu_vv, 0 }, |
1844 |
{ "vwaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1800 |
{ "vwaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwaddu_vx, rv_op_vwaddu_vx, 0 }, |
1845 |
{ "vwaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1801 |
{ "vwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwadd_vv, rv_op_vwadd_vv, 0 }, |
1846 |
{ "vwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1802 |
{ "vwadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwadd_vx, rv_op_vwadd_vx, 0 }, |
1847 |
{ "vwadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1803 |
{ "vwsubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwsubu_vv, rv_op_vwsubu_vv, 0 }, |
1848 |
{ "vwsubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1804 |
{ "vwsubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwsubu_vx, rv_op_vwsubu_vx, 0 }, |
1849 |
{ "vwsubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1805 |
{ "vwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwsub_vv, rv_op_vwsub_vv, 0 }, |
1850 |
{ "vwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1806 |
{ "vwsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwsub_vx, rv_op_vwsub_vx, 0 }, |
1851 |
{ "vwsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1807 |
{ "vwaddu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwaddu_wv, rv_op_vwaddu_wv, 0 }, |
1852 |
{ "vwaddu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1808 |
{ "vwaddu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwaddu_wx, rv_op_vwaddu_wx, 0 }, |
1853 |
{ "vwaddu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1809 |
{ "vwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwadd_wv, rv_op_vwadd_wv, 0 }, |
1854 |
{ "vwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1810 |
{ "vwadd.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwadd_wx, rv_op_vwadd_wx, 0 }, |
1855 |
{ "vwadd.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1811 |
{ "vwsubu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwsubu_wv, rv_op_vwsubu_wv, 0 }, |
1856 |
{ "vwsubu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1812 |
{ "vwsubu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwsubu_wx, rv_op_vwsubu_wx, 0 }, |
1857 |
{ "vwsubu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1813 |
{ "vwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwsub_wv, rv_op_vwsub_wv, 0 }, |
1858 |
{ "vwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1814 |
{ "vwsub.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwsub_wx, rv_op_vwsub_wx, 0 }, |
1859 |
{ "vwsub.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1815 |
{ "vadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, rv_op_vadc_vvm, rv_op_vadc_vvm, 0 }, |
1860 |
{ "vadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, 0, 0, 0 }, |
1816 |
{ "vadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, rv_op_vadc_vxm, rv_op_vadc_vxm, 0 }, |
1861 |
{ "vadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, 0, 0, 0 }, |
1817 |
{ "vadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl, NULL, rv_op_vadc_vim, rv_op_vadc_vim, 0 }, |
1862 |
{ "vadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl, NULL, 0, 0, 0 }, |
1818 |
{ "vmadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, rv_op_vmadc_vvm, rv_op_vmadc_vvm, 0 }, |
1863 |
{ "vmadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, 0, 0, 0 }, |
1819 |
{ "vmadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, rv_op_vmadc_vxm, rv_op_vmadc_vxm, 0 }, |
1864 |
{ "vmadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, 0, 0, 0 }, |
1820 |
{ "vmadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl, NULL, rv_op_vmadc_vim, rv_op_vmadc_vim, 0 }, |
1865 |
{ "vmadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl, NULL, 0, 0, 0 }, |
1821 |
{ "vsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, rv_op_vsbc_vvm, rv_op_vsbc_vvm, 0 }, |
1866 |
{ "vsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, 0, 0, 0 }, |
1822 |
{ "vsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, rv_op_vsbc_vxm, rv_op_vsbc_vxm, 0 }, |
1867 |
{ "vsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, 0, 0, 0 }, |
1823 |
{ "vmsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, rv_op_vmsbc_vvm, rv_op_vmsbc_vvm, 0 }, |
1868 |
{ "vmsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, 0, 0, 0 }, |
1824 |
{ "vmsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, rv_op_vmsbc_vxm, rv_op_vmsbc_vxm, 0 }, |
1869 |
{ "vmsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, 0, 0, 0 }, |
1825 |
{ "vand.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vand_vv, rv_op_vand_vv, 0 }, |
1870 |
{ "vand.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1826 |
{ "vand.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vand_vx, rv_op_vand_vx, 0 }, |
1871 |
{ "vand.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1827 |
{ "vand.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vand_vi, rv_op_vand_vi, 0 }, |
1872 |
{ "vand.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1828 |
{ "vor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vor_vv, rv_op_vor_vv, 0 }, |
1873 |
{ "vor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1829 |
{ "vor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vor_vx, rv_op_vor_vx, 0 }, |
1874 |
{ "vor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1830 |
{ "vor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vor_vi, rv_op_vor_vi, 0 }, |
1875 |
{ "vor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1831 |
{ "vxor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vxor_vv, rv_op_vxor_vv, 0 }, |
1876 |
{ "vxor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1832 |
{ "vxor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vxor_vx, rv_op_vxor_vx, 0 }, |
1877 |
{ "vxor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1833 |
{ "vxor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vxor_vi, rv_op_vxor_vi, 0 }, |
1878 |
{ "vxor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1834 |
{ "vsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vsll_vv, rv_op_vsll_vv, 0 }, |
1879 |
{ "vsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1835 |
{ "vsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vsll_vx, rv_op_vsll_vx, 0 }, |
1880 |
{ "vsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1836 |
{ "vsll.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vsll_vi, rv_op_vsll_vi, 0 }, |
1881 |
{ "vsll.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
1837 |
{ "vsrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vsrl_vv, rv_op_vsrl_vv, 0 }, |
1882 |
{ "vsrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1838 |
{ "vsrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vsrl_vx, rv_op_vsrl_vx, 0 }, |
1883 |
{ "vsrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1839 |
{ "vsrl.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vsrl_vi, rv_op_vsrl_vi, 0 }, |
1884 |
{ "vsrl.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
1840 |
{ "vsra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vsra_vv, rv_op_vsra_vv, 0 }, |
1885 |
{ "vsra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1841 |
{ "vsra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vsra_vx, rv_op_vsra_vx, 0 }, |
1886 |
{ "vsra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1842 |
{ "vsra.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vsra_vi, rv_op_vsra_vi, 0 }, |
1887 |
{ "vsra.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
1843 |
{ "vnsrl.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vnsrl_wv, rv_op_vnsrl_wv, 0 }, |
1888 |
{ "vnsrl.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1844 |
{ "vnsrl.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vnsrl_wx, rv_op_vnsrl_wx, 0 }, |
1889 |
{ "vnsrl.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1845 |
{ "vnsrl.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vnsrl_wi, rv_op_vnsrl_wi, 0 }, |
1890 |
{ "vnsrl.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
1846 |
{ "vnsra.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vnsra_wv, rv_op_vnsra_wv, 0 }, |
1891 |
{ "vnsra.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1847 |
{ "vnsra.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vnsra_wx, rv_op_vnsra_wx, 0 }, |
1892 |
{ "vnsra.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1848 |
{ "vnsra.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vnsra_wi, rv_op_vnsra_wi, 0 }, |
1893 |
{ "vnsra.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
1849 |
{ "vmseq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmseq_vv, rv_op_vmseq_vv, 0 }, |
1894 |
{ "vmseq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1850 |
{ "vmseq.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmseq_vx, rv_op_vmseq_vx, 0 }, |
1895 |
{ "vmseq.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1851 |
{ "vmseq.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vmseq_vi, rv_op_vmseq_vi, 0 }, |
1896 |
{ "vmseq.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1852 |
{ "vmsne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmsne_vv, rv_op_vmsne_vv, 0 }, |
1897 |
{ "vmsne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1853 |
{ "vmsne.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmsne_vx, rv_op_vmsne_vx, 0 }, |
1898 |
{ "vmsne.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1854 |
{ "vmsne.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vmsne_vi, rv_op_vmsne_vi, 0 }, |
1899 |
{ "vmsne.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1855 |
{ "vmsltu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmsltu_vv, rv_op_vmsltu_vv, 0 }, |
1900 |
{ "vmsltu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1856 |
{ "vmsltu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmsltu_vx, rv_op_vmsltu_vx, 0 }, |
1901 |
{ "vmsltu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1857 |
{ "vmslt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmslt_vv, rv_op_vmslt_vv, 0 }, |
1902 |
{ "vmslt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1858 |
{ "vmslt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmslt_vx, rv_op_vmslt_vx, 0 }, |
1903 |
{ "vmslt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1859 |
{ "vmsleu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmsleu_vv, rv_op_vmsleu_vv, 0 }, |
1904 |
{ "vmsleu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1860 |
{ "vmsleu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmsleu_vx, rv_op_vmsleu_vx, 0 }, |
1905 |
{ "vmsleu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1861 |
{ "vmsleu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vmsleu_vi, rv_op_vmsleu_vi, 0 }, |
1906 |
{ "vmsleu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1862 |
{ "vmsle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmsle_vv, rv_op_vmsle_vv, 0 }, |
1907 |
{ "vmsle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1863 |
{ "vmsle.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmsle_vx, rv_op_vmsle_vx, 0 }, |
1908 |
{ "vmsle.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1864 |
{ "vmsle.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vmsle_vi, rv_op_vmsle_vi, 0 }, |
1909 |
{ "vmsle.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1865 |
{ "vmsgtu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmsgtu_vx, rv_op_vmsgtu_vx, 0 }, |
1910 |
{ "vmsgtu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1866 |
{ "vmsgtu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vmsgtu_vi, rv_op_vmsgtu_vi, 0 }, |
1911 |
{ "vmsgtu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1867 |
{ "vmsgt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmsgt_vx, rv_op_vmsgt_vx, 0 }, |
1912 |
{ "vmsgt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1868 |
{ "vmsgt.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vmsgt_vi, rv_op_vmsgt_vi, 0 }, |
1913 |
{ "vmsgt.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1869 |
{ "vminu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vminu_vv, rv_op_vminu_vv, 0 }, |
1914 |
{ "vminu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1870 |
{ "vminu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vminu_vx, rv_op_vminu_vx, 0 }, |
1915 |
{ "vminu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1871 |
{ "vmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmin_vv, rv_op_vmin_vv, 0 }, |
1916 |
{ "vmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1872 |
{ "vmin.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmin_vx, rv_op_vmin_vx, 0 }, |
1917 |
{ "vmin.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1873 |
{ "vmaxu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmaxu_vv, rv_op_vmaxu_vv, 0 }, |
1918 |
{ "vmaxu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1874 |
{ "vmaxu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmaxu_vx, rv_op_vmaxu_vx, 0 }, |
1919 |
{ "vmaxu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1875 |
{ "vmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmax_vv, rv_op_vmax_vv, 0 }, |
1920 |
{ "vmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1876 |
{ "vmax.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmax_vx, rv_op_vmax_vx, 0 }, |
1921 |
{ "vmax.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1877 |
{ "vmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmul_vv, rv_op_vmul_vv, 0 }, |
1922 |
{ "vmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1878 |
{ "vmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmul_vx, rv_op_vmul_vx, 0 }, |
1923 |
{ "vmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1879 |
{ "vmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmulh_vv, rv_op_vmulh_vv, 0 }, |
1924 |
{ "vmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1880 |
{ "vmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmulh_vx, rv_op_vmulh_vx, 0 }, |
1925 |
{ "vmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1881 |
{ "vmulhu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmulhu_vv, rv_op_vmulhu_vv, 0 }, |
1926 |
{ "vmulhu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1882 |
{ "vmulhu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmulhu_vx, rv_op_vmulhu_vx, 0 }, |
1927 |
{ "vmulhu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1883 |
{ "vmulhsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmulhsu_vv, rv_op_vmulhsu_vv, 0 }, |
1928 |
{ "vmulhsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1884 |
{ "vmulhsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vmulhsu_vx, rv_op_vmulhsu_vx, 0 }, |
1929 |
{ "vmulhsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1885 |
{ "vdivu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vdivu_vv, rv_op_vdivu_vv, 0 }, |
1930 |
{ "vdivu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1886 |
{ "vdivu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vdivu_vx, rv_op_vdivu_vx, 0 }, |
1931 |
{ "vdivu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1887 |
{ "vdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vdiv_vv, rv_op_vdiv_vv, 0 }, |
1932 |
{ "vdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1888 |
{ "vdiv.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vdiv_vx, rv_op_vdiv_vx, 0 }, |
1933 |
{ "vdiv.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1889 |
{ "vremu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vremu_vv, rv_op_vremu_vv, 0 }, |
1934 |
{ "vremu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1890 |
{ "vremu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vremu_vx, rv_op_vremu_vx, 0 }, |
1935 |
{ "vremu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1891 |
{ "vrem.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vrem_vv, rv_op_vrem_vv, 0 }, |
1936 |
{ "vrem.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1892 |
{ "vrem.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vrem_vx, rv_op_vrem_vx, 0 }, |
1937 |
{ "vrem.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1893 |
{ "vwmulu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwmulu_vv, rv_op_vwmulu_vv, 0 }, |
1938 |
{ "vwmulu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1894 |
{ "vwmulu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwmulu_vx, rv_op_vwmulu_vx, 0 }, |
1939 |
{ "vwmulu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1895 |
{ "vwmulsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwmulsu_vv, rv_op_vwmulsu_vv, 0 }, |
1940 |
{ "vwmulsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1896 |
{ "vwmulsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwmulsu_vx, rv_op_vwmulsu_vx, 0 }, |
1941 |
{ "vwmulsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1897 |
{ "vwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwmul_vv, rv_op_vwmul_vv, 0 }, |
1942 |
{ "vwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1898 |
{ "vwmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vwmul_vx, rv_op_vwmul_vx, 0 }, |
1943 |
{ "vwmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1899 |
{ "vmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vmacc_vv, rv_op_vmacc_vv, 0 }, |
1944 |
{ "vmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1900 |
{ "vmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, rv_op_vmacc_vx, rv_op_vmacc_vx, 0 }, |
1945 |
{ "vmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1901 |
{ "vnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vnmsac_vv, rv_op_vnmsac_vv, 0 }, |
1946 |
{ "vnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1902 |
{ "vnmsac.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, rv_op_vnmsac_vx, rv_op_vnmsac_vx, 0 }, |
1947 |
{ "vnmsac.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1903 |
{ "vmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vmadd_vv, rv_op_vmadd_vv, 0 }, |
1948 |
{ "vmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1904 |
{ "vmadd.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, rv_op_vmadd_vx, rv_op_vmadd_vx, 0 }, |
1949 |
{ "vmadd.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1905 |
{ "vnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vnmsub_vv, rv_op_vnmsub_vv, 0 }, |
1950 |
{ "vnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1906 |
{ "vnmsub.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, rv_op_vnmsub_vx, rv_op_vnmsub_vx, 0 }, |
1951 |
{ "vnmsub.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1907 |
{ "vwmaccu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vwmaccu_vv, rv_op_vwmaccu_vv, 0 }, |
1952 |
{ "vwmaccu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1908 |
{ "vwmaccu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, rv_op_vwmaccu_vx, rv_op_vwmaccu_vx, 0 }, |
1953 |
{ "vwmaccu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1909 |
{ "vwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vwmacc_vv, rv_op_vwmacc_vv, 0 }, |
1954 |
{ "vwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1910 |
{ "vwmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, rv_op_vwmacc_vx, rv_op_vwmacc_vx, 0 }, |
1955 |
{ "vwmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1911 |
{ "vwmaccsu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vwmaccsu_vv, rv_op_vwmaccsu_vv, 0 }, |
1956 |
{ "vwmaccsu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1912 |
{ "vwmaccsu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, rv_op_vwmaccsu_vx, rv_op_vwmaccsu_vx, 0 }, |
1957 |
{ "vwmaccsu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1913 |
{ "vwmaccus.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, rv_op_vwmaccus_vx, rv_op_vwmaccus_vx, 0 }, |
1958 |
{ "vwmaccus.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, |
1914 |
{ "vmv.v.v", rv_codec_v_r, rv_fmt_vd_vs1, NULL, rv_op_vmv_v_v, rv_op_vmv_v_v, 0 }, |
1959 |
{ "vmv.v.v", rv_codec_v_r, rv_fmt_vd_vs1, NULL, 0, 0, 0 }, |
1915 |
{ "vmv.v.x", rv_codec_v_r, rv_fmt_vd_rs1, NULL, rv_op_vmv_v_x, rv_op_vmv_v_x, 0 }, |
1960 |
{ "vmv.v.x", rv_codec_v_r, rv_fmt_vd_rs1, NULL, 0, 0, 0 }, |
1916 |
{ "vmv.v.i", rv_codec_v_i, rv_fmt_vd_imm, NULL, rv_op_vmv_v_i, rv_op_vmv_v_i, 0 }, |
1961 |
{ "vmv.v.i", rv_codec_v_i, rv_fmt_vd_imm, NULL, 0, 0, 0 }, |
1917 |
{ "vmerge.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, rv_op_vmerge_vvm, rv_op_vmerge_vvm, 0 }, |
1962 |
{ "vmerge.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, 0, 0, 0 }, |
1918 |
{ "vmerge.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, rv_op_vmerge_vxm, rv_op_vmerge_vxm, 0 }, |
1963 |
{ "vmerge.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, 0, 0, 0 }, |
1919 |
{ "vmerge.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl, NULL, rv_op_vmerge_vim, rv_op_vmerge_vim, 0 }, |
1964 |
{ "vmerge.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl, NULL, 0, 0, 0 }, |
1920 |
{ "vsaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vsaddu_vv, rv_op_vsaddu_vv, 0 }, |
1965 |
{ "vsaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1921 |
{ "vsaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vsaddu_vx, rv_op_vsaddu_vx, 0 }, |
1966 |
{ "vsaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1922 |
{ "vsaddu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vsaddu_vi, rv_op_vsaddu_vi, 0 }, |
1967 |
{ "vsaddu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1923 |
{ "vsadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vsadd_vv, rv_op_vsadd_vv, 0 }, |
1968 |
{ "vsadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1924 |
{ "vsadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vsadd_vx, rv_op_vsadd_vx, 0 }, |
1969 |
{ "vsadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1925 |
{ "vsadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, rv_op_vsadd_vi, rv_op_vsadd_vi, 0 }, |
1970 |
{ "vsadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, |
1926 |
{ "vssubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vssubu_vv, rv_op_vssubu_vv, 0 }, |
1971 |
{ "vssubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1927 |
{ "vssubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vssubu_vx, rv_op_vssubu_vx, 0 }, |
1972 |
{ "vssubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1928 |
{ "vssub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vssub_vv, rv_op_vssub_vv, 0 }, |
1973 |
{ "vssub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1929 |
{ "vssub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vssub_vx, rv_op_vssub_vx, 0 }, |
1974 |
{ "vssub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1930 |
{ "vaadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vaadd_vv, rv_op_vaadd_vv, 0 }, |
1975 |
{ "vaadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1931 |
{ "vaadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vaadd_vx, rv_op_vaadd_vx, 0 }, |
1976 |
{ "vaadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1932 |
{ "vaaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vaaddu_vv, rv_op_vaaddu_vv, 0 }, |
1977 |
{ "vaaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1933 |
{ "vaaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vaaddu_vx, rv_op_vaaddu_vx, 0 }, |
1978 |
{ "vaaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1934 |
{ "vasub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vasub_vv, rv_op_vasub_vv, 0 }, |
1979 |
{ "vasub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1935 |
{ "vasub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vasub_vx, rv_op_vasub_vx, 0 }, |
1980 |
{ "vasub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1936 |
{ "vasubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vasubu_vv, rv_op_vasubu_vv, 0 }, |
1981 |
{ "vasubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1937 |
{ "vasubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vasubu_vx, rv_op_vasubu_vx, 0 }, |
1982 |
{ "vasubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1938 |
{ "vsmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vsmul_vv, rv_op_vsmul_vv, 0 }, |
1983 |
{ "vsmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1939 |
{ "vsmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vsmul_vx, rv_op_vsmul_vx, 0 }, |
1984 |
{ "vsmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1940 |
{ "vssrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vssrl_vv, rv_op_vssrl_vv, 0 }, |
1985 |
{ "vssrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1941 |
{ "vssrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vssrl_vx, rv_op_vssrl_vx, 0 }, |
1986 |
{ "vssrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1942 |
{ "vssrl.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vssrl_vi, rv_op_vssrl_vi, 0 }, |
1987 |
{ "vssrl.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
1943 |
{ "vssra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vssra_vv, rv_op_vssra_vv, 0 }, |
1988 |
{ "vssra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1944 |
{ "vssra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vssra_vx, rv_op_vssra_vx, 0 }, |
1989 |
{ "vssra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1945 |
{ "vssra.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vssra_vi, rv_op_vssra_vi, 0 }, |
1990 |
{ "vssra.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
1946 |
{ "vnclipu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vnclipu_wv, rv_op_vnclipu_wv, 0 }, |
1991 |
{ "vnclipu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1947 |
{ "vnclipu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vnclipu_wx, rv_op_vnclipu_wx, 0 }, |
1992 |
{ "vnclipu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1948 |
{ "vnclipu.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vnclipu_wi, rv_op_vnclipu_wi, 0 }, |
1993 |
{ "vnclipu.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
1949 |
{ "vnclip.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vnclip_wv, rv_op_vnclip_wv, 0 }, |
1994 |
{ "vnclip.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1950 |
{ "vnclip.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vnclip_wx, rv_op_vnclip_wx, 0 }, |
1995 |
{ "vnclip.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
1951 |
{ "vnclip.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vnclip_wi, rv_op_vnclip_wi, 0 }, |
1996 |
{ "vnclip.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
1952 |
{ "vfadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfadd_vv, rv_op_vfadd_vv, 0 }, |
1997 |
{ "vfadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1953 |
{ "vfadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfadd_vf, rv_op_vfadd_vf, 0 }, |
1998 |
{ "vfadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1954 |
{ "vfsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfsub_vv, rv_op_vfsub_vv, 0 }, |
1999 |
{ "vfsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1955 |
{ "vfsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfsub_vf, rv_op_vfsub_vf, 0 }, |
2000 |
{ "vfsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1956 |
{ "vfrsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfrsub_vf, rv_op_vfrsub_vf, 0 }, |
2001 |
{ "vfrsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1957 |
{ "vfwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfwadd_vv, rv_op_vfwadd_vv, 0 }, |
2002 |
{ "vfwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1958 |
{ "vfwadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfwadd_vf, rv_op_vfwadd_vf, 0 }, |
2003 |
{ "vfwadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1959 |
{ "vfwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfwadd_wv, rv_op_vfwadd_wv, 0 }, |
2004 |
{ "vfwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1960 |
{ "vfwadd.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfwadd_wf, rv_op_vfwadd_wf, 0 }, |
2005 |
{ "vfwadd.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1961 |
{ "vfwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfwsub_vv, rv_op_vfwsub_vv, 0 }, |
2006 |
{ "vfwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1962 |
{ "vfwsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfwsub_vf, rv_op_vfwsub_vf, 0 }, |
2007 |
{ "vfwsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1963 |
{ "vfwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfwsub_wv, rv_op_vfwsub_wv, 0 }, |
2008 |
{ "vfwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1964 |
{ "vfwsub.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfwsub_wf, rv_op_vfwsub_wf, 0 }, |
2009 |
{ "vfwsub.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1965 |
{ "vfmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfmul_vv, rv_op_vfmul_vv, 0 }, |
2010 |
{ "vfmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1966 |
{ "vfmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfmul_vf, rv_op_vfmul_vf, 0 }, |
2011 |
{ "vfmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1967 |
{ "vfdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfdiv_vv, rv_op_vfdiv_vv, 0 }, |
2012 |
{ "vfdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1968 |
{ "vfdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfdiv_vf, rv_op_vfdiv_vf, 0 }, |
2013 |
{ "vfdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1969 |
{ "vfrdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfrdiv_vf, rv_op_vfrdiv_vf, 0 }, |
2014 |
{ "vfrdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1970 |
{ "vfwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfwmul_vv, rv_op_vfwmul_vv, 0 }, |
2015 |
{ "vfwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
1971 |
{ "vfwmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfwmul_vf, rv_op_vfwmul_vf, 0 }, |
2016 |
{ "vfwmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
1972 |
{ "vfmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfmacc_vv, rv_op_vfmacc_vv, 0 }, |
2017 |
{ "vfmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1973 |
{ "vfmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfmacc_vf, rv_op_vfmacc_vf, 0 }, |
2018 |
{ "vfmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1974 |
{ "vfnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfnmacc_vv, rv_op_vfnmacc_vv, 0 }, |
2019 |
{ "vfnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1975 |
{ "vfnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfnmacc_vf, rv_op_vfnmacc_vf, 0 }, |
2020 |
{ "vfnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1976 |
{ "vfmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfmsac_vv, rv_op_vfmsac_vv, 0 }, |
2021 |
{ "vfmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1977 |
{ "vfmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfmsac_vf, rv_op_vfmsac_vf, 0 }, |
2022 |
{ "vfmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1978 |
{ "vfnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfnmsac_vv, rv_op_vfnmsac_vv, 0 }, |
2023 |
{ "vfnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1979 |
{ "vfnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfnmsac_vf, rv_op_vfnmsac_vf, 0 }, |
2024 |
{ "vfnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1980 |
{ "vfmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfmadd_vv, rv_op_vfmadd_vv, 0 }, |
2025 |
{ "vfmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1981 |
{ "vfmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfmadd_vf, rv_op_vfmadd_vf, 0 }, |
2026 |
{ "vfmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1982 |
{ "vfnmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfnmadd_vv, rv_op_vfnmadd_vv, 0 }, |
2027 |
{ "vfnmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1983 |
{ "vfnmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfnmadd_vf, rv_op_vfnmadd_vf, 0 }, |
2028 |
{ "vfnmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1984 |
{ "vfmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfmsub_vv, rv_op_vfmsub_vv, 0 }, |
2029 |
{ "vfmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1985 |
{ "vfmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfmsub_vf, rv_op_vfmsub_vf, 0 }, |
2030 |
{ "vfmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1986 |
{ "vfnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfnmsub_vv, rv_op_vfnmsub_vv, 0 }, |
2031 |
{ "vfnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1987 |
{ "vfnmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfnmsub_vf, rv_op_vfnmsub_vf, 0 }, |
2032 |
{ "vfnmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1988 |
{ "vfwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfwmacc_vv, rv_op_vfwmacc_vv, 0 }, |
2033 |
{ "vfwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1989 |
{ "vfwmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfwmacc_vf, rv_op_vfwmacc_vf, 0 }, |
2034 |
{ "vfwmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1990 |
{ "vfwnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfwnmacc_vv, rv_op_vfwnmacc_vv, 0 }, |
2035 |
{ "vfwnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1991 |
{ "vfwnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfwnmacc_vf, rv_op_vfwnmacc_vf, 0 }, |
2036 |
{ "vfwnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1992 |
{ "vfwmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfwmsac_vv, rv_op_vfwmsac_vv, 0 }, |
2037 |
{ "vfwmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1993 |
{ "vfwmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfwmsac_vf, rv_op_vfwmsac_vf, 0 }, |
2038 |
{ "vfwmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1994 |
{ "vfwnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, rv_op_vfwnmsac_vv, rv_op_vfwnmsac_vv, 0 }, |
2039 |
{ "vfwnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, |
1995 |
{ "vfwnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, rv_op_vfwnmsac_vf, rv_op_vfwnmsac_vf, 0 }, |
2040 |
{ "vfwnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, |
1996 |
{ "vfsqrt.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, rv_op_vfsqrt_v, rv_op_vfsqrt_v, 0 }, |
2041 |
{ "vfsqrt.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, |
1997 |
{ "vfrsqrt7.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, rv_op_vfrsqrt7_v, rv_op_vfrsqrt7_v, 0 }, |
2042 |
{ "vfrsqrt7.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, |
1998 |
{ "vfrec7.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, rv_op_vfrec7_v, rv_op_vfrec7_v, 0 }, |
2043 |
{ "vfrec7.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, |
1999 |
{ "vfmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfmin_vv, rv_op_vfmin_vv, 0 }, |
2044 |
{ "vfmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2000 |
{ "vfmin.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfmin_vf, rv_op_vfmin_vf, 0 }, |
2045 |
{ "vfmin.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2001 |
{ "vfmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfmax_vv, rv_op_vfmax_vv, 0 }, |
2046 |
{ "vfmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2002 |
{ "vfmax.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfmax_vf, rv_op_vfmax_vf, 0 }, |
2047 |
{ "vfmax.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2003 |
{ "vfsgnj.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfsgnj_vv, rv_op_vfsgnj_vv, 0 }, |
2048 |
{ "vfsgnj.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2004 |
{ "vfsgnj.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfsgnj_vf, rv_op_vfsgnj_vf, 0 }, |
2049 |
{ "vfsgnj.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2005 |
{ "vfsgnjn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfsgnjn_vv, rv_op_vfsgnjn_vv, 0 }, |
2050 |
{ "vfsgnjn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2006 |
{ "vfsgnjn.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfsgnjn_vf, rv_op_vfsgnjn_vf, 0 }, |
2051 |
{ "vfsgnjn.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2007 |
{ "vfsgnjx.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfsgnjx_vv, rv_op_vfsgnjx_vv, 0 }, |
2052 |
{ "vfsgnjx.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2008 |
{ "vfsgnjx.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfsgnjx_vf, rv_op_vfsgnjx_vf, 0 }, |
2053 |
{ "vfsgnjx.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2009 |
{ "vfslide1up.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfslide1up_vf, rv_op_vfslide1up_vf, 0 }, |
2054 |
{ "vfslide1up.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2010 |
{ "vfslide1down.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vfslide1down_vf, rv_op_vfslide1down_vf, 0 }, |
2055 |
{ "vfslide1down.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2011 |
{ "vmfeq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmfeq_vv, rv_op_vmfeq_vv, 0 }, |
2056 |
{ "vmfeq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2012 |
{ "vmfeq.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vmfeq_vf, rv_op_vmfeq_vf, 0 }, |
2057 |
{ "vmfeq.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2013 |
{ "vmfne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmfne_vv, rv_op_vmfne_vv, 0 }, |
2058 |
{ "vmfne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2014 |
{ "vmfne.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vmfne_vf, rv_op_vmfne_vf, 0 }, |
2059 |
{ "vmfne.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2015 |
{ "vmflt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmflt_vv, rv_op_vmflt_vv, 0 }, |
2060 |
{ "vmflt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2016 |
{ "vmflt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vmflt_vf, rv_op_vmflt_vf, 0 }, |
2061 |
{ "vmflt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2017 |
{ "vmfle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmfle_vv, rv_op_vmfle_vv, 0 }, |
2062 |
{ "vmfle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2018 |
{ "vmfle.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vmfle_vf, rv_op_vmfle_vf, 0 }, |
2063 |
{ "vmfle.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2019 |
{ "vmfgt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vmfgt_vf, rv_op_vmfgt_vf, 0 }, |
2064 |
{ "vmfgt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2020 |
{ "vmfge.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, rv_op_vmfge_vf, rv_op_vmfge_vf, 0 }, |
2065 |
{ "vmfge.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, |
2021 |
{ "vfclass.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfclass_v, rv_op_vfclass_v, 0 }, |
2066 |
{ "vfclass.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2022 |
{ "vfmerge.vfm", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vl, NULL, rv_op_vfmerge_vfm, rv_op_vfmerge_vfm, 0 }, |
2067 |
{ "vfmerge.vfm", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vl, NULL, 0, 0, 0 }, |
2023 |
{ "vfmv.v.f", rv_codec_v_r, rv_fmt_vd_fs1, NULL, rv_op_vfmv_v_f, rv_op_vfmv_v_f, 0 }, |
2068 |
{ "vfmv.v.f", rv_codec_v_r, rv_fmt_vd_fs1, NULL, 0, 0, 0 }, |
2024 |
{ "vfcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfcvt_xu_f_v, rv_op_vfcvt_xu_f_v, 0 }, |
2069 |
{ "vfcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2025 |
{ "vfcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfcvt_x_f_v, rv_op_vfcvt_x_f_v, 0 }, |
2070 |
{ "vfcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2026 |
{ "vfcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfcvt_f_xu_v, rv_op_vfcvt_f_xu_v, 0 }, |
2071 |
{ "vfcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2027 |
{ "vfcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfcvt_f_x_v, rv_op_vfcvt_f_x_v, 0 }, |
2072 |
{ "vfcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2028 |
{ "vfcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfcvt_rtz_xu_f_v, rv_op_vfcvt_rtz_xu_f_v, 0 }, |
2073 |
{ "vfcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2029 |
{ "vfcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfcvt_rtz_x_f_v, rv_op_vfcvt_rtz_x_f_v, 0 }, |
2074 |
{ "vfcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2030 |
{ "vfwcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfwcvt_xu_f_v, rv_op_vfwcvt_xu_f_v, 0 }, |
2075 |
{ "vfwcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2031 |
{ "vfwcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfwcvt_x_f_v, rv_op_vfwcvt_x_f_v, 0 }, |
2076 |
{ "vfwcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2032 |
{ "vfwcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfwcvt_f_xu_v, rv_op_vfwcvt_f_xu_v, 0 }, |
2077 |
{ "vfwcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2033 |
{ "vfwcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfwcvt_f_x_v, rv_op_vfwcvt_f_x_v, 0 }, |
2078 |
{ "vfwcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2034 |
{ "vfwcvt.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfwcvt_f_f_v, rv_op_vfwcvt_f_f_v, 0 }, |
2079 |
{ "vfwcvt.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2035 |
{ "vfwcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfwcvt_rtz_xu_f_v, rv_op_vfwcvt_rtz_xu_f_v, 0 }, |
2080 |
{ "vfwcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2036 |
{ "vfwcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfwcvt_rtz_x_f_v, rv_op_vfwcvt_rtz_x_f_v, 0 }, |
2081 |
{ "vfwcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2037 |
{ "vfncvt.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfncvt_xu_f_w, rv_op_vfncvt_xu_f_w, 0 }, |
2082 |
{ "vfncvt.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2038 |
{ "vfncvt.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfncvt_x_f_w, rv_op_vfncvt_x_f_w, 0 }, |
2083 |
{ "vfncvt.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2039 |
{ "vfncvt.f.xu.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfncvt_f_xu_w, rv_op_vfncvt_f_xu_w, 0 }, |
2084 |
{ "vfncvt.f.xu.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2040 |
{ "vfncvt.f.x.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfncvt_f_x_w, rv_op_vfncvt_f_x_w, 0 }, |
2085 |
{ "vfncvt.f.x.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2041 |
{ "vfncvt.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfncvt_f_f_w, rv_op_vfncvt_f_f_w, 0 }, |
2086 |
{ "vfncvt.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2042 |
{ "vfncvt.rod.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfncvt_rod_f_f_w, rv_op_vfncvt_rod_f_f_w, 0 }, |
2087 |
{ "vfncvt.rod.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2043 |
{ "vfncvt.rtz.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfncvt_rtz_xu_f_w, rv_op_vfncvt_rtz_xu_f_w, 0 }, |
2088 |
{ "vfncvt.rtz.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2044 |
{ "vfncvt.rtz.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vfncvt_rtz_x_f_w, rv_op_vfncvt_rtz_x_f_w, 0 }, |
2089 |
{ "vfncvt.rtz.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2045 |
{ "vredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vredsum_vs, rv_op_vredsum_vs, 0 }, |
2090 |
{ "vredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2046 |
{ "vredand.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vredand_vs, rv_op_vredand_vs, 0 }, |
2091 |
{ "vredand.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2047 |
{ "vredor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vredor_vs, rv_op_vredor_vs, 0 }, |
2092 |
{ "vredor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2048 |
{ "vredxor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vredxor_vs, rv_op_vredxor_vs, 0 }, |
2093 |
{ "vredxor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2049 |
{ "vredminu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vredminu_vs, rv_op_vredminu_vs, 0 }, |
2094 |
{ "vredminu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2050 |
{ "vredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vredmin_vs, rv_op_vredmin_vs, 0 }, |
2095 |
{ "vredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2051 |
{ "vredmaxu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vredmaxu_vs, rv_op_vredmaxu_vs, 0 }, |
2096 |
{ "vredmaxu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2052 |
{ "vredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vredmax_vs, rv_op_vredmax_vs, 0 }, |
2097 |
{ "vredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2053 |
{ "vwredsumu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwredsumu_vs, rv_op_vwredsumu_vs, 0 }, |
2098 |
{ "vwredsumu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2054 |
{ "vwredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vwredsum_vs, rv_op_vwredsum_vs, 0 }, |
2099 |
{ "vwredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2055 |
{ "vfredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfredusum_vs, rv_op_vfredusum_vs, 0 }, |
2100 |
{ "vfredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2056 |
{ "vfredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfredosum_vs, rv_op_vfredosum_vs, 0 }, |
2101 |
{ "vfredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2057 |
{ "vfredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfredmin_vs, rv_op_vfredmin_vs, 0 }, |
2102 |
{ "vfredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2058 |
{ "vfredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfredmax_vs, rv_op_vfredmax_vs, 0 }, |
2103 |
{ "vfredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2059 |
{ "vfwredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfwredusum_vs, rv_op_vfwredusum_vs, 0 }, |
2104 |
{ "vfwredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2060 |
{ "vfwredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vfwredosum_vs, rv_op_vfwredosum_vs, 0 }, |
2105 |
{ "vfwredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2061 |
{ "vmand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmand_mm, rv_op_vmand_mm, 0 }, |
2106 |
{ "vmand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2062 |
{ "vmnand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmnand_mm, rv_op_vmnand_mm, 0 }, |
2107 |
{ "vmnand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2063 |
{ "vmandn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmandn_mm, rv_op_vmandn_mm, 0 }, |
2108 |
{ "vmandn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2064 |
{ "vmxor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmxor_mm, rv_op_vmxor_mm, 0 }, |
2109 |
{ "vmxor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2065 |
{ "vmor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmor_mm, rv_op_vmor_mm, 0 }, |
2110 |
{ "vmor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2066 |
{ "vmnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmnor_mm, rv_op_vmnor_mm, 0 }, |
2111 |
{ "vmnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2067 |
{ "vmorn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmorn_mm, rv_op_vmorn_mm, 0 }, |
2112 |
{ "vmorn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2068 |
{ "vmxnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vmxnor_mm, rv_op_vmxnor_mm, 0 }, |
2113 |
{ "vmxnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2069 |
{ "vcpop.m", rv_codec_v_r, rv_fmt_rd_vs2_vm, NULL, rv_op_vcpop_m, rv_op_vcpop_m, 0 }, |
2114 |
{ "vcpop.m", rv_codec_v_r, rv_fmt_rd_vs2_vm, NULL, 0, 0, 0 }, |
2070 |
{ "vfirst.m", rv_codec_v_r, rv_fmt_rd_vs2_vm, NULL, rv_op_vfirst_m, rv_op_vfirst_m, 0 }, |
2115 |
{ "vfirst.m", rv_codec_v_r, rv_fmt_rd_vs2_vm, NULL, 0, 0, 0 }, |
2071 |
{ "vmsbf.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vmsbf_m, rv_op_vmsbf_m, 0 }, |
2116 |
{ "vmsbf.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2072 |
{ "vmsif.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vmsif_m, rv_op_vmsif_m, 0 }, |
2117 |
{ "vmsif.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2073 |
{ "vmsof.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vmsof_m, rv_op_vmsof_m, 0 }, |
2118 |
{ "vmsof.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2074 |
{ "viota.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_viota_m, rv_op_viota_m, 0 }, |
2119 |
{ "viota.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2075 |
{ "vid.v", rv_codec_v_r, rv_fmt_vd_vm, NULL, rv_op_vid_v, rv_op_vid_v, 0 }, |
2120 |
{ "vid.v", rv_codec_v_r, rv_fmt_vd_vm, NULL, 0, 0, 0 }, |
2076 |
{ "vmv.x.s", rv_codec_v_r, rv_fmt_rd_vs2, NULL, rv_op_vmv_x_s, rv_op_vmv_x_s, 0 }, |
2121 |
{ "vmv.x.s", rv_codec_v_r, rv_fmt_rd_vs2, NULL, 0, 0, 0 }, |
2077 |
{ "vmv.s.x", rv_codec_v_r, rv_fmt_vd_rs1, NULL, rv_op_vmv_s_x, rv_op_vmv_s_x, 0 }, |
2122 |
{ "vmv.s.x", rv_codec_v_r, rv_fmt_vd_rs1, NULL, 0, 0, 0 }, |
2078 |
{ "vfmv.f.s", rv_codec_v_r, rv_fmt_fd_vs2, NULL, rv_op_vfmv_f_s, rv_op_vfmv_f_s, 0 }, |
2123 |
{ "vfmv.f.s", rv_codec_v_r, rv_fmt_fd_vs2, NULL, 0, 0, 0 }, |
2079 |
{ "vfmv.s.f", rv_codec_v_r, rv_fmt_vd_fs1, NULL, rv_op_vfmv_s_f, rv_op_vfmv_s_f, 0 }, |
2124 |
{ "vfmv.s.f", rv_codec_v_r, rv_fmt_vd_fs1, NULL, 0, 0, 0 }, |
2080 |
{ "vslideup.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vslideup_vx, rv_op_vslideup_vx, 0 }, |
2125 |
{ "vslideup.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
2081 |
{ "vslideup.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vslideup_vi, rv_op_vslideup_vi, 0 }, |
2126 |
{ "vslideup.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
2082 |
{ "vslide1up.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vslide1up_vx, rv_op_vslide1up_vx, 0 }, |
2127 |
{ "vslide1up.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
2083 |
{ "vslidedown.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vslidedown_vx, rv_op_vslidedown_vx, 0 }, |
2128 |
{ "vslidedown.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
2084 |
{ "vslidedown.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vslidedown_vi, rv_op_vslidedown_vi, 0 }, |
2129 |
{ "vslidedown.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
2085 |
{ "vslide1down.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vslide1down_vx, rv_op_vslide1down_vx, 0 }, |
2130 |
{ "vslide1down.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
2086 |
{ "vrgather.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vrgather_vv, rv_op_vrgather_vv, 0 }, |
2131 |
{ "vrgather.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2087 |
{ "vrgatherei16.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, rv_op_vrgatherei16_vv, rv_op_vrgatherei16_vv, 0 }, |
2132 |
{ "vrgatherei16.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, |
2088 |
{ "vrgather.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, rv_op_vrgather_vx, rv_op_vrgather_vx, 0 }, |
2133 |
{ "vrgather.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, |
2089 |
{ "vrgather.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, rv_op_vrgather_vi, rv_op_vrgather_vi, 0 }, |
2134 |
{ "vrgather.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, |
2090 |
{ "vcompress.vm", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, rv_op_vcompress_vm, rv_op_vcompress_vm, 0 }, |
2135 |
{ "vcompress.vm", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, |
2091 |
{ "vmv1r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, rv_op_vmv1r_v, rv_op_vmv1r_v, 0 }, |
2136 |
{ "vmv1r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, |
2092 |
{ "vmv2r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, rv_op_vmv2r_v, rv_op_vmv2r_v, 0 }, |
2137 |
{ "vmv2r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, |
2093 |
{ "vmv4r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, rv_op_vmv4r_v, rv_op_vmv4r_v, 0 }, |
2138 |
{ "vmv4r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, |
2094 |
{ "vmv8r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, rv_op_vmv8r_v, rv_op_vmv8r_v, 0 }, |
2139 |
{ "vmv8r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, |
2095 |
{ "vzext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vzext_vf2, rv_op_vzext_vf2, 0 }, |
2140 |
{ "vzext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2096 |
{ "vzext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vzext_vf4, rv_op_vzext_vf4, 0 }, |
2141 |
{ "vzext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2097 |
{ "vzext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vzext_vf8, rv_op_vzext_vf8, 0 }, |
2142 |
{ "vzext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2098 |
{ "vsext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vsext_vf2, rv_op_vsext_vf2, 0 }, |
2143 |
{ "vsext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2099 |
{ "vsext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vsext_vf4, rv_op_vsext_vf4, 0 }, |
2144 |
{ "vsext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2100 |
{ "vsext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, rv_op_vsext_vf8, rv_op_vsext_vf8, 0 }, |
2145 |
{ "vsext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, |
2101 |
{ "vsetvli", rv_codec_vsetvli, rv_fmt_vsetvli, NULL, rv_op_vsetvli, rv_op_vsetvli, 0 }, |
2146 |
{ "vsetvli", rv_codec_vsetvli, rv_fmt_vsetvli, NULL, 0, 0, 0 }, |
2102 |
{ "vsetivli", rv_codec_vsetivli, rv_fmt_vsetivli, NULL, rv_op_vsetivli, rv_op_vsetivli, 0 }, |
2147 |
{ "vsetivli", rv_codec_vsetivli, rv_fmt_vsetivli, NULL, 0, 0, 0 }, |
2103 |
{ "vsetvl", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, rv_op_vsetvl, rv_op_vsetvl, 0 }, |
2148 |
{ "vsetvl", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, |
2104 |
{ "c.zext.b", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, |
2149 |
{ "c.zext.b", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, |
2105 |
{ "c.sext.b", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, |
2150 |
{ "c.sext.b", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, |
2106 |
{ "c.zext.h", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, |
2151 |
{ "c.zext.h", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, |
Lines 2345-2353
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2345 |
{ |
2390 |
{ |
2346 |
rv_inst inst = dec->inst; |
2391 |
rv_inst inst = dec->inst; |
2347 |
rv_opcode op = rv_op_illegal; |
2392 |
rv_opcode op = rv_op_illegal; |
2348 |
switch (((inst >> 0) & 0b11)) { |
2393 |
switch ((inst >> 0) & 0b11) { |
2349 |
case 0: |
2394 |
case 0: |
2350 |
switch (((inst >> 13) & 0b111)) { |
2395 |
switch ((inst >> 13) & 0b111) { |
2351 |
case 0: op = rv_op_c_addi4spn; break; |
2396 |
case 0: op = rv_op_c_addi4spn; break; |
2352 |
case 1: |
2397 |
case 1: |
2353 |
if (isa == rv128) { |
2398 |
if (isa == rv128) { |
Lines 2400-2408
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2400 |
} |
2445 |
} |
2401 |
break; |
2446 |
break; |
2402 |
case 1: |
2447 |
case 1: |
2403 |
switch (((inst >> 13) & 0b111)) { |
2448 |
switch ((inst >> 13) & 0b111) { |
2404 |
case 0: |
2449 |
case 0: |
2405 |
switch (((inst >> 2) & 0b11111111111)) { |
2450 |
switch ((inst >> 2) & 0b11111111111) { |
2406 |
case 0: op = rv_op_c_nop; break; |
2451 |
case 0: op = rv_op_c_nop; break; |
2407 |
default: op = rv_op_c_addi; break; |
2452 |
default: op = rv_op_c_addi; break; |
2408 |
} |
2453 |
} |
Lines 2416-2428
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2416 |
break; |
2461 |
break; |
2417 |
case 2: op = rv_op_c_li; break; |
2462 |
case 2: op = rv_op_c_li; break; |
2418 |
case 3: |
2463 |
case 3: |
2419 |
switch (((inst >> 7) & 0b11111)) { |
2464 |
switch ((inst >> 7) & 0b11111) { |
2420 |
case 2: op = rv_op_c_addi16sp; break; |
2465 |
case 2: op = rv_op_c_addi16sp; break; |
2421 |
default: op = rv_op_c_lui; break; |
2466 |
default: op = rv_op_c_lui; break; |
2422 |
} |
2467 |
} |
2423 |
break; |
2468 |
break; |
2424 |
case 4: |
2469 |
case 4: |
2425 |
switch (((inst >> 10) & 0b11)) { |
2470 |
switch ((inst >> 10) & 0b11) { |
2426 |
case 0: |
2471 |
case 0: |
2427 |
op = rv_op_c_srli; |
2472 |
op = rv_op_c_srli; |
2428 |
break; |
2473 |
break; |
Lines 2459-2465
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2459 |
} |
2504 |
} |
2460 |
break; |
2505 |
break; |
2461 |
case 2: |
2506 |
case 2: |
2462 |
switch (((inst >> 13) & 0b111)) { |
2507 |
switch ((inst >> 13) & 0b111) { |
2463 |
case 0: |
2508 |
case 0: |
2464 |
op = rv_op_c_slli; |
2509 |
op = rv_op_c_slli; |
2465 |
break; |
2510 |
break; |
Lines 2479-2495
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2479 |
} |
2524 |
} |
2480 |
break; |
2525 |
break; |
2481 |
case 4: |
2526 |
case 4: |
2482 |
switch (((inst >> 12) & 0b1)) { |
2527 |
switch ((inst >> 12) & 0b1) { |
2483 |
case 0: |
2528 |
case 0: |
2484 |
switch (((inst >> 2) & 0b11111)) { |
2529 |
switch ((inst >> 2) & 0b11111) { |
2485 |
case 0: op = rv_op_c_jr; break; |
2530 |
case 0: op = rv_op_c_jr; break; |
2486 |
default: op = rv_op_c_mv; break; |
2531 |
default: op = rv_op_c_mv; break; |
2487 |
} |
2532 |
} |
2488 |
break; |
2533 |
break; |
2489 |
case 1: |
2534 |
case 1: |
2490 |
switch (((inst >> 2) & 0b11111)) { |
2535 |
switch ((inst >> 2) & 0b11111) { |
2491 |
case 0: |
2536 |
case 0: |
2492 |
switch (((inst >> 7) & 0b11111)) { |
2537 |
switch ((inst >> 7) & 0b11111) { |
2493 |
case 0: op = rv_op_c_ebreak; break; |
2538 |
case 0: op = rv_op_c_ebreak; break; |
2494 |
default: op = rv_op_c_jalr; break; |
2539 |
default: op = rv_op_c_jalr; break; |
2495 |
} |
2540 |
} |
Lines 2504-2510
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2504 |
op = rv_op_c_sqsp; |
2549 |
op = rv_op_c_sqsp; |
2505 |
} else { |
2550 |
} else { |
2506 |
op = rv_op_c_fsdsp; |
2551 |
op = rv_op_c_fsdsp; |
2507 |
if (((inst >> 12) & 0b01)) { |
2552 |
if (dec->cfg->ext_zcmp && ((inst >> 12) & 0b01)) { |
2508 |
switch ((inst >> 8) & 0b01111) { |
2553 |
switch ((inst >> 8) & 0b01111) { |
2509 |
case 8: |
2554 |
case 8: |
2510 |
if (((inst >> 4) & 0b01111) >= 4) { |
2555 |
if (((inst >> 4) & 0b01111) >= 4) { |
Lines 2530-2535
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2530 |
} else { |
2575 |
} else { |
2531 |
switch ((inst >> 10) & 0b011) { |
2576 |
switch ((inst >> 10) & 0b011) { |
2532 |
case 0: |
2577 |
case 0: |
|
|
2578 |
if (!dec->cfg->ext_zcmt) { |
2579 |
break; |
2580 |
} |
2533 |
if (((inst >> 2) & 0xFF) >= 32) { |
2581 |
if (((inst >> 2) & 0xFF) >= 32) { |
2534 |
op = rv_op_cm_jalt; |
2582 |
op = rv_op_cm_jalt; |
2535 |
} else { |
2583 |
} else { |
Lines 2537-2542
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2537 |
} |
2585 |
} |
2538 |
break; |
2586 |
break; |
2539 |
case 3: |
2587 |
case 3: |
|
|
2588 |
if (!dec->cfg->ext_zcmp) { |
2589 |
break; |
2590 |
} |
2540 |
switch ((inst >> 5) & 0b011) { |
2591 |
switch ((inst >> 5) & 0b011) { |
2541 |
case 1: op = rv_op_cm_mvsa01; break; |
2592 |
case 1: op = rv_op_cm_mvsa01; break; |
2542 |
case 3: op = rv_op_cm_mva01s; break; |
2593 |
case 3: op = rv_op_cm_mva01s; break; |
Lines 2557-2565
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2557 |
} |
2608 |
} |
2558 |
break; |
2609 |
break; |
2559 |
case 3: |
2610 |
case 3: |
2560 |
switch (((inst >> 2) & 0b11111)) { |
2611 |
switch ((inst >> 2) & 0b11111) { |
2561 |
case 0: |
2612 |
case 0: |
2562 |
switch (((inst >> 12) & 0b111)) { |
2613 |
switch ((inst >> 12) & 0b111) { |
2563 |
case 0: op = rv_op_lb; break; |
2614 |
case 0: op = rv_op_lb; break; |
2564 |
case 1: op = rv_op_lh; break; |
2615 |
case 1: op = rv_op_lh; break; |
2565 |
case 2: op = rv_op_lw; break; |
2616 |
case 2: op = rv_op_lw; break; |
Lines 2571-2587
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2571 |
} |
2622 |
} |
2572 |
break; |
2623 |
break; |
2573 |
case 1: |
2624 |
case 1: |
2574 |
switch (((inst >> 12) & 0b111)) { |
2625 |
switch ((inst >> 12) & 0b111) { |
2575 |
case 0: |
2626 |
case 0: |
2576 |
switch (((inst >> 20) & 0b111111111111)) { |
2627 |
switch ((inst >> 20) & 0b111111111111) { |
2577 |
case 40: op = rv_op_vl1re8_v; break; |
2628 |
case 40: op = rv_op_vl1re8_v; break; |
2578 |
case 552: op = rv_op_vl2re8_v; break; |
2629 |
case 552: op = rv_op_vl2re8_v; break; |
2579 |
case 1576: op = rv_op_vl4re8_v; break; |
2630 |
case 1576: op = rv_op_vl4re8_v; break; |
2580 |
case 3624: op = rv_op_vl8re8_v; break; |
2631 |
case 3624: op = rv_op_vl8re8_v; break; |
2581 |
} |
2632 |
} |
2582 |
switch (((inst >> 26) & 0b111)) { |
2633 |
switch ((inst >> 26) & 0b111) { |
2583 |
case 0: |
2634 |
case 0: |
2584 |
switch (((inst >> 20) & 0b11111)) { |
2635 |
switch ((inst >> 20) & 0b11111) { |
2585 |
case 0: op = rv_op_vle8_v; break; |
2636 |
case 0: op = rv_op_vle8_v; break; |
2586 |
case 11: op = rv_op_vlm_v; break; |
2637 |
case 11: op = rv_op_vlm_v; break; |
2587 |
case 16: op = rv_op_vle8ff_v; break; |
2638 |
case 16: op = rv_op_vle8ff_v; break; |
Lines 2596-2610
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2596 |
case 3: op = rv_op_fld; break; |
2647 |
case 3: op = rv_op_fld; break; |
2597 |
case 4: op = rv_op_flq; break; |
2648 |
case 4: op = rv_op_flq; break; |
2598 |
case 5: |
2649 |
case 5: |
2599 |
switch (((inst >> 20) & 0b111111111111)) { |
2650 |
switch ((inst >> 20) & 0b111111111111) { |
2600 |
case 40: op = rv_op_vl1re16_v; break; |
2651 |
case 40: op = rv_op_vl1re16_v; break; |
2601 |
case 552: op = rv_op_vl2re16_v; break; |
2652 |
case 552: op = rv_op_vl2re16_v; break; |
2602 |
case 1576: op = rv_op_vl4re16_v; break; |
2653 |
case 1576: op = rv_op_vl4re16_v; break; |
2603 |
case 3624: op = rv_op_vl8re16_v; break; |
2654 |
case 3624: op = rv_op_vl8re16_v; break; |
2604 |
} |
2655 |
} |
2605 |
switch (((inst >> 26) & 0b111)) { |
2656 |
switch ((inst >> 26) & 0b111) { |
2606 |
case 0: |
2657 |
case 0: |
2607 |
switch (((inst >> 20) & 0b11111)) { |
2658 |
switch ((inst >> 20) & 0b11111) { |
2608 |
case 0: op = rv_op_vle16_v; break; |
2659 |
case 0: op = rv_op_vle16_v; break; |
2609 |
case 16: op = rv_op_vle16ff_v; break; |
2660 |
case 16: op = rv_op_vle16ff_v; break; |
2610 |
} |
2661 |
} |
Lines 2615-2629
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2615 |
} |
2666 |
} |
2616 |
break; |
2667 |
break; |
2617 |
case 6: |
2668 |
case 6: |
2618 |
switch (((inst >> 20) & 0b111111111111)) { |
2669 |
switch ((inst >> 20) & 0b111111111111) { |
2619 |
case 40: op = rv_op_vl1re32_v; break; |
2670 |
case 40: op = rv_op_vl1re32_v; break; |
2620 |
case 552: op = rv_op_vl2re32_v; break; |
2671 |
case 552: op = rv_op_vl2re32_v; break; |
2621 |
case 1576: op = rv_op_vl4re32_v; break; |
2672 |
case 1576: op = rv_op_vl4re32_v; break; |
2622 |
case 3624: op = rv_op_vl8re32_v; break; |
2673 |
case 3624: op = rv_op_vl8re32_v; break; |
2623 |
} |
2674 |
} |
2624 |
switch (((inst >> 26) & 0b111)) { |
2675 |
switch ((inst >> 26) & 0b111) { |
2625 |
case 0: |
2676 |
case 0: |
2626 |
switch (((inst >> 20) & 0b11111)) { |
2677 |
switch ((inst >> 20) & 0b11111) { |
2627 |
case 0: op = rv_op_vle32_v; break; |
2678 |
case 0: op = rv_op_vle32_v; break; |
2628 |
case 16: op = rv_op_vle32ff_v; break; |
2679 |
case 16: op = rv_op_vle32ff_v; break; |
2629 |
} |
2680 |
} |
Lines 2634-2648
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2634 |
} |
2685 |
} |
2635 |
break; |
2686 |
break; |
2636 |
case 7: |
2687 |
case 7: |
2637 |
switch (((inst >> 20) & 0b111111111111)) { |
2688 |
switch ((inst >> 20) & 0b111111111111) { |
2638 |
case 40: op = rv_op_vl1re64_v; break; |
2689 |
case 40: op = rv_op_vl1re64_v; break; |
2639 |
case 552: op = rv_op_vl2re64_v; break; |
2690 |
case 552: op = rv_op_vl2re64_v; break; |
2640 |
case 1576: op = rv_op_vl4re64_v; break; |
2691 |
case 1576: op = rv_op_vl4re64_v; break; |
2641 |
case 3624: op = rv_op_vl8re64_v; break; |
2692 |
case 3624: op = rv_op_vl8re64_v; break; |
2642 |
} |
2693 |
} |
2643 |
switch (((inst >> 26) & 0b111)) { |
2694 |
switch ((inst >> 26) & 0b111) { |
2644 |
case 0: |
2695 |
case 0: |
2645 |
switch (((inst >> 20) & 0b11111)) { |
2696 |
switch ((inst >> 20) & 0b11111) { |
2646 |
case 0: op = rv_op_vle64_v; break; |
2697 |
case 0: op = rv_op_vle64_v; break; |
2647 |
case 16: op = rv_op_vle64ff_v; break; |
2698 |
case 16: op = rv_op_vle64ff_v; break; |
2648 |
} |
2699 |
} |
Lines 2655-2679
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2655 |
} |
2706 |
} |
2656 |
break; |
2707 |
break; |
2657 |
case 3: |
2708 |
case 3: |
2658 |
switch (((inst >> 12) & 0b111)) { |
2709 |
switch ((inst >> 12) & 0b111) { |
2659 |
case 0: op = rv_op_fence; break; |
2710 |
case 0: op = rv_op_fence; break; |
2660 |
case 1: op = rv_op_fence_i; break; |
2711 |
case 1: op = rv_op_fence_i; break; |
2661 |
case 2: op = rv_op_lq; break; |
2712 |
case 2: op = rv_op_lq; break; |
2662 |
} |
2713 |
} |
2663 |
break; |
2714 |
break; |
2664 |
case 4: |
2715 |
case 4: |
2665 |
switch (((inst >> 12) & 0b111)) { |
2716 |
switch ((inst >> 12) & 0b111) { |
2666 |
case 0: op = rv_op_addi; break; |
2717 |
case 0: op = rv_op_addi; break; |
2667 |
case 1: |
2718 |
case 1: |
2668 |
switch (((inst >> 27) & 0b11111)) { |
2719 |
switch ((inst >> 27) & 0b11111) { |
2669 |
case 0b00000: op = rv_op_slli; break; |
2720 |
case 0b00000: op = rv_op_slli; break; |
2670 |
case 0b00001: |
2721 |
case 0b00001: |
2671 |
switch (((inst >> 20) & 0b1111111)) { |
2722 |
switch ((inst >> 20) & 0b1111111) { |
2672 |
case 0b0001111: op = rv_op_zip; break; |
2723 |
case 0b0001111: op = rv_op_zip; break; |
2673 |
} |
2724 |
} |
2674 |
break; |
2725 |
break; |
2675 |
case 0b00010: |
2726 |
case 0b00010: |
2676 |
switch (((inst >> 20) & 0b1111111)) { |
2727 |
switch ((inst >> 20) & 0b1111111) { |
2677 |
case 0b0000000: op = rv_op_sha256sum0; break; |
2728 |
case 0b0000000: op = rv_op_sha256sum0; break; |
2678 |
case 0b0000001: op = rv_op_sha256sum1; break; |
2729 |
case 0b0000001: op = rv_op_sha256sum1; break; |
2679 |
case 0b0000010: op = rv_op_sha256sig0; break; |
2730 |
case 0b0000010: op = rv_op_sha256sig0; break; |
Lines 2688-2694
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2688 |
break; |
2739 |
break; |
2689 |
case 0b00101: op = rv_op_bseti; break; |
2740 |
case 0b00101: op = rv_op_bseti; break; |
2690 |
case 0b00110: |
2741 |
case 0b00110: |
2691 |
switch (((inst >> 20) & 0b1111111)) { |
2742 |
switch ((inst >> 20) & 0b1111111) { |
2692 |
case 0b0000000: op = rv_op_aes64im; break; |
2743 |
case 0b0000000: op = rv_op_aes64im; break; |
2693 |
default: |
2744 |
default: |
2694 |
if (((inst >> 24) & 0b0111) == 0b001) { |
2745 |
if (((inst >> 24) & 0b0111) == 0b001) { |
Lines 2700-2706
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2700 |
case 0b01001: op = rv_op_bclri; break; |
2751 |
case 0b01001: op = rv_op_bclri; break; |
2701 |
case 0b01101: op = rv_op_binvi; break; |
2752 |
case 0b01101: op = rv_op_binvi; break; |
2702 |
case 0b01100: |
2753 |
case 0b01100: |
2703 |
switch (((inst >> 20) & 0b1111111)) { |
2754 |
switch ((inst >> 20) & 0b1111111) { |
2704 |
case 0b0000000: op = rv_op_clz; break; |
2755 |
case 0b0000000: op = rv_op_clz; break; |
2705 |
case 0b0000001: op = rv_op_ctz; break; |
2756 |
case 0b0000001: op = rv_op_ctz; break; |
2706 |
case 0b0000010: op = rv_op_cpop; break; |
2757 |
case 0b0000010: op = rv_op_cpop; break; |
Lines 2715-2724
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2715 |
case 3: op = rv_op_sltiu; break; |
2766 |
case 3: op = rv_op_sltiu; break; |
2716 |
case 4: op = rv_op_xori; break; |
2767 |
case 4: op = rv_op_xori; break; |
2717 |
case 5: |
2768 |
case 5: |
2718 |
switch (((inst >> 27) & 0b11111)) { |
2769 |
switch ((inst >> 27) & 0b11111) { |
2719 |
case 0b00000: op = rv_op_srli; break; |
2770 |
case 0b00000: op = rv_op_srli; break; |
2720 |
case 0b00001: |
2771 |
case 0b00001: |
2721 |
switch (((inst >> 20) & 0b1111111)) { |
2772 |
switch ((inst >> 20) & 0b1111111) { |
2722 |
case 0b0001111: op = rv_op_unzip; break; |
2773 |
case 0b0001111: op = rv_op_unzip; break; |
2723 |
} |
2774 |
} |
2724 |
break; |
2775 |
break; |
Lines 2741-2750
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2741 |
break; |
2792 |
break; |
2742 |
case 5: op = rv_op_auipc; break; |
2793 |
case 5: op = rv_op_auipc; break; |
2743 |
case 6: |
2794 |
case 6: |
2744 |
switch (((inst >> 12) & 0b111)) { |
2795 |
switch ((inst >> 12) & 0b111) { |
2745 |
case 0: op = rv_op_addiw; break; |
2796 |
case 0: op = rv_op_addiw; break; |
2746 |
case 1: |
2797 |
case 1: |
2747 |
switch (((inst >> 26) & 0b111111)) { |
2798 |
switch ((inst >> 26) & 0b111111) { |
2748 |
case 0: op = rv_op_slliw; break; |
2799 |
case 0: op = rv_op_slliw; break; |
2749 |
case 2: op = rv_op_slli_uw; break; |
2800 |
case 2: op = rv_op_slli_uw; break; |
2750 |
case 24: |
2801 |
case 24: |
Lines 2757-2763
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2757 |
} |
2808 |
} |
2758 |
break; |
2809 |
break; |
2759 |
case 5: |
2810 |
case 5: |
2760 |
switch (((inst >> 25) & 0b1111111)) { |
2811 |
switch ((inst >> 25) & 0b1111111) { |
2761 |
case 0: op = rv_op_srliw; break; |
2812 |
case 0: op = rv_op_srliw; break; |
2762 |
case 32: op = rv_op_sraiw; break; |
2813 |
case 32: op = rv_op_sraiw; break; |
2763 |
case 48: op = rv_op_roriw; break; |
2814 |
case 48: op = rv_op_roriw; break; |
Lines 2766-2772
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2766 |
} |
2817 |
} |
2767 |
break; |
2818 |
break; |
2768 |
case 8: |
2819 |
case 8: |
2769 |
switch (((inst >> 12) & 0b111)) { |
2820 |
switch ((inst >> 12) & 0b111) { |
2770 |
case 0: op = rv_op_sb; break; |
2821 |
case 0: op = rv_op_sb; break; |
2771 |
case 1: op = rv_op_sh; break; |
2822 |
case 1: op = rv_op_sh; break; |
2772 |
case 2: op = rv_op_sw; break; |
2823 |
case 2: op = rv_op_sw; break; |
Lines 2775-2791
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2775 |
} |
2826 |
} |
2776 |
break; |
2827 |
break; |
2777 |
case 9: |
2828 |
case 9: |
2778 |
switch (((inst >> 12) & 0b111)) { |
2829 |
switch ((inst >> 12) & 0b111) { |
2779 |
case 0: |
2830 |
case 0: |
2780 |
switch (((inst >> 20) & 0b111111111111)) { |
2831 |
switch ((inst >> 20) & 0b111111111111) { |
2781 |
case 40: op = rv_op_vs1r_v; break; |
2832 |
case 40: op = rv_op_vs1r_v; break; |
2782 |
case 552: op = rv_op_vs2r_v; break; |
2833 |
case 552: op = rv_op_vs2r_v; break; |
2783 |
case 1576: op = rv_op_vs4r_v; break; |
2834 |
case 1576: op = rv_op_vs4r_v; break; |
2784 |
case 3624: op = rv_op_vs8r_v; break; |
2835 |
case 3624: op = rv_op_vs8r_v; break; |
2785 |
} |
2836 |
} |
2786 |
switch (((inst >> 26) & 0b111)) { |
2837 |
switch ((inst >> 26) & 0b111) { |
2787 |
case 0: |
2838 |
case 0: |
2788 |
switch (((inst >> 20) & 0b11111)) { |
2839 |
switch ((inst >> 20) & 0b11111) { |
2789 |
case 0: op = rv_op_vse8_v; break; |
2840 |
case 0: op = rv_op_vse8_v; break; |
2790 |
case 11: op = rv_op_vsm_v; break; |
2841 |
case 11: op = rv_op_vsm_v; break; |
2791 |
} |
2842 |
} |
Lines 2799-2807
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2799 |
case 3: op = rv_op_fsd; break; |
2850 |
case 3: op = rv_op_fsd; break; |
2800 |
case 4: op = rv_op_fsq; break; |
2851 |
case 4: op = rv_op_fsq; break; |
2801 |
case 5: |
2852 |
case 5: |
2802 |
switch (((inst >> 26) & 0b111)) { |
2853 |
switch ((inst >> 26) & 0b111) { |
2803 |
case 0: |
2854 |
case 0: |
2804 |
switch (((inst >> 20) & 0b11111)) { |
2855 |
switch ((inst >> 20) & 0b11111) { |
2805 |
case 0: op = rv_op_vse16_v; break; |
2856 |
case 0: op = rv_op_vse16_v; break; |
2806 |
} |
2857 |
} |
2807 |
break; |
2858 |
break; |
Lines 2811-2819
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2811 |
} |
2862 |
} |
2812 |
break; |
2863 |
break; |
2813 |
case 6: |
2864 |
case 6: |
2814 |
switch (((inst >> 26) & 0b111)) { |
2865 |
switch ((inst >> 26) & 0b111) { |
2815 |
case 0: |
2866 |
case 0: |
2816 |
switch (((inst >> 20) & 0b11111)) { |
2867 |
switch ((inst >> 20) & 0b11111) { |
2817 |
case 0: op = rv_op_vse32_v; break; |
2868 |
case 0: op = rv_op_vse32_v; break; |
2818 |
} |
2869 |
} |
2819 |
break; |
2870 |
break; |
Lines 2823-2831
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2823 |
} |
2874 |
} |
2824 |
break; |
2875 |
break; |
2825 |
case 7: |
2876 |
case 7: |
2826 |
switch (((inst >> 26) & 0b111)) { |
2877 |
switch ((inst >> 26) & 0b111) { |
2827 |
case 0: |
2878 |
case 0: |
2828 |
switch (((inst >> 20) & 0b11111)) { |
2879 |
switch ((inst >> 20) & 0b11111) { |
2829 |
case 0: op = rv_op_vse64_v; break; |
2880 |
case 0: op = rv_op_vse64_v; break; |
2830 |
} |
2881 |
} |
2831 |
break; |
2882 |
break; |
Lines 2837-2843
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2837 |
} |
2888 |
} |
2838 |
break; |
2889 |
break; |
2839 |
case 11: |
2890 |
case 11: |
2840 |
switch (((inst >> 24) & 0b11111000) | ((inst >> 12) & 0b00000111)) { |
2891 |
switch (((inst >> 24) & 0b11111000) | |
|
|
2892 |
((inst >> 12) & 0b00000111)) { |
2841 |
case 2: op = rv_op_amoadd_w; break; |
2893 |
case 2: op = rv_op_amoadd_w; break; |
2842 |
case 3: op = rv_op_amoadd_d; break; |
2894 |
case 3: op = rv_op_amoadd_d; break; |
2843 |
case 4: op = rv_op_amoadd_q; break; |
2895 |
case 4: op = rv_op_amoadd_q; break; |
Lines 2845-2861
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2845 |
case 11: op = rv_op_amoswap_d; break; |
2897 |
case 11: op = rv_op_amoswap_d; break; |
2846 |
case 12: op = rv_op_amoswap_q; break; |
2898 |
case 12: op = rv_op_amoswap_q; break; |
2847 |
case 18: |
2899 |
case 18: |
2848 |
switch (((inst >> 20) & 0b11111)) { |
2900 |
switch ((inst >> 20) & 0b11111) { |
2849 |
case 0: op = rv_op_lr_w; break; |
2901 |
case 0: op = rv_op_lr_w; break; |
2850 |
} |
2902 |
} |
2851 |
break; |
2903 |
break; |
2852 |
case 19: |
2904 |
case 19: |
2853 |
switch (((inst >> 20) & 0b11111)) { |
2905 |
switch ((inst >> 20) & 0b11111) { |
2854 |
case 0: op = rv_op_lr_d; break; |
2906 |
case 0: op = rv_op_lr_d; break; |
2855 |
} |
2907 |
} |
2856 |
break; |
2908 |
break; |
2857 |
case 20: |
2909 |
case 20: |
2858 |
switch (((inst >> 20) & 0b11111)) { |
2910 |
switch ((inst >> 20) & 0b11111) { |
2859 |
case 0: op = rv_op_lr_q; break; |
2911 |
case 0: op = rv_op_lr_q; break; |
2860 |
} |
2912 |
} |
2861 |
break; |
2913 |
break; |
Lines 2886-2892
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2886 |
} |
2938 |
} |
2887 |
break; |
2939 |
break; |
2888 |
case 12: |
2940 |
case 12: |
2889 |
switch (((inst >> 22) & 0b1111111000) | ((inst >> 12) & 0b0000000111)) { |
2941 |
switch (((inst >> 22) & 0b1111111000) | |
|
|
2942 |
((inst >> 12) & 0b0000000111)) { |
2890 |
case 0: op = rv_op_add; break; |
2943 |
case 0: op = rv_op_add; break; |
2891 |
case 1: op = rv_op_sll; break; |
2944 |
case 1: op = rv_op_sll; break; |
2892 |
case 2: op = rv_op_slt; break; |
2945 |
case 2: op = rv_op_slt; break; |
Lines 2959-2965
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2959 |
break; |
3012 |
break; |
2960 |
case 13: op = rv_op_lui; break; |
3013 |
case 13: op = rv_op_lui; break; |
2961 |
case 14: |
3014 |
case 14: |
2962 |
switch (((inst >> 22) & 0b1111111000) | ((inst >> 12) & 0b0000000111)) { |
3015 |
switch (((inst >> 22) & 0b1111111000) | |
|
|
3016 |
((inst >> 12) & 0b0000000111)) { |
2963 |
case 0: op = rv_op_addw; break; |
3017 |
case 0: op = rv_op_addw; break; |
2964 |
case 1: op = rv_op_sllw; break; |
3018 |
case 1: op = rv_op_sllw; break; |
2965 |
case 5: op = rv_op_srlw; break; |
3019 |
case 5: op = rv_op_srlw; break; |
Lines 2985-3019
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
2985 |
} |
3039 |
} |
2986 |
break; |
3040 |
break; |
2987 |
case 16: |
3041 |
case 16: |
2988 |
switch (((inst >> 25) & 0b11)) { |
3042 |
switch ((inst >> 25) & 0b11) { |
2989 |
case 0: op = rv_op_fmadd_s; break; |
3043 |
case 0: op = rv_op_fmadd_s; break; |
2990 |
case 1: op = rv_op_fmadd_d; break; |
3044 |
case 1: op = rv_op_fmadd_d; break; |
2991 |
case 3: op = rv_op_fmadd_q; break; |
3045 |
case 3: op = rv_op_fmadd_q; break; |
2992 |
} |
3046 |
} |
2993 |
break; |
3047 |
break; |
2994 |
case 17: |
3048 |
case 17: |
2995 |
switch (((inst >> 25) & 0b11)) { |
3049 |
switch ((inst >> 25) & 0b11) { |
2996 |
case 0: op = rv_op_fmsub_s; break; |
3050 |
case 0: op = rv_op_fmsub_s; break; |
2997 |
case 1: op = rv_op_fmsub_d; break; |
3051 |
case 1: op = rv_op_fmsub_d; break; |
2998 |
case 3: op = rv_op_fmsub_q; break; |
3052 |
case 3: op = rv_op_fmsub_q; break; |
2999 |
} |
3053 |
} |
3000 |
break; |
3054 |
break; |
3001 |
case 18: |
3055 |
case 18: |
3002 |
switch (((inst >> 25) & 0b11)) { |
3056 |
switch ((inst >> 25) & 0b11) { |
3003 |
case 0: op = rv_op_fnmsub_s; break; |
3057 |
case 0: op = rv_op_fnmsub_s; break; |
3004 |
case 1: op = rv_op_fnmsub_d; break; |
3058 |
case 1: op = rv_op_fnmsub_d; break; |
3005 |
case 3: op = rv_op_fnmsub_q; break; |
3059 |
case 3: op = rv_op_fnmsub_q; break; |
3006 |
} |
3060 |
} |
3007 |
break; |
3061 |
break; |
3008 |
case 19: |
3062 |
case 19: |
3009 |
switch (((inst >> 25) & 0b11)) { |
3063 |
switch ((inst >> 25) & 0b11) { |
3010 |
case 0: op = rv_op_fnmadd_s; break; |
3064 |
case 0: op = rv_op_fnmadd_s; break; |
3011 |
case 1: op = rv_op_fnmadd_d; break; |
3065 |
case 1: op = rv_op_fnmadd_d; break; |
3012 |
case 3: op = rv_op_fnmadd_q; break; |
3066 |
case 3: op = rv_op_fnmadd_q; break; |
3013 |
} |
3067 |
} |
3014 |
break; |
3068 |
break; |
3015 |
case 20: |
3069 |
case 20: |
3016 |
switch (((inst >> 25) & 0b1111111)) { |
3070 |
switch ((inst >> 25) & 0b1111111) { |
3017 |
case 0: op = rv_op_fadd_s; break; |
3071 |
case 0: op = rv_op_fadd_s; break; |
3018 |
case 1: op = rv_op_fadd_d; break; |
3072 |
case 1: op = rv_op_fadd_d; break; |
3019 |
case 3: op = rv_op_fadd_q; break; |
3073 |
case 3: op = rv_op_fadd_q; break; |
Lines 3027-3126
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3027 |
case 13: op = rv_op_fdiv_d; break; |
3081 |
case 13: op = rv_op_fdiv_d; break; |
3028 |
case 15: op = rv_op_fdiv_q; break; |
3082 |
case 15: op = rv_op_fdiv_q; break; |
3029 |
case 16: |
3083 |
case 16: |
3030 |
switch (((inst >> 12) & 0b111)) { |
3084 |
switch ((inst >> 12) & 0b111) { |
3031 |
case 0: op = rv_op_fsgnj_s; break; |
3085 |
case 0: op = rv_op_fsgnj_s; break; |
3032 |
case 1: op = rv_op_fsgnjn_s; break; |
3086 |
case 1: op = rv_op_fsgnjn_s; break; |
3033 |
case 2: op = rv_op_fsgnjx_s; break; |
3087 |
case 2: op = rv_op_fsgnjx_s; break; |
3034 |
} |
3088 |
} |
3035 |
break; |
3089 |
break; |
3036 |
case 17: |
3090 |
case 17: |
3037 |
switch (((inst >> 12) & 0b111)) { |
3091 |
switch ((inst >> 12) & 0b111) { |
3038 |
case 0: op = rv_op_fsgnj_d; break; |
3092 |
case 0: op = rv_op_fsgnj_d; break; |
3039 |
case 1: op = rv_op_fsgnjn_d; break; |
3093 |
case 1: op = rv_op_fsgnjn_d; break; |
3040 |
case 2: op = rv_op_fsgnjx_d; break; |
3094 |
case 2: op = rv_op_fsgnjx_d; break; |
3041 |
} |
3095 |
} |
3042 |
break; |
3096 |
break; |
3043 |
case 19: |
3097 |
case 19: |
3044 |
switch (((inst >> 12) & 0b111)) { |
3098 |
switch ((inst >> 12) & 0b111) { |
3045 |
case 0: op = rv_op_fsgnj_q; break; |
3099 |
case 0: op = rv_op_fsgnj_q; break; |
3046 |
case 1: op = rv_op_fsgnjn_q; break; |
3100 |
case 1: op = rv_op_fsgnjn_q; break; |
3047 |
case 2: op = rv_op_fsgnjx_q; break; |
3101 |
case 2: op = rv_op_fsgnjx_q; break; |
3048 |
} |
3102 |
} |
3049 |
break; |
3103 |
break; |
3050 |
case 20: |
3104 |
case 20: |
3051 |
switch (((inst >> 12) & 0b111)) { |
3105 |
switch ((inst >> 12) & 0b111) { |
3052 |
case 0: op = rv_op_fmin_s; break; |
3106 |
case 0: op = rv_op_fmin_s; break; |
3053 |
case 1: op = rv_op_fmax_s; break; |
3107 |
case 1: op = rv_op_fmax_s; break; |
3054 |
} |
3108 |
} |
3055 |
break; |
3109 |
break; |
3056 |
case 21: |
3110 |
case 21: |
3057 |
switch (((inst >> 12) & 0b111)) { |
3111 |
switch ((inst >> 12) & 0b111) { |
3058 |
case 0: op = rv_op_fmin_d; break; |
3112 |
case 0: op = rv_op_fmin_d; break; |
3059 |
case 1: op = rv_op_fmax_d; break; |
3113 |
case 1: op = rv_op_fmax_d; break; |
3060 |
} |
3114 |
} |
3061 |
break; |
3115 |
break; |
3062 |
case 23: |
3116 |
case 23: |
3063 |
switch (((inst >> 12) & 0b111)) { |
3117 |
switch ((inst >> 12) & 0b111) { |
3064 |
case 0: op = rv_op_fmin_q; break; |
3118 |
case 0: op = rv_op_fmin_q; break; |
3065 |
case 1: op = rv_op_fmax_q; break; |
3119 |
case 1: op = rv_op_fmax_q; break; |
3066 |
} |
3120 |
} |
3067 |
break; |
3121 |
break; |
3068 |
case 32: |
3122 |
case 32: |
3069 |
switch (((inst >> 20) & 0b11111)) { |
3123 |
switch ((inst >> 20) & 0b11111) { |
3070 |
case 1: op = rv_op_fcvt_s_d; break; |
3124 |
case 1: op = rv_op_fcvt_s_d; break; |
3071 |
case 3: op = rv_op_fcvt_s_q; break; |
3125 |
case 3: op = rv_op_fcvt_s_q; break; |
3072 |
} |
3126 |
} |
3073 |
break; |
3127 |
break; |
3074 |
case 33: |
3128 |
case 33: |
3075 |
switch (((inst >> 20) & 0b11111)) { |
3129 |
switch ((inst >> 20) & 0b11111) { |
3076 |
case 0: op = rv_op_fcvt_d_s; break; |
3130 |
case 0: op = rv_op_fcvt_d_s; break; |
3077 |
case 3: op = rv_op_fcvt_d_q; break; |
3131 |
case 3: op = rv_op_fcvt_d_q; break; |
3078 |
} |
3132 |
} |
3079 |
break; |
3133 |
break; |
3080 |
case 35: |
3134 |
case 35: |
3081 |
switch (((inst >> 20) & 0b11111)) { |
3135 |
switch ((inst >> 20) & 0b11111) { |
3082 |
case 0: op = rv_op_fcvt_q_s; break; |
3136 |
case 0: op = rv_op_fcvt_q_s; break; |
3083 |
case 1: op = rv_op_fcvt_q_d; break; |
3137 |
case 1: op = rv_op_fcvt_q_d; break; |
3084 |
} |
3138 |
} |
3085 |
break; |
3139 |
break; |
3086 |
case 44: |
3140 |
case 44: |
3087 |
switch (((inst >> 20) & 0b11111)) { |
3141 |
switch ((inst >> 20) & 0b11111) { |
3088 |
case 0: op = rv_op_fsqrt_s; break; |
3142 |
case 0: op = rv_op_fsqrt_s; break; |
3089 |
} |
3143 |
} |
3090 |
break; |
3144 |
break; |
3091 |
case 45: |
3145 |
case 45: |
3092 |
switch (((inst >> 20) & 0b11111)) { |
3146 |
switch ((inst >> 20) & 0b11111) { |
3093 |
case 0: op = rv_op_fsqrt_d; break; |
3147 |
case 0: op = rv_op_fsqrt_d; break; |
3094 |
} |
3148 |
} |
3095 |
break; |
3149 |
break; |
3096 |
case 47: |
3150 |
case 47: |
3097 |
switch (((inst >> 20) & 0b11111)) { |
3151 |
switch ((inst >> 20) & 0b11111) { |
3098 |
case 0: op = rv_op_fsqrt_q; break; |
3152 |
case 0: op = rv_op_fsqrt_q; break; |
3099 |
} |
3153 |
} |
3100 |
break; |
3154 |
break; |
3101 |
case 80: |
3155 |
case 80: |
3102 |
switch (((inst >> 12) & 0b111)) { |
3156 |
switch ((inst >> 12) & 0b111) { |
3103 |
case 0: op = rv_op_fle_s; break; |
3157 |
case 0: op = rv_op_fle_s; break; |
3104 |
case 1: op = rv_op_flt_s; break; |
3158 |
case 1: op = rv_op_flt_s; break; |
3105 |
case 2: op = rv_op_feq_s; break; |
3159 |
case 2: op = rv_op_feq_s; break; |
3106 |
} |
3160 |
} |
3107 |
break; |
3161 |
break; |
3108 |
case 81: |
3162 |
case 81: |
3109 |
switch (((inst >> 12) & 0b111)) { |
3163 |
switch ((inst >> 12) & 0b111) { |
3110 |
case 0: op = rv_op_fle_d; break; |
3164 |
case 0: op = rv_op_fle_d; break; |
3111 |
case 1: op = rv_op_flt_d; break; |
3165 |
case 1: op = rv_op_flt_d; break; |
3112 |
case 2: op = rv_op_feq_d; break; |
3166 |
case 2: op = rv_op_feq_d; break; |
3113 |
} |
3167 |
} |
3114 |
break; |
3168 |
break; |
3115 |
case 83: |
3169 |
case 83: |
3116 |
switch (((inst >> 12) & 0b111)) { |
3170 |
switch ((inst >> 12) & 0b111) { |
3117 |
case 0: op = rv_op_fle_q; break; |
3171 |
case 0: op = rv_op_fle_q; break; |
3118 |
case 1: op = rv_op_flt_q; break; |
3172 |
case 1: op = rv_op_flt_q; break; |
3119 |
case 2: op = rv_op_feq_q; break; |
3173 |
case 2: op = rv_op_feq_q; break; |
3120 |
} |
3174 |
} |
3121 |
break; |
3175 |
break; |
3122 |
case 96: |
3176 |
case 96: |
3123 |
switch (((inst >> 20) & 0b11111)) { |
3177 |
switch ((inst >> 20) & 0b11111) { |
3124 |
case 0: op = rv_op_fcvt_w_s; break; |
3178 |
case 0: op = rv_op_fcvt_w_s; break; |
3125 |
case 1: op = rv_op_fcvt_wu_s; break; |
3179 |
case 1: op = rv_op_fcvt_wu_s; break; |
3126 |
case 2: op = rv_op_fcvt_l_s; break; |
3180 |
case 2: op = rv_op_fcvt_l_s; break; |
Lines 3128-3134
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3128 |
} |
3182 |
} |
3129 |
break; |
3183 |
break; |
3130 |
case 97: |
3184 |
case 97: |
3131 |
switch (((inst >> 20) & 0b11111)) { |
3185 |
switch ((inst >> 20) & 0b11111) { |
3132 |
case 0: op = rv_op_fcvt_w_d; break; |
3186 |
case 0: op = rv_op_fcvt_w_d; break; |
3133 |
case 1: op = rv_op_fcvt_wu_d; break; |
3187 |
case 1: op = rv_op_fcvt_wu_d; break; |
3134 |
case 2: op = rv_op_fcvt_l_d; break; |
3188 |
case 2: op = rv_op_fcvt_l_d; break; |
Lines 3136-3142
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3136 |
} |
3190 |
} |
3137 |
break; |
3191 |
break; |
3138 |
case 99: |
3192 |
case 99: |
3139 |
switch (((inst >> 20) & 0b11111)) { |
3193 |
switch ((inst >> 20) & 0b11111) { |
3140 |
case 0: op = rv_op_fcvt_w_q; break; |
3194 |
case 0: op = rv_op_fcvt_w_q; break; |
3141 |
case 1: op = rv_op_fcvt_wu_q; break; |
3195 |
case 1: op = rv_op_fcvt_wu_q; break; |
3142 |
case 2: op = rv_op_fcvt_l_q; break; |
3196 |
case 2: op = rv_op_fcvt_l_q; break; |
Lines 3144-3150
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3144 |
} |
3198 |
} |
3145 |
break; |
3199 |
break; |
3146 |
case 104: |
3200 |
case 104: |
3147 |
switch (((inst >> 20) & 0b11111)) { |
3201 |
switch ((inst >> 20) & 0b11111) { |
3148 |
case 0: op = rv_op_fcvt_s_w; break; |
3202 |
case 0: op = rv_op_fcvt_s_w; break; |
3149 |
case 1: op = rv_op_fcvt_s_wu; break; |
3203 |
case 1: op = rv_op_fcvt_s_wu; break; |
3150 |
case 2: op = rv_op_fcvt_s_l; break; |
3204 |
case 2: op = rv_op_fcvt_s_l; break; |
Lines 3152-3158
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3152 |
} |
3206 |
} |
3153 |
break; |
3207 |
break; |
3154 |
case 105: |
3208 |
case 105: |
3155 |
switch (((inst >> 20) & 0b11111)) { |
3209 |
switch ((inst >> 20) & 0b11111) { |
3156 |
case 0: op = rv_op_fcvt_d_w; break; |
3210 |
case 0: op = rv_op_fcvt_d_w; break; |
3157 |
case 1: op = rv_op_fcvt_d_wu; break; |
3211 |
case 1: op = rv_op_fcvt_d_wu; break; |
3158 |
case 2: op = rv_op_fcvt_d_l; break; |
3212 |
case 2: op = rv_op_fcvt_d_l; break; |
Lines 3160-3166
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3160 |
} |
3214 |
} |
3161 |
break; |
3215 |
break; |
3162 |
case 107: |
3216 |
case 107: |
3163 |
switch (((inst >> 20) & 0b11111)) { |
3217 |
switch ((inst >> 20) & 0b11111) { |
3164 |
case 0: op = rv_op_fcvt_q_w; break; |
3218 |
case 0: op = rv_op_fcvt_q_w; break; |
3165 |
case 1: op = rv_op_fcvt_q_wu; break; |
3219 |
case 1: op = rv_op_fcvt_q_wu; break; |
3166 |
case 2: op = rv_op_fcvt_q_l; break; |
3220 |
case 2: op = rv_op_fcvt_q_l; break; |
Lines 3168-3211
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3168 |
} |
3222 |
} |
3169 |
break; |
3223 |
break; |
3170 |
case 112: |
3224 |
case 112: |
3171 |
switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { |
3225 |
switch (((inst >> 17) & 0b11111000) | |
|
|
3226 |
((inst >> 12) & 0b00000111)) { |
3172 |
case 0: op = rv_op_fmv_x_s; break; |
3227 |
case 0: op = rv_op_fmv_x_s; break; |
3173 |
case 1: op = rv_op_fclass_s; break; |
3228 |
case 1: op = rv_op_fclass_s; break; |
3174 |
} |
3229 |
} |
3175 |
break; |
3230 |
break; |
3176 |
case 113: |
3231 |
case 113: |
3177 |
switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { |
3232 |
switch (((inst >> 17) & 0b11111000) | |
|
|
3233 |
((inst >> 12) & 0b00000111)) { |
3178 |
case 0: op = rv_op_fmv_x_d; break; |
3234 |
case 0: op = rv_op_fmv_x_d; break; |
3179 |
case 1: op = rv_op_fclass_d; break; |
3235 |
case 1: op = rv_op_fclass_d; break; |
3180 |
} |
3236 |
} |
3181 |
break; |
3237 |
break; |
3182 |
case 115: |
3238 |
case 115: |
3183 |
switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { |
3239 |
switch (((inst >> 17) & 0b11111000) | |
|
|
3240 |
((inst >> 12) & 0b00000111)) { |
3184 |
case 0: op = rv_op_fmv_x_q; break; |
3241 |
case 0: op = rv_op_fmv_x_q; break; |
3185 |
case 1: op = rv_op_fclass_q; break; |
3242 |
case 1: op = rv_op_fclass_q; break; |
3186 |
} |
3243 |
} |
3187 |
break; |
3244 |
break; |
3188 |
case 120: |
3245 |
case 120: |
3189 |
switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { |
3246 |
switch (((inst >> 17) & 0b11111000) | |
|
|
3247 |
((inst >> 12) & 0b00000111)) { |
3190 |
case 0: op = rv_op_fmv_s_x; break; |
3248 |
case 0: op = rv_op_fmv_s_x; break; |
3191 |
} |
3249 |
} |
3192 |
break; |
3250 |
break; |
3193 |
case 121: |
3251 |
case 121: |
3194 |
switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { |
3252 |
switch (((inst >> 17) & 0b11111000) | |
|
|
3253 |
((inst >> 12) & 0b00000111)) { |
3195 |
case 0: op = rv_op_fmv_d_x; break; |
3254 |
case 0: op = rv_op_fmv_d_x; break; |
3196 |
} |
3255 |
} |
3197 |
break; |
3256 |
break; |
3198 |
case 123: |
3257 |
case 123: |
3199 |
switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { |
3258 |
switch (((inst >> 17) & 0b11111000) | |
|
|
3259 |
((inst >> 12) & 0b00000111)) { |
3200 |
case 0: op = rv_op_fmv_q_x; break; |
3260 |
case 0: op = rv_op_fmv_q_x; break; |
3201 |
} |
3261 |
} |
3202 |
break; |
3262 |
break; |
3203 |
} |
3263 |
} |
3204 |
break; |
3264 |
break; |
3205 |
case 21: |
3265 |
case 21: |
3206 |
switch (((inst >> 12) & 0b111)) { |
3266 |
switch ((inst >> 12) & 0b111) { |
3207 |
case 0: |
3267 |
case 0: |
3208 |
switch (((inst >> 26) & 0b111111)) { |
3268 |
switch ((inst >> 26) & 0b111111) { |
3209 |
case 0: op = rv_op_vadd_vv; break; |
3269 |
case 0: op = rv_op_vadd_vv; break; |
3210 |
case 2: op = rv_op_vsub_vv; break; |
3270 |
case 2: op = rv_op_vsub_vv; break; |
3211 |
case 4: op = rv_op_vminu_vv; break; |
3271 |
case 4: op = rv_op_vminu_vv; break; |
Lines 3217-3225
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3217 |
case 11: op = rv_op_vxor_vv; break; |
3277 |
case 11: op = rv_op_vxor_vv; break; |
3218 |
case 12: op = rv_op_vrgather_vv; break; |
3278 |
case 12: op = rv_op_vrgather_vv; break; |
3219 |
case 14: op = rv_op_vrgatherei16_vv; break; |
3279 |
case 14: op = rv_op_vrgatherei16_vv; break; |
3220 |
case 16: if (((inst >> 25) & 1) == 0) op = rv_op_vadc_vvm; break; |
3280 |
case 16: |
|
|
3281 |
if (((inst >> 25) & 1) == 0) { |
3282 |
op = rv_op_vadc_vvm; |
3283 |
} |
3284 |
break; |
3221 |
case 17: op = rv_op_vmadc_vvm; break; |
3285 |
case 17: op = rv_op_vmadc_vvm; break; |
3222 |
case 18: if (((inst >> 25) & 1) == 0) op = rv_op_vsbc_vvm; break; |
3286 |
case 18: |
|
|
3287 |
if (((inst >> 25) & 1) == 0) { |
3288 |
op = rv_op_vsbc_vvm; |
3289 |
} |
3290 |
break; |
3223 |
case 19: op = rv_op_vmsbc_vvm; break; |
3291 |
case 19: op = rv_op_vmsbc_vvm; break; |
3224 |
case 23: |
3292 |
case 23: |
3225 |
if (((inst >> 20) & 0b111111) == 32) |
3293 |
if (((inst >> 20) & 0b111111) == 32) |
Lines 3252-3258
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3252 |
} |
3320 |
} |
3253 |
break; |
3321 |
break; |
3254 |
case 1: |
3322 |
case 1: |
3255 |
switch (((inst >> 26) & 0b111111)) { |
3323 |
switch ((inst >> 26) & 0b111111) { |
3256 |
case 0: op = rv_op_vfadd_vv; break; |
3324 |
case 0: op = rv_op_vfadd_vv; break; |
3257 |
case 1: op = rv_op_vfredusum_vs; break; |
3325 |
case 1: op = rv_op_vfredusum_vs; break; |
3258 |
case 2: op = rv_op_vfsub_vv; break; |
3326 |
case 2: op = rv_op_vfsub_vv; break; |
Lines 3265-3276
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3265 |
case 9: op = rv_op_vfsgnjn_vv; break; |
3333 |
case 9: op = rv_op_vfsgnjn_vv; break; |
3266 |
case 10: op = rv_op_vfsgnjx_vv; break; |
3334 |
case 10: op = rv_op_vfsgnjx_vv; break; |
3267 |
case 16: |
3335 |
case 16: |
3268 |
switch (((inst >> 15) & 0b11111)) { |
3336 |
switch ((inst >> 15) & 0b11111) { |
3269 |
case 0: if ((inst >> 25) & 1) op = rv_op_vfmv_f_s; break; |
3337 |
case 0: if ((inst >> 25) & 1) op = rv_op_vfmv_f_s; break; |
3270 |
} |
3338 |
} |
3271 |
break; |
3339 |
break; |
3272 |
case 18: |
3340 |
case 18: |
3273 |
switch (((inst >> 15) & 0b11111)) { |
3341 |
switch ((inst >> 15) & 0b11111) { |
3274 |
case 0: op = rv_op_vfcvt_xu_f_v; break; |
3342 |
case 0: op = rv_op_vfcvt_xu_f_v; break; |
3275 |
case 1: op = rv_op_vfcvt_x_f_v; break; |
3343 |
case 1: op = rv_op_vfcvt_x_f_v; break; |
3276 |
case 2: op = rv_op_vfcvt_f_xu_v; break; |
3344 |
case 2: op = rv_op_vfcvt_f_xu_v; break; |
Lines 3295-3301
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3295 |
} |
3363 |
} |
3296 |
break; |
3364 |
break; |
3297 |
case 19: |
3365 |
case 19: |
3298 |
switch (((inst >> 15) & 0b11111)) { |
3366 |
switch ((inst >> 15) & 0b11111) { |
3299 |
case 0: op = rv_op_vfsqrt_v; break; |
3367 |
case 0: op = rv_op_vfsqrt_v; break; |
3300 |
case 4: op = rv_op_vfrsqrt7_v; break; |
3368 |
case 4: op = rv_op_vfrsqrt7_v; break; |
3301 |
case 5: op = rv_op_vfrec7_v; break; |
3369 |
case 5: op = rv_op_vfrec7_v; break; |
Lines 3330-3336
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3330 |
} |
3398 |
} |
3331 |
break; |
3399 |
break; |
3332 |
case 2: |
3400 |
case 2: |
3333 |
switch (((inst >> 26) & 0b111111)) { |
3401 |
switch ((inst >> 26) & 0b111111) { |
3334 |
case 0: op = rv_op_vredsum_vs; break; |
3402 |
case 0: op = rv_op_vredsum_vs; break; |
3335 |
case 1: op = rv_op_vredand_vs; break; |
3403 |
case 1: op = rv_op_vredand_vs; break; |
3336 |
case 2: op = rv_op_vredor_vs; break; |
3404 |
case 2: op = rv_op_vredor_vs; break; |
Lines 3344-3357
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3344 |
case 10: op = rv_op_vasubu_vv; break; |
3412 |
case 10: op = rv_op_vasubu_vv; break; |
3345 |
case 11: op = rv_op_vasub_vv; break; |
3413 |
case 11: op = rv_op_vasub_vv; break; |
3346 |
case 16: |
3414 |
case 16: |
3347 |
switch (((inst >> 15) & 0b11111)) { |
3415 |
switch ((inst >> 15) & 0b11111) { |
3348 |
case 0: if ((inst >> 25) & 1) op = rv_op_vmv_x_s; break; |
3416 |
case 0: if ((inst >> 25) & 1) op = rv_op_vmv_x_s; break; |
3349 |
case 16: op = rv_op_vcpop_m; break; |
3417 |
case 16: op = rv_op_vcpop_m; break; |
3350 |
case 17: op = rv_op_vfirst_m; break; |
3418 |
case 17: op = rv_op_vfirst_m; break; |
3351 |
} |
3419 |
} |
3352 |
break; |
3420 |
break; |
3353 |
case 18: |
3421 |
case 18: |
3354 |
switch (((inst >> 15) & 0b11111)) { |
3422 |
switch ((inst >> 15) & 0b11111) { |
3355 |
case 2: op = rv_op_vzext_vf8; break; |
3423 |
case 2: op = rv_op_vzext_vf8; break; |
3356 |
case 3: op = rv_op_vsext_vf8; break; |
3424 |
case 3: op = rv_op_vsext_vf8; break; |
3357 |
case 4: op = rv_op_vzext_vf4; break; |
3425 |
case 4: op = rv_op_vzext_vf4; break; |
Lines 3361-3372
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3361 |
} |
3429 |
} |
3362 |
break; |
3430 |
break; |
3363 |
case 20: |
3431 |
case 20: |
3364 |
switch (((inst >> 15) & 0b11111)) { |
3432 |
switch ((inst >> 15) & 0b11111) { |
3365 |
case 1: op = rv_op_vmsbf_m; break; |
3433 |
case 1: op = rv_op_vmsbf_m; break; |
3366 |
case 2: op = rv_op_vmsof_m; break; |
3434 |
case 2: op = rv_op_vmsof_m; break; |
3367 |
case 3: op = rv_op_vmsif_m; break; |
3435 |
case 3: op = rv_op_vmsif_m; break; |
3368 |
case 16: op = rv_op_viota_m; break; |
3436 |
case 16: op = rv_op_viota_m; break; |
3369 |
case 17: if (((inst >> 20) & 0b11111) == 0) op = rv_op_vid_v; break; |
3437 |
case 17: |
|
|
3438 |
if (((inst >> 20) & 0b11111) == 0) { |
3439 |
op = rv_op_vid_v; |
3440 |
} |
3441 |
break; |
3370 |
} |
3442 |
} |
3371 |
break; |
3443 |
break; |
3372 |
case 23: if ((inst >> 25) & 1) op = rv_op_vcompress_vm; break; |
3444 |
case 23: if ((inst >> 25) & 1) op = rv_op_vcompress_vm; break; |
Lines 3407-3413
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3407 |
} |
3479 |
} |
3408 |
break; |
3480 |
break; |
3409 |
case 3: |
3481 |
case 3: |
3410 |
switch (((inst >> 26) & 0b111111)) { |
3482 |
switch ((inst >> 26) & 0b111111) { |
3411 |
case 0: op = rv_op_vadd_vi; break; |
3483 |
case 0: op = rv_op_vadd_vi; break; |
3412 |
case 3: op = rv_op_vrsub_vi; break; |
3484 |
case 3: op = rv_op_vrsub_vi; break; |
3413 |
case 9: op = rv_op_vand_vi; break; |
3485 |
case 9: op = rv_op_vand_vi; break; |
Lines 3416-3422
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3416 |
case 12: op = rv_op_vrgather_vi; break; |
3488 |
case 12: op = rv_op_vrgather_vi; break; |
3417 |
case 14: op = rv_op_vslideup_vi; break; |
3489 |
case 14: op = rv_op_vslideup_vi; break; |
3418 |
case 15: op = rv_op_vslidedown_vi; break; |
3490 |
case 15: op = rv_op_vslidedown_vi; break; |
3419 |
case 16: if (((inst >> 25) & 1) == 0) op = rv_op_vadc_vim; break; |
3491 |
case 16: |
|
|
3492 |
if (((inst >> 25) & 1) == 0) { |
3493 |
op = rv_op_vadc_vim; |
3494 |
} |
3495 |
break; |
3420 |
case 17: op = rv_op_vmadc_vim; break; |
3496 |
case 17: op = rv_op_vmadc_vim; break; |
3421 |
case 23: |
3497 |
case 23: |
3422 |
if (((inst >> 20) & 0b111111) == 32) |
3498 |
if (((inst >> 20) & 0b111111) == 32) |
Lines 3434-3440
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3434 |
case 33: op = rv_op_vsadd_vi; break; |
3510 |
case 33: op = rv_op_vsadd_vi; break; |
3435 |
case 37: op = rv_op_vsll_vi; break; |
3511 |
case 37: op = rv_op_vsll_vi; break; |
3436 |
case 39: |
3512 |
case 39: |
3437 |
switch (((inst >> 15) & 0b11111)) { |
3513 |
switch ((inst >> 15) & 0b11111) { |
3438 |
case 0: op = rv_op_vmv1r_v; break; |
3514 |
case 0: op = rv_op_vmv1r_v; break; |
3439 |
case 1: op = rv_op_vmv2r_v; break; |
3515 |
case 1: op = rv_op_vmv2r_v; break; |
3440 |
case 3: op = rv_op_vmv4r_v; break; |
3516 |
case 3: op = rv_op_vmv4r_v; break; |
Lines 3452-3458
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3452 |
} |
3528 |
} |
3453 |
break; |
3529 |
break; |
3454 |
case 4: |
3530 |
case 4: |
3455 |
switch (((inst >> 26) & 0b111111)) { |
3531 |
switch ((inst >> 26) & 0b111111) { |
3456 |
case 0: op = rv_op_vadd_vx; break; |
3532 |
case 0: op = rv_op_vadd_vx; break; |
3457 |
case 2: op = rv_op_vsub_vx; break; |
3533 |
case 2: op = rv_op_vsub_vx; break; |
3458 |
case 3: op = rv_op_vrsub_vx; break; |
3534 |
case 3: op = rv_op_vrsub_vx; break; |
Lines 3466-3474
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3466 |
case 12: op = rv_op_vrgather_vx; break; |
3542 |
case 12: op = rv_op_vrgather_vx; break; |
3467 |
case 14: op = rv_op_vslideup_vx; break; |
3543 |
case 14: op = rv_op_vslideup_vx; break; |
3468 |
case 15: op = rv_op_vslidedown_vx; break; |
3544 |
case 15: op = rv_op_vslidedown_vx; break; |
3469 |
case 16: if (((inst >> 25) & 1) == 0) op = rv_op_vadc_vxm; break; |
3545 |
case 16: |
|
|
3546 |
if (((inst >> 25) & 1) == 0) { |
3547 |
op = rv_op_vadc_vxm; |
3548 |
} |
3549 |
break; |
3470 |
case 17: op = rv_op_vmadc_vxm; break; |
3550 |
case 17: op = rv_op_vmadc_vxm; break; |
3471 |
case 18: if (((inst >> 25) & 1) == 0) op = rv_op_vsbc_vxm; break; |
3551 |
case 18: |
|
|
3552 |
if (((inst >> 25) & 1) == 0) { |
3553 |
op = rv_op_vsbc_vxm; |
3554 |
} |
3555 |
break; |
3472 |
case 19: op = rv_op_vmsbc_vxm; break; |
3556 |
case 19: op = rv_op_vmsbc_vxm; break; |
3473 |
case 23: |
3557 |
case 23: |
3474 |
if (((inst >> 20) & 0b111111) == 32) |
3558 |
if (((inst >> 20) & 0b111111) == 32) |
Lines 3501-3507
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3501 |
} |
3585 |
} |
3502 |
break; |
3586 |
break; |
3503 |
case 5: |
3587 |
case 5: |
3504 |
switch (((inst >> 26) & 0b111111)) { |
3588 |
switch ((inst >> 26) & 0b111111) { |
3505 |
case 0: op = rv_op_vfadd_vf; break; |
3589 |
case 0: op = rv_op_vfadd_vf; break; |
3506 |
case 2: op = rv_op_vfsub_vf; break; |
3590 |
case 2: op = rv_op_vfsub_vf; break; |
3507 |
case 4: op = rv_op_vfmin_vf; break; |
3591 |
case 4: op = rv_op_vfmin_vf; break; |
Lines 3512-3518
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3512 |
case 14: op = rv_op_vfslide1up_vf; break; |
3596 |
case 14: op = rv_op_vfslide1up_vf; break; |
3513 |
case 15: op = rv_op_vfslide1down_vf; break; |
3597 |
case 15: op = rv_op_vfslide1down_vf; break; |
3514 |
case 16: |
3598 |
case 16: |
3515 |
switch (((inst >> 20) & 0b11111)) { |
3599 |
switch ((inst >> 20) & 0b11111) { |
3516 |
case 0: if ((inst >> 25) & 1) op = rv_op_vfmv_s_f; break; |
3600 |
case 0: if ((inst >> 25) & 1) op = rv_op_vfmv_s_f; break; |
3517 |
} |
3601 |
} |
3518 |
break; |
3602 |
break; |
Lines 3552-3558
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3552 |
} |
3636 |
} |
3553 |
break; |
3637 |
break; |
3554 |
case 6: |
3638 |
case 6: |
3555 |
switch (((inst >> 26) & 0b111111)) { |
3639 |
switch ((inst >> 26) & 0b111111) { |
3556 |
case 8: op = rv_op_vaaddu_vx; break; |
3640 |
case 8: op = rv_op_vaaddu_vx; break; |
3557 |
case 9: op = rv_op_vaadd_vx; break; |
3641 |
case 9: op = rv_op_vaadd_vx; break; |
3558 |
case 10: op = rv_op_vasubu_vx; break; |
3642 |
case 10: op = rv_op_vasubu_vx; break; |
Lines 3560-3566
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3560 |
case 14: op = rv_op_vslide1up_vx; break; |
3644 |
case 14: op = rv_op_vslide1up_vx; break; |
3561 |
case 15: op = rv_op_vslide1down_vx; break; |
3645 |
case 15: op = rv_op_vslide1down_vx; break; |
3562 |
case 16: |
3646 |
case 16: |
3563 |
switch (((inst >> 20) & 0b11111)) { |
3647 |
switch ((inst >> 20) & 0b11111) { |
3564 |
case 0: if ((inst >> 25) & 1) op = rv_op_vmv_s_x; break; |
3648 |
case 0: if ((inst >> 25) & 1) op = rv_op_vmv_s_x; break; |
3565 |
} |
3649 |
} |
3566 |
break; |
3650 |
break; |
Lines 3605-3619
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3605 |
} |
3689 |
} |
3606 |
break; |
3690 |
break; |
3607 |
case 22: |
3691 |
case 22: |
3608 |
switch (((inst >> 12) & 0b111)) { |
3692 |
switch ((inst >> 12) & 0b111) { |
3609 |
case 0: op = rv_op_addid; break; |
3693 |
case 0: op = rv_op_addid; break; |
3610 |
case 1: |
3694 |
case 1: |
3611 |
switch (((inst >> 26) & 0b111111)) { |
3695 |
switch ((inst >> 26) & 0b111111) { |
3612 |
case 0: op = rv_op_sllid; break; |
3696 |
case 0: op = rv_op_sllid; break; |
3613 |
} |
3697 |
} |
3614 |
break; |
3698 |
break; |
3615 |
case 5: |
3699 |
case 5: |
3616 |
switch (((inst >> 26) & 0b111111)) { |
3700 |
switch ((inst >> 26) & 0b111111) { |
3617 |
case 0: op = rv_op_srlid; break; |
3701 |
case 0: op = rv_op_srlid; break; |
3618 |
case 16: op = rv_op_sraid; break; |
3702 |
case 16: op = rv_op_sraid; break; |
3619 |
} |
3703 |
} |
Lines 3621-3627
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3621 |
} |
3705 |
} |
3622 |
break; |
3706 |
break; |
3623 |
case 24: |
3707 |
case 24: |
3624 |
switch (((inst >> 12) & 0b111)) { |
3708 |
switch ((inst >> 12) & 0b111) { |
3625 |
case 0: op = rv_op_beq; break; |
3709 |
case 0: op = rv_op_beq; break; |
3626 |
case 1: op = rv_op_bne; break; |
3710 |
case 1: op = rv_op_bne; break; |
3627 |
case 4: op = rv_op_blt; break; |
3711 |
case 4: op = rv_op_blt; break; |
Lines 3631-3662
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3631 |
} |
3715 |
} |
3632 |
break; |
3716 |
break; |
3633 |
case 25: |
3717 |
case 25: |
3634 |
switch (((inst >> 12) & 0b111)) { |
3718 |
switch ((inst >> 12) & 0b111) { |
3635 |
case 0: op = rv_op_jalr; break; |
3719 |
case 0: op = rv_op_jalr; break; |
3636 |
} |
3720 |
} |
3637 |
break; |
3721 |
break; |
3638 |
case 27: op = rv_op_jal; break; |
3722 |
case 27: op = rv_op_jal; break; |
3639 |
case 28: |
3723 |
case 28: |
3640 |
switch (((inst >> 12) & 0b111)) { |
3724 |
switch ((inst >> 12) & 0b111) { |
3641 |
case 0: |
3725 |
case 0: |
3642 |
switch (((inst >> 20) & 0b111111100000) | ((inst >> 7) & 0b000000011111)) { |
3726 |
switch (((inst >> 20) & 0b111111100000) | |
|
|
3727 |
((inst >> 7) & 0b000000011111)) { |
3643 |
case 0: |
3728 |
case 0: |
3644 |
switch (((inst >> 15) & 0b1111111111)) { |
3729 |
switch ((inst >> 15) & 0b1111111111) { |
3645 |
case 0: op = rv_op_ecall; break; |
3730 |
case 0: op = rv_op_ecall; break; |
3646 |
case 32: op = rv_op_ebreak; break; |
3731 |
case 32: op = rv_op_ebreak; break; |
3647 |
case 64: op = rv_op_uret; break; |
3732 |
case 64: op = rv_op_uret; break; |
3648 |
} |
3733 |
} |
3649 |
break; |
3734 |
break; |
3650 |
case 256: |
3735 |
case 256: |
3651 |
switch (((inst >> 20) & 0b11111)) { |
3736 |
switch ((inst >> 20) & 0b11111) { |
3652 |
case 2: |
3737 |
case 2: |
3653 |
switch (((inst >> 15) & 0b11111)) { |
3738 |
switch ((inst >> 15) & 0b11111) { |
3654 |
case 0: op = rv_op_sret; break; |
3739 |
case 0: op = rv_op_sret; break; |
3655 |
} |
3740 |
} |
3656 |
break; |
3741 |
break; |
3657 |
case 4: op = rv_op_sfence_vm; break; |
3742 |
case 4: op = rv_op_sfence_vm; break; |
3658 |
case 5: |
3743 |
case 5: |
3659 |
switch (((inst >> 15) & 0b11111)) { |
3744 |
switch ((inst >> 15) & 0b11111) { |
3660 |
case 0: op = rv_op_wfi; break; |
3745 |
case 0: op = rv_op_wfi; break; |
3661 |
} |
3746 |
} |
3662 |
break; |
3747 |
break; |
Lines 3664-3680
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3664 |
break; |
3749 |
break; |
3665 |
case 288: op = rv_op_sfence_vma; break; |
3750 |
case 288: op = rv_op_sfence_vma; break; |
3666 |
case 512: |
3751 |
case 512: |
3667 |
switch (((inst >> 15) & 0b1111111111)) { |
3752 |
switch ((inst >> 15) & 0b1111111111) { |
3668 |
case 64: op = rv_op_hret; break; |
3753 |
case 64: op = rv_op_hret; break; |
3669 |
} |
3754 |
} |
3670 |
break; |
3755 |
break; |
3671 |
case 768: |
3756 |
case 768: |
3672 |
switch (((inst >> 15) & 0b1111111111)) { |
3757 |
switch ((inst >> 15) & 0b1111111111) { |
3673 |
case 64: op = rv_op_mret; break; |
3758 |
case 64: op = rv_op_mret; break; |
3674 |
} |
3759 |
} |
3675 |
break; |
3760 |
break; |
3676 |
case 1952: |
3761 |
case 1952: |
3677 |
switch (((inst >> 15) & 0b1111111111)) { |
3762 |
switch ((inst >> 15) & 0b1111111111) { |
3678 |
case 576: op = rv_op_dret; break; |
3763 |
case 576: op = rv_op_dret; break; |
3679 |
} |
3764 |
} |
3680 |
break; |
3765 |
break; |
Lines 3689-3695
static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
Link Here
|
3689 |
} |
3774 |
} |
3690 |
break; |
3775 |
break; |
3691 |
case 30: |
3776 |
case 30: |
3692 |
switch (((inst >> 22) & 0b1111111000) | ((inst >> 12) & 0b0000000111)) { |
3777 |
switch (((inst >> 22) & 0b1111111000) | |
|
|
3778 |
((inst >> 12) & 0b0000000111)) { |
3693 |
case 0: op = rv_op_addd; break; |
3779 |
case 0: op = rv_op_addd; break; |
3694 |
case 1: op = rv_op_slld; break; |
3780 |
case 1: op = rv_op_slld; break; |
3695 |
case 5: op = rv_op_srld; break; |
3781 |
case 5: op = rv_op_srld; break; |
Lines 4525-4531
static size_t inst_length(rv_inst inst)
Link Here
|
4525 |
{ |
4611 |
{ |
4526 |
/* NOTE: supports maximum instruction size of 64-bits */ |
4612 |
/* NOTE: supports maximum instruction size of 64-bits */ |
4527 |
|
4613 |
|
4528 |
/* instruction length coding |
4614 |
/* |
|
|
4615 |
* instruction length coding |
4529 |
* |
4616 |
* |
4530 |
* aa - 16 bit aa != 11 |
4617 |
* aa - 16 bit aa != 11 |
4531 |
* bbb11 - 32 bit bbb != 111 |
4618 |
* bbb11 - 32 bit bbb != 111 |
Lines 4591-4606
static void format_inst(char *buf, size_t buflen, size_t tab, rv_decode *dec)
Link Here
|
4591 |
append(buf, rv_ireg_name_sym[dec->rs2], buflen); |
4678 |
append(buf, rv_ireg_name_sym[dec->rs2], buflen); |
4592 |
break; |
4679 |
break; |
4593 |
case '3': |
4680 |
case '3': |
4594 |
append(buf, rv_freg_name_sym[dec->rd], buflen); |
4681 |
append(buf, dec->cfg->ext_zfinx ? rv_ireg_name_sym[dec->rd] : |
|
|
4682 |
rv_freg_name_sym[dec->rd], |
4683 |
buflen); |
4595 |
break; |
4684 |
break; |
4596 |
case '4': |
4685 |
case '4': |
4597 |
append(buf, rv_freg_name_sym[dec->rs1], buflen); |
4686 |
append(buf, dec->cfg->ext_zfinx ? rv_ireg_name_sym[dec->rs1] : |
|
|
4687 |
rv_freg_name_sym[dec->rs1], |
4688 |
buflen); |
4598 |
break; |
4689 |
break; |
4599 |
case '5': |
4690 |
case '5': |
4600 |
append(buf, rv_freg_name_sym[dec->rs2], buflen); |
4691 |
append(buf, dec->cfg->ext_zfinx ? rv_ireg_name_sym[dec->rs2] : |
|
|
4692 |
rv_freg_name_sym[dec->rs2], |
4693 |
buflen); |
4601 |
break; |
4694 |
break; |
4602 |
case '6': |
4695 |
case '6': |
4603 |
append(buf, rv_freg_name_sym[dec->rs3], buflen); |
4696 |
append(buf, dec->cfg->ext_zfinx ? rv_ireg_name_sym[dec->rs3] : |
|
|
4697 |
rv_freg_name_sym[dec->rs3], |
4698 |
buflen); |
4604 |
break; |
4699 |
break; |
4605 |
case '7': |
4700 |
case '7': |
4606 |
snprintf(tmp, sizeof(tmp), "%d", dec->rs1); |
4701 |
snprintf(tmp, sizeof(tmp), "%d", dec->rs1); |
Lines 4861-4871
static void decode_inst_decompress(rv_decode *dec, rv_isa isa)
Link Here
|
4861 |
/* disassemble instruction */ |
4956 |
/* disassemble instruction */ |
4862 |
|
4957 |
|
4863 |
static void |
4958 |
static void |
4864 |
disasm_inst(char *buf, size_t buflen, rv_isa isa, uint64_t pc, rv_inst inst) |
4959 |
disasm_inst(char *buf, size_t buflen, rv_isa isa, uint64_t pc, rv_inst inst, |
|
|
4960 |
RISCVCPUConfig *cfg) |
4865 |
{ |
4961 |
{ |
4866 |
rv_decode dec = { 0 }; |
4962 |
rv_decode dec = { 0 }; |
4867 |
dec.pc = pc; |
4963 |
dec.pc = pc; |
4868 |
dec.inst = inst; |
4964 |
dec.inst = inst; |
|
|
4965 |
dec.cfg = cfg; |
4869 |
decode_inst_opcode(&dec, isa); |
4966 |
decode_inst_opcode(&dec, isa); |
4870 |
decode_inst_operands(&dec, isa); |
4967 |
decode_inst_operands(&dec, isa); |
4871 |
decode_inst_decompress(&dec, isa); |
4968 |
decode_inst_decompress(&dec, isa); |
Lines 4920-4926
print_insn_riscv(bfd_vma memaddr, struct disassemble_info *info, rv_isa isa)
Link Here
|
4920 |
break; |
5017 |
break; |
4921 |
} |
5018 |
} |
4922 |
|
5019 |
|
4923 |
disasm_inst(buf, sizeof(buf), isa, memaddr, inst); |
5020 |
disasm_inst(buf, sizeof(buf), isa, memaddr, inst, |
|
|
5021 |
(RISCVCPUConfig *)info->target_info); |
4924 |
(*info->fprintf_func)(info->stream, "%s", buf); |
5022 |
(*info->fprintf_func)(info->stream, "%s", buf); |
4925 |
|
5023 |
|
4926 |
return len; |
5024 |
return len; |