Refactoring the RISCV architecture to Auto-Sync on LLVM (#2756)

- Updated to LLVM-18
- Operands have now read/write access information
- Previously only the basic extensions and the compressed ISA was supported, now every extension supported by LLVM-18 also available (e.g. vector, crypto, ...)
- Changed register names
  * FP Regs: Instead of `RISCV_REG_F<n>_32` and `RISCV_REG_F<n>_64`, they're named `RISCV_REG_F<n>_F`
  and `RISCV_REG_F<n>_D` for n in `0..31`
- Added register names
  * Vector registes and combinations thereof `RISCV_REG_V<n>[_V<n_i>]*`, examples
    * `RISCV_REG_V21`
    * `RISCV_REG_V9_V10`
    * `RISCV_REG_V3_V4_V5`
    * etc... up to 8-register combinations
  * Half-percision (16-bit) FP registers `RISCV_REG_F<n>_H` for n in `0..31`
- Changed instruction names
  * Instructions ending in `_AQ_RL` now end in `_AQRL`
- Added instruction names: massive amount, see `include/capstone/riscv.h`
- Added `dimm` and `csr` fields inside the union data of `cs_riscv_op`, with corresponding `riscv_op_type`
  * `dimm` is used for instructions with FP immediates
  * `csr` is used for instructions with CSR systrem registes
- Added ISA flags to turn ISA extensions on and off
This commit is contained in:
مصطفي محمود كمال الدين 2026-02-01 13:53:24 +02:00 committed by GitHub
parent 484857da5d
commit ec6428f92d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
424 changed files with 316880 additions and 14808 deletions

View file

@ -599,25 +599,38 @@ endif()
if(CAPSTONE_RISCV_SUPPORT)
add_definitions(-DCAPSTONE_HAS_RISCV)
set(SOURCES_RISCV
arch/RISCV/RISCVBaseInfo.c
arch/RISCV/RISCVDisassembler.c
arch/RISCV/RISCVDisassemblerExtension.c
arch/RISCV/RISCVInstPrinter.c
arch/RISCV/RISCVMapping.c
arch/RISCV/RISCVModule.c
)
set(HEADERS_RISCV
arch/RISCV/RISCVBaseInfo.h
arch/RISCV/RISCVDisassembler.h
arch/RISCV/RISCVDisassemblerExtension.h
arch/RISCV/RISCVInstPrinter.h
arch/RISCV/RISCVMapping.h
arch/RISCV/RISCVModule.h
arch/RISCV/RISCVLinkage.h
arch/RISCV/RISCVGenAsmWriter.inc
arch/RISCV/RISCVGenCSAliasMnemMap.inc
arch/RISCV/RISCVGenCSFeatureName.inc
arch/RISCV/RISCVGenCSMappingInsn.inc
arch/RISCV/RISCVGenCSMappingInsnName.inc
arch/RISCV/RISCVGenCSMappingInsnOp.inc
arch/RISCV/RISCVGenCSOpGroup.inc
arch/RISCV/RISCVGenCSSystemOperandsEnum.inc
arch/RISCV/RISCVGenDisassemblerTables.inc
arch/RISCV/RISCVGenInsnNameMaps.inc
arch/RISCV/RISCVGenInstrInfo.inc
arch/RISCV/RISCVGenRegisterInfo.inc
arch/RISCV/RISCVGenSubtargetInfo.inc
arch/RISCV/RISCVMappingInsn.inc
arch/RISCV/RISCVMappingInsnOp.inc
arch/RISCV/RISCVGenSystemOperands.inc
arch/RISCV/RISCVGenCompressedInstructionsInfo.inc
arch/RISCV/RISCVGenCSAliasEnum.inc
arch/RISCV/RISCVGenCSFeatureEnum.inc
arch/RISCV/RISCVGenCSInsnEnum.inc
arch/RISCV/RISCVGenCSRegEnum.inc
)
endif()

View file

@ -11,6 +11,7 @@ extern bool Mips_getFeatureBits(unsigned int mode, unsigned int feature);
extern bool AArch64_getFeatureBits(unsigned int mode, unsigned int feature);
extern bool TriCore_getFeatureBits(unsigned int mode, unsigned int feature);
extern bool Sparc_getFeatureBits(unsigned int mode, unsigned int feature);
extern bool RISCV_getFeatureBits(unsigned int mode, unsigned int feature);
static bool testFeatureBits(const MCInst *MI, uint32_t Value)
{
@ -42,6 +43,10 @@ static bool testFeatureBits(const MCInst *MI, uint32_t Value)
#ifdef CAPSTONE_HAS_SPARC
case CS_ARCH_SPARC:
return Sparc_getFeatureBits(MI->csh->mode, Value);
#endif
#ifdef CAPSTONE_HAS_RISCV
case CS_ARCH_RISCV:
return RISCV_getFeatureBits(MI->csh->mode, Value);
#endif
}
}

View file

@ -359,6 +359,34 @@ DEFINE_get_detail_op(bpf, BPF, BPF);
DEFINE_get_detail_op(arc, ARC, ARC);
DEFINE_get_detail_op(sparc, Sparc, SPARC);
/// Returns the operand at detail->arch.operands[index]
/// Or NULL if detail is not set or the index would be out of bounds.
#define DEFINE_get_detail_op_at(arch, ARCH, ARCH_UPPER) \
cs_##arch##_op *ARCH##_get_detail_op_at(MCInst *MI, int index) \
{ \
if (!MI->flat_insn->detail) \
return NULL; \
if (index < 0 || index >= NUM_##ARCH_UPPER##_OPS) { \
return NULL; \
} \
return &MI->flat_insn->detail->arch.operands[index]; \
}
DEFINE_get_detail_op_at(arm, ARM, ARM);
DEFINE_get_detail_op_at(ppc, PPC, PPC);
DEFINE_get_detail_op_at(tricore, TriCore, TRICORE);
DEFINE_get_detail_op_at(aarch64, AArch64, AARCH64);
DEFINE_get_detail_op_at(alpha, Alpha, ALPHA);
DEFINE_get_detail_op_at(hppa, HPPA, HPPA);
DEFINE_get_detail_op_at(loongarch, LoongArch, LOONGARCH);
DEFINE_get_detail_op_at(mips, Mips, MIPS);
DEFINE_get_detail_op_at(riscv, RISCV, RISCV);
DEFINE_get_detail_op_at(systemz, SystemZ, SYSTEMZ);
DEFINE_get_detail_op_at(xtensa, Xtensa, XTENSA);
DEFINE_get_detail_op_at(bpf, BPF, BPF);
DEFINE_get_detail_op_at(arc, ARC, ARC);
DEFINE_get_detail_op_at(sparc, Sparc, SPARC);
/// Returns true if for this architecture the
/// alias operands should be filled.
/// TODO: Replace this with a proper option.

View file

@ -21,9 +21,9 @@ typedef struct insn_map {
unsigned short mapid; // The Capstone instruction id
#ifndef CAPSTONE_DIET
uint16_t regs_use[MAX_IMPL_R_REGS]; ///< list of implicit registers used by
///< this instruction
///< this instruction
uint16_t regs_mod[MAX_IMPL_W_REGS]; ///< list of implicit registers modified
///< by this instruction
///< by this instruction
unsigned char groups
[MAX_NUM_GROUPS]; ///< list of group this instruction belong to
bool branch; // branch instruction?
@ -48,7 +48,7 @@ unsigned short insn_find(const insn_map *m, unsigned int max, unsigned int id,
unsigned int find_cs_id(unsigned MC_Opcode, const insn_map *imap,
unsigned imap_size);
#define MAX_NO_DATA_TYPES 16
#define MAX_NO_DATA_TYPES 32
///< A LLVM<->CS Mapping entry of an MCOperand.
typedef struct {
@ -147,6 +147,24 @@ DECL_get_detail_op(bpf, BPF);
DECL_get_detail_op(arc, ARC);
DECL_get_detail_op(sparc, Sparc);
#define DECL_get_detail_op_at(arch, ARCH) \
cs_##arch##_op *ARCH##_get_detail_op_at(MCInst *MI, int offset);
DECL_get_detail_op_at(arm, ARM);
DECL_get_detail_op_at(ppc, PPC);
DECL_get_detail_op_at(tricore, TriCore);
DECL_get_detail_op_at(aarch64, AArch64);
DECL_get_detail_op_at(alpha, Alpha);
DECL_get_detail_op_at(hppa, HPPA);
DECL_get_detail_op_at(loongarch, LoongArch);
DECL_get_detail_op_at(mips, Mips);
DECL_get_detail_op_at(riscv, RISCV);
DECL_get_detail_op_at(systemz, SystemZ);
DECL_get_detail_op_at(xtensa, Xtensa);
DECL_get_detail_op_at(bpf, BPF);
DECL_get_detail_op_at(arc, ARC);
DECL_get_detail_op_at(sparc, Sparc);
/// Increments the detail->arch.op_count by one.
#define DEFINE_inc_detail_op_count(arch, ARCH) \
static inline void ARCH##_inc_op_count(MCInst *MI) \

View file

@ -62,6 +62,17 @@ static inline bool isIntN(unsigned N, int64_t x)
(-(INT64_C(1) << (N - 1)) <= x && x < (INT64_C(1) << (N - 1)));
}
/// isShiftedIntN - Checks if a signed integer is an N bit number shifted left by S.
static inline bool isShiftedIntN(unsigned N, unsigned S, int64_t x)
{
return isIntN(N + S, x) && (x % (UINT64_C(1) << S) == 0);
}
static inline bool isShiftedUIntN(unsigned N, unsigned S, uint64_t x)
{
return isUIntN(N + S, x) && (x % (UINT64_C(1) << S) == 0);
}
/// isMask_32 - This function returns true if the argument is a sequence of ones
/// starting at the least significant bit with the remainder zero (32 bit
/// version). Ex. isMask_32(0x0000FFFFU) == true.

View file

@ -510,6 +510,13 @@ void printFloat(SStream *ss, float val)
SStream_concat(ss, "%e", val);
}
void printfFloat(SStream *ss, const char *fmt, float val)
{
assert(ss);
SSTREAM_RETURN_IF_CLOSED(ss);
SStream_concat(ss, fmt, val);
}
void printFloatBang(SStream *ss, float val)
{
assert(ss);

View file

@ -94,6 +94,8 @@ void printInt32BangDec(SStream *O, int32_t val);
void printFloat(SStream *O, float val);
void printfFloat(SStream *ss, const char *fmt, float val);
void printFloatBang(SStream *O, float val);
void printExpr(SStream *O, uint64_t val);

139
arch/RISCV/RISCVBaseInfo.c Normal file
View file

@ -0,0 +1,139 @@
/* Capstone Disassembly Engine, http://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2023 */
/* Automatically translated source file from LLVM. */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Only small edits allowed. */
/* For multiple similar edits, please create a Patch for the translator. */
/* Capstone's C++ file translator: */
/* https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */
//===-- RISCVBaseInfo.cpp - Top level definitions for RISC-V MC -----------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file contains small standalone enum definitions for the RISC-V target
// useful for the compiler back-end and the MC libraries.
//
//===----------------------------------------------------------------------===//
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <capstone/platform.h>
#include "RISCVBaseInfo.h"
#define CONCAT(a, b) CONCAT_(a, b)
#define CONCAT_(a, b) a##_##b
typedef struct {
unsigned value;
bool isFractional;
} VLMULDecodeResult;
VLMULDecodeResult decodeVLMUL(RISCVII_VLMUL VLMUL)
{
switch (VLMUL) {
default:
CS_ASSERT(0 && "Unexpected LMUL value!");
case RISCVII_LMUL_1:
case RISCVII_LMUL_2:
case RISCVII_LMUL_4:
case RISCVII_LMUL_8: {
VLMULDecodeResult result = { .value = 1 << (unsigned)(VLMUL),
.isFractional = false };
return result;
}
case RISCVII_LMUL_F2:
case RISCVII_LMUL_F4:
case RISCVII_LMUL_F8: {
VLMULDecodeResult result = { .value = 1 << (8 -
(unsigned)(VLMUL)),
.isFractional = true };
return result;
}
}
}
void printVType(unsigned VType, SStream *OS)
{
unsigned Sew = RISCVVType_getSEW(VType);
SStream_concat(OS, "%s", "e");
printUInt64(OS, Sew);
unsigned LMul;
bool Fractional;
VLMULDecodeResult result = decodeVLMUL(RISCVVType_getVLMUL(VType));
LMul = result.value;
Fractional = result.isFractional;
if (Fractional)
SStream_concat0(OS, ", mf");
else
SStream_concat0(OS, ", m");
printUInt64(OS, LMul);
if (RISCVVType_isTailAgnostic(VType))
SStream_concat0(OS, ", ta");
else
SStream_concat0(OS, ", tu");
if (RISCVVType_isMaskAgnostic(VType))
SStream_concat0(OS, ", ma");
else
SStream_concat0(OS, ", mu");
}
typedef struct {
uint8_t first;
uint8_t second;
} LoadFP32ImmArrElement;
// Lookup table for fli.s for entries 2-31.
static const LoadFP32ImmArrElement LoadFP32ImmArr[] = {
{ 0x6f, 0x00 }, { 0x70, 0x00 }, { 0x77, 0x00 }, { 0x78, 0x00 },
{ 0x7b, 0x00 }, { 0x7c, 0x00 }, { 0x7d, 0x00 }, { 0x7d, 0x01 },
{ 0x7d, 0x02 }, { 0x7d, 0x03 }, { 0x7e, 0x00 }, { 0x7e, 0x01 },
{ 0x7e, 0x02 }, { 0x7e, 0x03 }, { 0x7f, 0x00 }, { 0x7f, 0x01 },
{ 0x7f, 0x02 }, { 0x7f, 0x03 }, { 0x80, 0x00 }, { 0x80, 0x01 },
{ 0x80, 0x02 }, { 0x81, 0x00 }, { 0x82, 0x00 }, { 0x83, 0x00 },
{ 0x86, 0x00 }, { 0x87, 0x00 }, { 0x8e, 0x00 }, { 0x8f, 0x00 },
{ 0xff, 0x00 }, { 0xff, 0x02 },
};
float getFPImm(unsigned Imm)
{
CS_ASSERT(Imm != 1 && Imm != 30 && Imm != 31 &&
"Unsupported immediate");
CS_ASSERT((Imm == 0 || (Imm >= 2 && Imm < 30)) &&
"Unsupported immediate");
// Entry 0 is -1.0, the only negative value. Entry 16 is 1.0.
uint32_t Sign = 0;
if (Imm == 0) {
Sign = 0x01;
Imm = 16;
}
uint32_t Exp = LoadFP32ImmArr[Imm - 2].first;
uint32_t Mantissa = LoadFP32ImmArr[Imm - 2].second;
uint32_t I = Sign << 31 | Exp << 23 | Mantissa << 21;
float result;
memcpy(&result, &I, sizeof(float));
return result;
}
void RISCVZC_printSpimm(int64_t Spimm, SStream *OS)
{
printInt32(OS, Spimm);
}
// namespace llvm

View file

@ -1,64 +1,126 @@
//===-- RISCVBaseInfo.h - Top level definitions for RISCV MC ----*- C++ -*-===//
/* Capstone Disassembly Engine, http://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2023 */
/* Automatically translated source file from LLVM. */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Only small edits allowed. */
/* For multiple similar edits, please create a Patch for the translator. */
/* Capstone's C++ file translator: */
/* https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */
//===-- RISCVBaseInfo.h - Top level definitions for RISC-V MC ---*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file contains small standalone enum definitions for the RISCV target
// This file contains small standalone enum definitions for the RISC-V target
// useful for the compiler back-end and the MC libraries.
//
//===----------------------------------------------------------------------===//
#ifndef CS_RISCVBASEINFO_H
#define CS_RISCVBASEINFO_H
#include "../../cs_priv.h"
#ifndef LLVM_LIB_TARGET_RISCV_MCTARGETDESC_RISCVBASEINFO_H
#define LLVM_LIB_TARGET_RISCV_MCTARGETDESC_RISCVBASEINFO_H
//#include "RISCVMCTargetDesc.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <capstone/platform.h>
#include "../../utils.h"
#define CONCAT(a, b) CONCAT_(a, b)
#define CONCAT_(a, b) a##_##b
// RISCVII - This namespace holds all of the target specific flags that
// instruction info tracks. All definitions must match RISCVInstrFormats.td.
enum {
IRISCVII_InstFormatPseudo = 0,
IRISCVII_InstFormatR = 1,
IRISCVII_InstFormatR4 = 2,
IRISCVII_InstFormatI = 3,
IRISCVII_InstFormatS = 4,
IRISCVII_InstFormatB = 5,
IRISCVII_InstFormatU = 6,
IRISCVII_InstFormatJ = 7,
IRISCVII_InstFormatCR = 8,
IRISCVII_InstFormatCI = 9,
IRISCVII_InstFormatCSS = 10,
IRISCVII_InstFormatCIW = 11,
IRISCVII_InstFormatCL = 12,
IRISCVII_InstFormatCS = 13,
IRISCVII_InstFormatCA = 14,
IRISCVII_InstFormatCB = 15,
IRISCVII_InstFormatCJ = 16,
IRISCVII_InstFormatOther = 17,
// CS namespace begin: RISCVII
IRISCVII_InstFormatMask = 31
// RISC-V Specific Machine Operand Flags
enum {
RISCVII_MO_None = 0,
RISCVII_MO_CALL = 1,
RISCVII_MO_LO = 3,
RISCVII_MO_HI = 4,
RISCVII_MO_PCREL_LO = 5,
RISCVII_MO_PCREL_HI = 6,
RISCVII_MO_GOT_HI = 7,
RISCVII_MO_TPREL_LO = 8,
RISCVII_MO_TPREL_HI = 9,
RISCVII_MO_TPREL_ADD = 10,
RISCVII_MO_TLS_GOT_HI = 11,
RISCVII_MO_TLS_GD_HI = 12,
RISCVII_MO_TLSDESC_HI = 13,
RISCVII_MO_TLSDESC_LOAD_LO = 14,
RISCVII_MO_TLSDESC_ADD_LO = 15,
RISCVII_MO_TLSDESC_CALL = 16,
// Used to differentiate between target-specific "direct" flags and "bitmask"
// flags. A machine operand can only have one "direct" flag, but can have
// multiple "bitmask" flags.
RISCVII_MO_DIRECT_FLAG_MASK = 31
};
enum {
RISCVII_MO_None,
RISCVII_MO_LO,
RISCVII_MO_HI,
RISCVII_MO_PCREL_HI,
};
typedef enum OperandType {
RISCVOp_OPERAND_FIRST_RISCV_IMM = MCOI_OPERAND_FIRST_TARGET,
RISCVOp_OPERAND_UIMM1 = RISCVOp_OPERAND_FIRST_RISCV_IMM,
RISCVOp_OPERAND_UIMM2,
RISCVOp_OPERAND_UIMM2_LSB0,
RISCVOp_OPERAND_UIMM3,
RISCVOp_OPERAND_UIMM4,
RISCVOp_OPERAND_UIMM5,
RISCVOp_OPERAND_UIMM6,
RISCVOp_OPERAND_UIMM7,
RISCVOp_OPERAND_UIMM7_LSB00,
RISCVOp_OPERAND_UIMM8_LSB00,
RISCVOp_OPERAND_UIMM8,
RISCVOp_OPERAND_UIMM8_LSB000,
RISCVOp_OPERAND_UIMM8_GE32,
RISCVOp_OPERAND_UIMM9_LSB000,
RISCVOp_OPERAND_UIMM10_LSB00_NONZERO,
RISCVOp_OPERAND_UIMM12,
RISCVOp_OPERAND_ZERO,
RISCVOp_OPERAND_SIMM5,
RISCVOp_OPERAND_SIMM5_PLUS1,
RISCVOp_OPERAND_SIMM6,
RISCVOp_OPERAND_SIMM6_NONZERO,
RISCVOp_OPERAND_SIMM10_LSB0000_NONZERO,
RISCVOp_OPERAND_SIMM12,
RISCVOp_OPERAND_SIMM12_LSB00000,
RISCVOp_OPERAND_UIMM20,
RISCVOp_OPERAND_UIMMLOG2XLEN,
RISCVOp_OPERAND_UIMMLOG2XLEN_NONZERO,
RISCVOp_OPERAND_CLUI_IMM,
RISCVOp_OPERAND_VTYPEI10,
RISCVOp_OPERAND_VTYPEI11,
RISCVOp_OPERAND_RVKRNUM,
RISCVOp_OPERAND_RVKRNUM_0_7,
RISCVOp_OPERAND_RVKRNUM_1_10,
RISCVOp_OPERAND_RVKRNUM_2_14,
OPERAND_LAST_RISCV_IMM = RISCVOp_OPERAND_RVKRNUM_2_14,
// Operand is either a register or uimm5, this is used by V extension pseudo
// instructions to represent a value that be passed as AVL to either vsetvli
// or vsetivli.
RISCVOp_OPERAND_AVL,
} RISCVOp_OperandType;
// Describes the predecessor/successor bits used in the FENCE instruction.
enum FenceField {
typedef enum FenceField {
RISCVFenceField_I = 8,
RISCVFenceField_O = 4,
RISCVFenceField_R = 2,
RISCVFenceField_W = 1
};
} RISCVFenceField_FenceField;
// Describes the supported floating point rounding mode encodings.
enum RoundingMode {
typedef enum RoundingMode {
RISCVFPRndMode_RNE = 0,
RISCVFPRndMode_RTZ = 1,
RISCVFPRndMode_RDN = 2,
@ -66,9 +128,24 @@ enum RoundingMode {
RISCVFPRndMode_RMM = 4,
RISCVFPRndMode_DYN = 7,
RISCVFPRndMode_Invalid
};
} RISCVFPRndMode_RoundingMode;
inline static const char *roundingModeToString(enum RoundingMode RndMode)
inline static bool RISCVFPRndMode_isValidRoundingMode(unsigned Mode)
{
switch (Mode) {
default:
return false;
case RISCVFPRndMode_RNE:
case RISCVFPRndMode_RTZ:
case RISCVFPRndMode_RDN:
case RISCVFPRndMode_RUP:
case RISCVFPRndMode_RMM:
case RISCVFPRndMode_DYN:
return true;
}
}
inline static const char *RISCVFPRndMode_roundingModeToString(unsigned RndMode)
{
switch (RndMode) {
default:
@ -88,19 +165,134 @@ inline static const char *roundingModeToString(enum RoundingMode RndMode)
}
}
inline static bool RISCVFPRndMode_isValidRoundingMode(unsigned Mode)
inline static bool RISCVVType_isTailAgnostic(unsigned VType)
{
switch (Mode) {
default:
return false;
case RISCVFPRndMode_RNE:
case RISCVFPRndMode_RTZ:
case RISCVFPRndMode_RDN:
case RISCVFPRndMode_RUP:
case RISCVFPRndMode_RMM:
case RISCVFPRndMode_DYN:
return true;
}
return VType & 0x40;
}
inline static bool RISCVVType_isMaskAgnostic(unsigned VType)
{
return VType & 0x80;
}
typedef enum RLISTENCODE {
RISCVZC_RLISTENCODE_RA = 4,
RISCVZC_RLISTENCODE_RA_S0,
RISCVZC_RLISTENCODE_RA_S0_S1,
RISCVZC_RLISTENCODE_RA_S0_S2,
RISCVZC_RLISTENCODE_RA_S0_S3,
RISCVZC_RLISTENCODE_RA_S0_S4,
RISCVZC_RLISTENCODE_RA_S0_S5,
RISCVZC_RLISTENCODE_RA_S0_S6,
RISCVZC_RLISTENCODE_RA_S0_S7,
RISCVZC_RLISTENCODE_RA_S0_S8,
RISCVZC_RLISTENCODE_RA_S0_S9,
// note - to include s10, s11 must also be included
RISCVZC_RLISTENCODE_RA_S0_S11,
RISCVZC_RLISTENCODE_INVALID_RLIST,
} RISCVZC_RLISTENCODE;
inline static unsigned RISCVZC_getStackAdjBase(unsigned RlistVal, bool IsRV64,
bool IsEABI)
{
CS_ASSERT(RlistVal != RISCVZC_RLISTENCODE_INVALID_RLIST &&
"{ra, s0-s10} is not supported, s11 must be included.");
if (IsEABI)
return 16;
if (!IsRV64) {
switch (RlistVal) {
case RISCVZC_RLISTENCODE_RA:
case RISCVZC_RLISTENCODE_RA_S0:
case RISCVZC_RLISTENCODE_RA_S0_S1:
case RISCVZC_RLISTENCODE_RA_S0_S2:
return 16;
case RISCVZC_RLISTENCODE_RA_S0_S3:
case RISCVZC_RLISTENCODE_RA_S0_S4:
case RISCVZC_RLISTENCODE_RA_S0_S5:
case RISCVZC_RLISTENCODE_RA_S0_S6:
return 32;
case RISCVZC_RLISTENCODE_RA_S0_S7:
case RISCVZC_RLISTENCODE_RA_S0_S8:
case RISCVZC_RLISTENCODE_RA_S0_S9:
return 48;
case RISCVZC_RLISTENCODE_RA_S0_S11:
return 64;
}
} else {
switch (RlistVal) {
case RISCVZC_RLISTENCODE_RA:
case RISCVZC_RLISTENCODE_RA_S0:
return 16;
case RISCVZC_RLISTENCODE_RA_S0_S1:
case RISCVZC_RLISTENCODE_RA_S0_S2:
return 32;
case RISCVZC_RLISTENCODE_RA_S0_S3:
case RISCVZC_RLISTENCODE_RA_S0_S4:
return 48;
case RISCVZC_RLISTENCODE_RA_S0_S5:
case RISCVZC_RLISTENCODE_RA_S0_S6:
return 64;
case RISCVZC_RLISTENCODE_RA_S0_S7:
case RISCVZC_RLISTENCODE_RA_S0_S8:
return 80;
case RISCVZC_RLISTENCODE_RA_S0_S9:
return 96;
case RISCVZC_RLISTENCODE_RA_S0_S11:
return 112;
}
}
CS_ASSERT(0 && "Unexpected RlistVal");
return 0; // unreachable
}
typedef enum VLMUL {
RISCVII_LMUL_1 = 0,
RISCVII_LMUL_2,
RISCVII_LMUL_4,
RISCVII_LMUL_8,
RISCVII_LMUL_RESERVED,
RISCVII_LMUL_F8,
RISCVII_LMUL_F4,
RISCVII_LMUL_F2
} RISCVII_VLMUL;
inline static RISCVII_VLMUL RISCVVType_getVLMUL(unsigned VType)
{
unsigned VLMUL = VType & 0x7;
return (RISCVII_VLMUL)(VLMUL);
}
inline static unsigned RISCVVType_decodeVSEW(unsigned VSEW)
{
CS_ASSERT(VSEW < 8 && "Unexpected VSEW value");
return 1 << (VSEW + 3);
}
inline static unsigned RISCVVType_getSEW(unsigned VType)
{
unsigned VSEW = (VType >> 3) & 0x7;
return RISCVVType_decodeVSEW(VSEW);
}
typedef struct {
unsigned raw_val;
} RegVal;
typedef struct SysReg {
const char *Name;
RegVal val1;
const char *AltName;
RegVal val2;
const char *DeprecatedName;
unsigned Encoding;
unsigned DummyFeatureArray[1];
bool isRV32Only;
} RISCV_SysReg;
void printVType(unsigned VType, SStream *OS);
float getFPImm(unsigned Imm);
void RISCVZC_printSpimm(int64_t Spimm, SStream *OS);
#endif

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,90 @@
#include "RISCVDisassemblerExtension.h"
#define GET_SUBTARGETINFO_ENUM
#include "RISCVGenSubtargetInfo.inc"
bool RISCV_getFeatureBits(unsigned int mode, unsigned int feature)
{
if (feature == RISCV_FeatureNoRVCHints) {
return false;
}
switch (feature) {
case RISCV_Feature32Bit:
return mode & CS_MODE_RISCV32;
case RISCV_Feature64Bit:
return mode & CS_MODE_RISCV64;
case RISCV_FeatureStdExtF:
case RISCV_FeatureStdExtD:
return mode & CS_MODE_RISCV_FD;
case RISCV_FeatureStdExtV:
return mode & CS_MODE_RISCV_V;
case RISCV_FeatureStdExtZfinx:
case RISCV_FeatureStdExtZdinx:
case RISCV_FeatureStdExtZhinx:
case RISCV_FeatureStdExtZhinxmin:
return mode & CS_MODE_RISCV_ZFINX;
case RISCV_FeatureStdExtC:
return mode & CS_MODE_RISCV_C;
case RISCV_FeatureStdExtZcmp:
case RISCV_FeatureStdExtZcmt:
case RISCV_FeatureStdExtZce:
return mode & CS_MODE_RISCV_ZCMP_ZCMT_ZCE;
case RISCV_FeatureStdExtZicfiss:
return mode & CS_MODE_RISCV_ZICFISS;
case RISCV_FeatureRVE:
return mode & CS_MODE_RISCV_E;
case RISCV_FeatureStdExtA:
return mode & CS_MODE_RISCV_A;
case RISCV_FeatureVendorXCVelw:
return mode & CS_MODE_RISCV_COREV;
case RISCV_FeatureVendorXSfvcp:
case RISCV_FeatureVendorXSfvfnrclipxfqf:
case RISCV_FeatureVendorXSfvfwmaccqqq:
case RISCV_FeatureVendorXSfvqmaccdod:
case RISCV_FeatureVendorXSfvqmaccqoq:
return mode & CS_MODE_RISCV_SIFIVE;
case RISCV_FeatureVendorXTHeadBa:
case RISCV_FeatureVendorXTHeadBb:
case RISCV_FeatureVendorXTHeadBs:
case RISCV_FeatureVendorXTHeadCmo:
case RISCV_FeatureVendorXTHeadCondMov:
case RISCV_FeatureVendorXTHeadFMemIdx:
case RISCV_FeatureVendorXTHeadMac:
case RISCV_FeatureVendorXTHeadMemIdx:
case RISCV_FeatureVendorXTHeadMemPair:
case RISCV_FeatureVendorXTHeadSync:
case RISCV_FeatureVendorXTHeadVdot:
return mode & CS_MODE_RISCV_THEAD;
case RISCV_FeatureStdExtZba:
return mode & CS_MODE_RISCV_ZBA;
case RISCV_FeatureStdExtZbb:
return mode & CS_MODE_RISCV_ZBB;
case RISCV_FeatureStdExtZbc:
return mode & CS_MODE_RISCV_ZBC;
case RISCV_FeatureStdExtZbkb:
return mode & CS_MODE_RISCV_ZBKB;
case RISCV_FeatureStdExtZbkc:
return mode & CS_MODE_RISCV_ZBKC;
case RISCV_FeatureStdExtZbkx:
return mode & CS_MODE_RISCV_ZBKX;
case RISCV_FeatureStdExtZbs:
return mode & CS_MODE_RISCV_ZBS;
default:
// support everything by default
return true;
}
}

View file

@ -0,0 +1,8 @@
#ifndef CS_RISCV_DISASSEMBLER_EXTENSION_H
#define CS_RISCV_DISASSEMBLER_EXTENSION_H
#include "../../cs_priv.h"
bool RISCV_getFeatureBits(unsigned int mode, unsigned int feature);
#endif // CS_RISCV_DISASSEMBLER_EXTENSION_H

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,99 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2024 */
/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Do not edit. */
/* Capstone's LLVM TableGen Backends: */
/* https://github.com/capstone-engine/llvm-capstone */
RISCV_INS_ALIAS_NOP, // Real instr.: RISCV_ADDI
RISCV_INS_ALIAS_LI, // Real instr.: RISCV_ADDI
RISCV_INS_ALIAS_MV, // Real instr.: RISCV_ADDI
RISCV_INS_ALIAS_NOT, // Real instr.: RISCV_XORI
RISCV_INS_ALIAS_NEG, // Real instr.: RISCV_SUB
RISCV_INS_ALIAS_NEGW, // Real instr.: RISCV_SUBW
RISCV_INS_ALIAS_SEXT_W, // Real instr.: RISCV_ADDIW
RISCV_INS_ALIAS_SEQZ, // Real instr.: RISCV_SLTIU
RISCV_INS_ALIAS_SNEZ, // Real instr.: RISCV_SLTU
RISCV_INS_ALIAS_SLTZ, // Real instr.: RISCV_SLT
RISCV_INS_ALIAS_SGTZ, // Real instr.: RISCV_SLT
RISCV_INS_ALIAS_BEQZ, // Real instr.: RISCV_BEQ
RISCV_INS_ALIAS_BNEZ, // Real instr.: RISCV_BNE
RISCV_INS_ALIAS_BLEZ, // Real instr.: RISCV_BGE
RISCV_INS_ALIAS_BGEZ, // Real instr.: RISCV_BGE
RISCV_INS_ALIAS_BLTZ, // Real instr.: RISCV_BLT
RISCV_INS_ALIAS_BGTZ, // Real instr.: RISCV_BLT
RISCV_INS_ALIAS_J, // Real instr.: RISCV_JAL
RISCV_INS_ALIAS_JAL, // Real instr.: RISCV_JAL
RISCV_INS_ALIAS_JR, // Real instr.: RISCV_JALR
RISCV_INS_ALIAS_JALR, // Real instr.: RISCV_JALR
RISCV_INS_ALIAS_RET, // Real instr.: RISCV_JALR
RISCV_INS_ALIAS_FENCE, // Real instr.: RISCV_FENCE
RISCV_INS_ALIAS_PAUSE, // Real instr.: RISCV_FENCE
RISCV_INS_ALIAS_RDINSTRET, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_RDCYCLE, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_RDTIME, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_RDINSTRETH, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_RDCYCLEH, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_RDTIMEH, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_CSRR, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_CSRW, // Real instr.: RISCV_CSRRW
RISCV_INS_ALIAS_CSRS, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_CSRC, // Real instr.: RISCV_CSRRC
RISCV_INS_ALIAS_CSRWI, // Real instr.: RISCV_CSRRWI
RISCV_INS_ALIAS_CSRSI, // Real instr.: RISCV_CSRRSI
RISCV_INS_ALIAS_CSRCI, // Real instr.: RISCV_CSRRCI
RISCV_INS_ALIAS_SFENCE_VMA, // Real instr.: RISCV_SFENCE_VMA
RISCV_INS_ALIAS_HFENCE_GVMA, // Real instr.: RISCV_HFENCE_GVMA
RISCV_INS_ALIAS_HFENCE_VVMA, // Real instr.: RISCV_HFENCE_VVMA
RISCV_INS_ALIAS_NTL_P1, // Real instr.: RISCV_ADD
RISCV_INS_ALIAS_NTL_PALL, // Real instr.: RISCV_ADD
RISCV_INS_ALIAS_NTL_S1, // Real instr.: RISCV_ADD
RISCV_INS_ALIAS_NTL_ALL, // Real instr.: RISCV_ADD
RISCV_INS_ALIAS_LPAD, // Real instr.: RISCV_AUIPC
RISCV_INS_ALIAS_FMV_S, // Real instr.: RISCV_FSGNJ_S
RISCV_INS_ALIAS_FABS_S, // Real instr.: RISCV_FSGNJX_S
RISCV_INS_ALIAS_FNEG_S, // Real instr.: RISCV_FSGNJN_S
RISCV_INS_ALIAS_FRCSR, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_FSCSR, // Real instr.: RISCV_CSRRW
RISCV_INS_ALIAS_FRRM, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_FSRM, // Real instr.: RISCV_CSRRW
RISCV_INS_ALIAS_FSRMI, // Real instr.: RISCV_CSRRWI
RISCV_INS_ALIAS_FRFLAGS, // Real instr.: RISCV_CSRRS
RISCV_INS_ALIAS_FSFLAGS, // Real instr.: RISCV_CSRRW
RISCV_INS_ALIAS_FSFLAGSI, // Real instr.: RISCV_CSRRWI
RISCV_INS_ALIAS_FMV_D, // Real instr.: RISCV_FSGNJ_D
RISCV_INS_ALIAS_FABS_D, // Real instr.: RISCV_FSGNJX_D
RISCV_INS_ALIAS_FNEG_D, // Real instr.: RISCV_FSGNJN_D
RISCV_INS_ALIAS_FMV_H, // Real instr.: RISCV_FSGNJ_H
RISCV_INS_ALIAS_FABS_H, // Real instr.: RISCV_FSGNJX_H
RISCV_INS_ALIAS_FNEG_H, // Real instr.: RISCV_FSGNJN_H
RISCV_INS_ALIAS_ZEXT_W, // Real instr.: RISCV_ADD_UW
RISCV_INS_ALIAS_VL1R_V, // Real instr.: RISCV_VL1RE8_V
RISCV_INS_ALIAS_VL2R_V, // Real instr.: RISCV_VL2RE8_V
RISCV_INS_ALIAS_VL4R_V, // Real instr.: RISCV_VL4RE8_V
RISCV_INS_ALIAS_VL8R_V, // Real instr.: RISCV_VL8RE8_V
RISCV_INS_ALIAS_VNEG_V, // Real instr.: RISCV_VRSUB_VX
RISCV_INS_ALIAS_VWCVT_X_X_V, // Real instr.: RISCV_VWADD_VX
RISCV_INS_ALIAS_VWCVTU_X_X_V, // Real instr.: RISCV_VWADDU_VX
RISCV_INS_ALIAS_VNOT_V, // Real instr.: RISCV_VXOR_VI
RISCV_INS_ALIAS_VNCVT_X_X_W, // Real instr.: RISCV_VNSRL_WX
RISCV_INS_ALIAS_VFNEG_V, // Real instr.: RISCV_VFSGNJN_VV
RISCV_INS_ALIAS_VFABS_V, // Real instr.: RISCV_VFSGNJX_VV
RISCV_INS_ALIAS_VMMV_M, // Real instr.: RISCV_VMAND_MM
RISCV_INS_ALIAS_VMCLR_M, // Real instr.: RISCV_VMXOR_MM
RISCV_INS_ALIAS_VMSET_M, // Real instr.: RISCV_VMXNOR_MM
RISCV_INS_ALIAS_VMNOT_M, // Real instr.: RISCV_VMNAND_MM
RISCV_INS_ALIAS_C_NTL_P1, // Real instr.: RISCV_C_ADD_HINT
RISCV_INS_ALIAS_C_NTL_PALL, // Real instr.: RISCV_C_ADD_HINT
RISCV_INS_ALIAS_C_NTL_S1, // Real instr.: RISCV_C_ADD_HINT
RISCV_INS_ALIAS_C_NTL_ALL, // Real instr.: RISCV_C_ADD_HINT
RISCV_INS_ALIAS_CV_MULS, // Real instr.: RISCV_CV_MULSN
RISCV_INS_ALIAS_CV_MULHHS, // Real instr.: RISCV_CV_MULHHSN
RISCV_INS_ALIAS_CV_MULU, // Real instr.: RISCV_CV_MULUN
RISCV_INS_ALIAS_CV_MULHHU, // Real instr.: RISCV_CV_MULHHUN

View file

@ -0,0 +1,99 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2024 */
/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Do not edit. */
/* Capstone's LLVM TableGen Backends: */
/* https://github.com/capstone-engine/llvm-capstone */
{ RISCV_INS_ALIAS_NOP, "nop" },
{ RISCV_INS_ALIAS_LI, "li" },
{ RISCV_INS_ALIAS_MV, "mv" },
{ RISCV_INS_ALIAS_NOT, "not" },
{ RISCV_INS_ALIAS_NEG, "neg" },
{ RISCV_INS_ALIAS_NEGW, "negw" },
{ RISCV_INS_ALIAS_SEXT_W, "sext_w" },
{ RISCV_INS_ALIAS_SEQZ, "seqz" },
{ RISCV_INS_ALIAS_SNEZ, "snez" },
{ RISCV_INS_ALIAS_SLTZ, "sltz" },
{ RISCV_INS_ALIAS_SGTZ, "sgtz" },
{ RISCV_INS_ALIAS_BEQZ, "beqz" },
{ RISCV_INS_ALIAS_BNEZ, "bnez" },
{ RISCV_INS_ALIAS_BLEZ, "blez" },
{ RISCV_INS_ALIAS_BGEZ, "bgez" },
{ RISCV_INS_ALIAS_BLTZ, "bltz" },
{ RISCV_INS_ALIAS_BGTZ, "bgtz" },
{ RISCV_INS_ALIAS_J, "j" },
{ RISCV_INS_ALIAS_JAL, "jal" },
{ RISCV_INS_ALIAS_JR, "jr" },
{ RISCV_INS_ALIAS_JALR, "jalr" },
{ RISCV_INS_ALIAS_RET, "ret" },
{ RISCV_INS_ALIAS_FENCE, "fence" },
{ RISCV_INS_ALIAS_PAUSE, "pause" },
{ RISCV_INS_ALIAS_RDINSTRET, "rdinstret" },
{ RISCV_INS_ALIAS_RDCYCLE, "rdcycle" },
{ RISCV_INS_ALIAS_RDTIME, "rdtime" },
{ RISCV_INS_ALIAS_RDINSTRETH, "rdinstreth" },
{ RISCV_INS_ALIAS_RDCYCLEH, "rdcycleh" },
{ RISCV_INS_ALIAS_RDTIMEH, "rdtimeh" },
{ RISCV_INS_ALIAS_CSRR, "csrr" },
{ RISCV_INS_ALIAS_CSRW, "csrw" },
{ RISCV_INS_ALIAS_CSRS, "csrs" },
{ RISCV_INS_ALIAS_CSRC, "csrc" },
{ RISCV_INS_ALIAS_CSRWI, "csrwi" },
{ RISCV_INS_ALIAS_CSRSI, "csrsi" },
{ RISCV_INS_ALIAS_CSRCI, "csrci" },
{ RISCV_INS_ALIAS_SFENCE_VMA, "sfence_vma" },
{ RISCV_INS_ALIAS_HFENCE_GVMA, "hfence_gvma" },
{ RISCV_INS_ALIAS_HFENCE_VVMA, "hfence_vvma" },
{ RISCV_INS_ALIAS_NTL_P1, "ntl_p1" },
{ RISCV_INS_ALIAS_NTL_PALL, "ntl_pall" },
{ RISCV_INS_ALIAS_NTL_S1, "ntl_s1" },
{ RISCV_INS_ALIAS_NTL_ALL, "ntl_all" },
{ RISCV_INS_ALIAS_LPAD, "lpad" },
{ RISCV_INS_ALIAS_FMV_S, "fmv_s" },
{ RISCV_INS_ALIAS_FABS_S, "fabs_s" },
{ RISCV_INS_ALIAS_FNEG_S, "fneg_s" },
{ RISCV_INS_ALIAS_FRCSR, "frcsr" },
{ RISCV_INS_ALIAS_FSCSR, "fscsr" },
{ RISCV_INS_ALIAS_FRRM, "frrm" },
{ RISCV_INS_ALIAS_FSRM, "fsrm" },
{ RISCV_INS_ALIAS_FSRMI, "fsrmi" },
{ RISCV_INS_ALIAS_FRFLAGS, "frflags" },
{ RISCV_INS_ALIAS_FSFLAGS, "fsflags" },
{ RISCV_INS_ALIAS_FSFLAGSI, "fsflagsi" },
{ RISCV_INS_ALIAS_FMV_D, "fmv_d" },
{ RISCV_INS_ALIAS_FABS_D, "fabs_d" },
{ RISCV_INS_ALIAS_FNEG_D, "fneg_d" },
{ RISCV_INS_ALIAS_FMV_H, "fmv_h" },
{ RISCV_INS_ALIAS_FABS_H, "fabs_h" },
{ RISCV_INS_ALIAS_FNEG_H, "fneg_h" },
{ RISCV_INS_ALIAS_ZEXT_W, "zext_w" },
{ RISCV_INS_ALIAS_VL1R_V, "vl1r_v" },
{ RISCV_INS_ALIAS_VL2R_V, "vl2r_v" },
{ RISCV_INS_ALIAS_VL4R_V, "vl4r_v" },
{ RISCV_INS_ALIAS_VL8R_V, "vl8r_v" },
{ RISCV_INS_ALIAS_VNEG_V, "vneg_v" },
{ RISCV_INS_ALIAS_VWCVT_X_X_V, "vwcvt_x_x_v" },
{ RISCV_INS_ALIAS_VWCVTU_X_X_V, "vwcvtu_x_x_v" },
{ RISCV_INS_ALIAS_VNOT_V, "vnot_v" },
{ RISCV_INS_ALIAS_VNCVT_X_X_W, "vncvt_x_x_w" },
{ RISCV_INS_ALIAS_VFNEG_V, "vfneg_v" },
{ RISCV_INS_ALIAS_VFABS_V, "vfabs_v" },
{ RISCV_INS_ALIAS_VMMV_M, "vmmv_m" },
{ RISCV_INS_ALIAS_VMCLR_M, "vmclr_m" },
{ RISCV_INS_ALIAS_VMSET_M, "vmset_m" },
{ RISCV_INS_ALIAS_VMNOT_M, "vmnot_m" },
{ RISCV_INS_ALIAS_C_NTL_P1, "c_ntl_p1" },
{ RISCV_INS_ALIAS_C_NTL_PALL, "c_ntl_pall" },
{ RISCV_INS_ALIAS_C_NTL_S1, "c_ntl_s1" },
{ RISCV_INS_ALIAS_C_NTL_ALL, "c_ntl_all" },
{ RISCV_INS_ALIAS_CV_MULS, "cv_muls" },
{ RISCV_INS_ALIAS_CV_MULHHS, "cv_mulhhs" },
{ RISCV_INS_ALIAS_CV_MULU, "cv_mulu" },
{ RISCV_INS_ALIAS_CV_MULHHU, "cv_mulhhu" },

View file

@ -0,0 +1,113 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2024 */
/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Do not edit. */
/* Capstone's LLVM TableGen Backends: */
/* https://github.com/capstone-engine/llvm-capstone */
RISCV_FEATURE_HASSTDEXTI = 128,
RISCV_FEATURE_HASSTDEXTZICBOM,
RISCV_FEATURE_HASSTDEXTZICBOP,
RISCV_FEATURE_HASSTDEXTZICBOZ,
RISCV_FEATURE_HASSTDEXTZICSR,
RISCV_FEATURE_HASSTDEXTZICOND,
RISCV_FEATURE_HASSTDEXTZIFENCEI,
RISCV_FEATURE_HASSTDEXTZIHINTPAUSE,
RISCV_FEATURE_HASSTDEXTZIHINTNTL,
RISCV_FEATURE_HASSTDEXTZIMOP,
RISCV_FEATURE_HASSTDEXTZICFILP,
RISCV_FEATURE_HASSTDEXTZICFISS,
RISCV_FEATURE_HASSTDEXTM,
RISCV_FEATURE_HASSTDEXTMORZMMUL,
RISCV_FEATURE_HASSTDEXTA,
RISCV_FEATURE_HASSTDEXTZTSO,
RISCV_FEATURE_HASSTDEXTZACAS,
RISCV_FEATURE_HASSTDEXTZAWRS,
RISCV_FEATURE_HASSTDEXTF,
RISCV_FEATURE_HASSTDEXTD,
RISCV_FEATURE_HASSTDEXTZFHMIN,
RISCV_FEATURE_HASSTDEXTZFH,
RISCV_FEATURE_HASSTDEXTZFBFMIN,
RISCV_FEATURE_HASHALFFPLOADSTOREMOVE,
RISCV_FEATURE_HASSTDEXTZFA,
RISCV_FEATURE_HASSTDEXTZFINX,
RISCV_FEATURE_HASSTDEXTZDINX,
RISCV_FEATURE_HASSTDEXTZHINXMIN,
RISCV_FEATURE_HASSTDEXTZHINX,
RISCV_FEATURE_HASSTDEXTC,
RISCV_FEATURE_HASRVCHINTS,
RISCV_FEATURE_HASSTDEXTCORZCA,
RISCV_FEATURE_HASSTDEXTZCB,
RISCV_FEATURE_HASSTDEXTCORZCD,
RISCV_FEATURE_HASSTDEXTZCMP,
RISCV_FEATURE_HASSTDEXTZCMT,
RISCV_FEATURE_HASSTDEXTCORZCFORZCE,
RISCV_FEATURE_HASSTDEXTZCMOP,
RISCV_FEATURE_HASSTDEXTZBA,
RISCV_FEATURE_HASSTDEXTZBB,
RISCV_FEATURE_HASSTDEXTZBC,
RISCV_FEATURE_HASSTDEXTZBS,
RISCV_FEATURE_HASSTDEXTZBKB,
RISCV_FEATURE_HASSTDEXTZBKX,
RISCV_FEATURE_HASSTDEXTZBBORZBKB,
RISCV_FEATURE_HASSTDEXTZBKC,
RISCV_FEATURE_HASSTDEXTZBCORZBKC,
RISCV_FEATURE_HASSTDEXTZKND,
RISCV_FEATURE_HASSTDEXTZKNE,
RISCV_FEATURE_HASSTDEXTZKNDORZKNE,
RISCV_FEATURE_HASSTDEXTZKNH,
RISCV_FEATURE_HASSTDEXTZKSED,
RISCV_FEATURE_HASSTDEXTZKSH,
RISCV_FEATURE_HASSTDEXTZKR,
RISCV_FEATURE_HASSTDEXTZVFBFMIN,
RISCV_FEATURE_HASSTDEXTZVFBFWMA,
RISCV_FEATURE_HASSTDEXTZFHORZVFH,
RISCV_FEATURE_HASSTDEXTZVKB,
RISCV_FEATURE_HASSTDEXTZVBB,
RISCV_FEATURE_HASSTDEXTZVBC,
RISCV_FEATURE_HASSTDEXTZVKG,
RISCV_FEATURE_HASSTDEXTZVKNED,
RISCV_FEATURE_HASSTDEXTZVKNHA,
RISCV_FEATURE_HASSTDEXTZVKNHB,
RISCV_FEATURE_HASSTDEXTZVKNHAORZVKNHB,
RISCV_FEATURE_HASSTDEXTZVKSED,
RISCV_FEATURE_HASSTDEXTZVKSH,
RISCV_FEATURE_HASVINSTRUCTIONS,
RISCV_FEATURE_HASVINSTRUCTIONSI64,
RISCV_FEATURE_HASVINSTRUCTIONSANYF,
RISCV_FEATURE_HASVINSTRUCTIONSF16MINIMAL,
RISCV_FEATURE_HASSTDEXTH,
RISCV_FEATURE_HASSTDEXTSVINVAL,
RISCV_FEATURE_HASVENDORXVENTANACONDOPS,
RISCV_FEATURE_HASVENDORXTHEADBA,
RISCV_FEATURE_HASVENDORXTHEADBB,
RISCV_FEATURE_HASVENDORXTHEADBS,
RISCV_FEATURE_HASVENDORXTHEADCONDMOV,
RISCV_FEATURE_HASVENDORXTHEADCMO,
RISCV_FEATURE_HASVENDORXTHEADFMEMIDX,
RISCV_FEATURE_HASVENDORXTHEADMAC,
RISCV_FEATURE_HASVENDORXTHEADMEMIDX,
RISCV_FEATURE_HASVENDORXTHEADMEMPAIR,
RISCV_FEATURE_HASVENDORXTHEADSYNC,
RISCV_FEATURE_HASVENDORXTHEADVDOT,
RISCV_FEATURE_HASVENDORXSFVCP,
RISCV_FEATURE_HASVENDORXSFVQMACCDOD,
RISCV_FEATURE_HASVENDORXSFVQMACCQOQ,
RISCV_FEATURE_HASVENDORXSFVFWMACCQQQ,
RISCV_FEATURE_HASVENDORXSFVFNRCLIPXFQF,
RISCV_FEATURE_HASVENDORXCVELW,
RISCV_FEATURE_HASVENDORXCVBITMANIP,
RISCV_FEATURE_HASVENDORXCVMAC,
RISCV_FEATURE_HASVENDORXCVMEM,
RISCV_FEATURE_HASVENDORXCVALU,
RISCV_FEATURE_HASVENDORXCVSIMD,
RISCV_FEATURE_HASVENDORXCVBI,
RISCV_FEATURE_ISRV64,
RISCV_FEATURE_ISRV32,
RISCV_FEATURE_ISRVE,

View file

@ -0,0 +1,113 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2024 */
/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Do not edit. */
/* Capstone's LLVM TableGen Backends: */
/* https://github.com/capstone-engine/llvm-capstone */
{ RISCV_FEATURE_HASSTDEXTI, "HasStdExtI" },
{ RISCV_FEATURE_HASSTDEXTZICBOM, "HasStdExtZicbom" },
{ RISCV_FEATURE_HASSTDEXTZICBOP, "HasStdExtZicbop" },
{ RISCV_FEATURE_HASSTDEXTZICBOZ, "HasStdExtZicboz" },
{ RISCV_FEATURE_HASSTDEXTZICSR, "HasStdExtZicsr" },
{ RISCV_FEATURE_HASSTDEXTZICOND, "HasStdExtZicond" },
{ RISCV_FEATURE_HASSTDEXTZIFENCEI, "HasStdExtZifencei" },
{ RISCV_FEATURE_HASSTDEXTZIHINTPAUSE, "HasStdExtZihintpause" },
{ RISCV_FEATURE_HASSTDEXTZIHINTNTL, "HasStdExtZihintntl" },
{ RISCV_FEATURE_HASSTDEXTZIMOP, "HasStdExtZimop" },
{ RISCV_FEATURE_HASSTDEXTZICFILP, "HasStdExtZicfilp" },
{ RISCV_FEATURE_HASSTDEXTZICFISS, "HasStdExtZicfiss" },
{ RISCV_FEATURE_HASSTDEXTM, "HasStdExtM" },
{ RISCV_FEATURE_HASSTDEXTMORZMMUL, "HasStdExtMOrZmmul" },
{ RISCV_FEATURE_HASSTDEXTA, "HasStdExtA" },
{ RISCV_FEATURE_HASSTDEXTZTSO, "HasStdExtZtso" },
{ RISCV_FEATURE_HASSTDEXTZACAS, "HasStdExtZacas" },
{ RISCV_FEATURE_HASSTDEXTZAWRS, "HasStdExtZawrs" },
{ RISCV_FEATURE_HASSTDEXTF, "HasStdExtF" },
{ RISCV_FEATURE_HASSTDEXTD, "HasStdExtD" },
{ RISCV_FEATURE_HASSTDEXTZFHMIN, "HasStdExtZfhmin" },
{ RISCV_FEATURE_HASSTDEXTZFH, "HasStdExtZfh" },
{ RISCV_FEATURE_HASSTDEXTZFBFMIN, "HasStdExtZfbfmin" },
{ RISCV_FEATURE_HASHALFFPLOADSTOREMOVE, "HasHalfFPLoadStoreMove" },
{ RISCV_FEATURE_HASSTDEXTZFA, "HasStdExtZfa" },
{ RISCV_FEATURE_HASSTDEXTZFINX, "HasStdExtZfinx" },
{ RISCV_FEATURE_HASSTDEXTZDINX, "HasStdExtZdinx" },
{ RISCV_FEATURE_HASSTDEXTZHINXMIN, "HasStdExtZhinxmin" },
{ RISCV_FEATURE_HASSTDEXTZHINX, "HasStdExtZhinx" },
{ RISCV_FEATURE_HASSTDEXTC, "HasStdExtC" },
{ RISCV_FEATURE_HASRVCHINTS, "HasRVCHints" },
{ RISCV_FEATURE_HASSTDEXTCORZCA, "HasStdExtCOrZca" },
{ RISCV_FEATURE_HASSTDEXTZCB, "HasStdExtZcb" },
{ RISCV_FEATURE_HASSTDEXTCORZCD, "HasStdExtCOrZcd" },
{ RISCV_FEATURE_HASSTDEXTZCMP, "HasStdExtZcmp" },
{ RISCV_FEATURE_HASSTDEXTZCMT, "HasStdExtZcmt" },
{ RISCV_FEATURE_HASSTDEXTCORZCFORZCE, "HasStdExtCOrZcfOrZce" },
{ RISCV_FEATURE_HASSTDEXTZCMOP, "HasStdExtZcmop" },
{ RISCV_FEATURE_HASSTDEXTZBA, "HasStdExtZba" },
{ RISCV_FEATURE_HASSTDEXTZBB, "HasStdExtZbb" },
{ RISCV_FEATURE_HASSTDEXTZBC, "HasStdExtZbc" },
{ RISCV_FEATURE_HASSTDEXTZBS, "HasStdExtZbs" },
{ RISCV_FEATURE_HASSTDEXTZBKB, "HasStdExtZbkb" },
{ RISCV_FEATURE_HASSTDEXTZBKX, "HasStdExtZbkx" },
{ RISCV_FEATURE_HASSTDEXTZBBORZBKB, "HasStdExtZbbOrZbkb" },
{ RISCV_FEATURE_HASSTDEXTZBKC, "HasStdExtZbkc" },
{ RISCV_FEATURE_HASSTDEXTZBCORZBKC, "HasStdExtZbcOrZbkc" },
{ RISCV_FEATURE_HASSTDEXTZKND, "HasStdExtZknd" },
{ RISCV_FEATURE_HASSTDEXTZKNE, "HasStdExtZkne" },
{ RISCV_FEATURE_HASSTDEXTZKNDORZKNE, "HasStdExtZkndOrZkne" },
{ RISCV_FEATURE_HASSTDEXTZKNH, "HasStdExtZknh" },
{ RISCV_FEATURE_HASSTDEXTZKSED, "HasStdExtZksed" },
{ RISCV_FEATURE_HASSTDEXTZKSH, "HasStdExtZksh" },
{ RISCV_FEATURE_HASSTDEXTZKR, "HasStdExtZkr" },
{ RISCV_FEATURE_HASSTDEXTZVFBFMIN, "HasStdExtZvfbfmin" },
{ RISCV_FEATURE_HASSTDEXTZVFBFWMA, "HasStdExtZvfbfwma" },
{ RISCV_FEATURE_HASSTDEXTZFHORZVFH, "HasStdExtZfhOrZvfh" },
{ RISCV_FEATURE_HASSTDEXTZVKB, "HasStdExtZvkb" },
{ RISCV_FEATURE_HASSTDEXTZVBB, "HasStdExtZvbb" },
{ RISCV_FEATURE_HASSTDEXTZVBC, "HasStdExtZvbc" },
{ RISCV_FEATURE_HASSTDEXTZVKG, "HasStdExtZvkg" },
{ RISCV_FEATURE_HASSTDEXTZVKNED, "HasStdExtZvkned" },
{ RISCV_FEATURE_HASSTDEXTZVKNHA, "HasStdExtZvknha" },
{ RISCV_FEATURE_HASSTDEXTZVKNHB, "HasStdExtZvknhb" },
{ RISCV_FEATURE_HASSTDEXTZVKNHAORZVKNHB, "HasStdExtZvknhaOrZvknhb" },
{ RISCV_FEATURE_HASSTDEXTZVKSED, "HasStdExtZvksed" },
{ RISCV_FEATURE_HASSTDEXTZVKSH, "HasStdExtZvksh" },
{ RISCV_FEATURE_HASVINSTRUCTIONS, "HasVInstructions" },
{ RISCV_FEATURE_HASVINSTRUCTIONSI64, "HasVInstructionsI64" },
{ RISCV_FEATURE_HASVINSTRUCTIONSANYF, "HasVInstructionsAnyF" },
{ RISCV_FEATURE_HASVINSTRUCTIONSF16MINIMAL, "HasVInstructionsF16Minimal" },
{ RISCV_FEATURE_HASSTDEXTH, "HasStdExtH" },
{ RISCV_FEATURE_HASSTDEXTSVINVAL, "HasStdExtSvinval" },
{ RISCV_FEATURE_HASVENDORXVENTANACONDOPS, "HasVendorXVentanaCondOps" },
{ RISCV_FEATURE_HASVENDORXTHEADBA, "HasVendorXTHeadBa" },
{ RISCV_FEATURE_HASVENDORXTHEADBB, "HasVendorXTHeadBb" },
{ RISCV_FEATURE_HASVENDORXTHEADBS, "HasVendorXTHeadBs" },
{ RISCV_FEATURE_HASVENDORXTHEADCONDMOV, "HasVendorXTHeadCondMov" },
{ RISCV_FEATURE_HASVENDORXTHEADCMO, "HasVendorXTHeadCmo" },
{ RISCV_FEATURE_HASVENDORXTHEADFMEMIDX, "HasVendorXTHeadFMemIdx" },
{ RISCV_FEATURE_HASVENDORXTHEADMAC, "HasVendorXTHeadMac" },
{ RISCV_FEATURE_HASVENDORXTHEADMEMIDX, "HasVendorXTHeadMemIdx" },
{ RISCV_FEATURE_HASVENDORXTHEADMEMPAIR, "HasVendorXTHeadMemPair" },
{ RISCV_FEATURE_HASVENDORXTHEADSYNC, "HasVendorXTHeadSync" },
{ RISCV_FEATURE_HASVENDORXTHEADVDOT, "HasVendorXTHeadVdot" },
{ RISCV_FEATURE_HASVENDORXSFVCP, "HasVendorXSfvcp" },
{ RISCV_FEATURE_HASVENDORXSFVQMACCDOD, "HasVendorXSfvqmaccdod" },
{ RISCV_FEATURE_HASVENDORXSFVQMACCQOQ, "HasVendorXSfvqmaccqoq" },
{ RISCV_FEATURE_HASVENDORXSFVFWMACCQQQ, "HasVendorXSfvfwmaccqqq" },
{ RISCV_FEATURE_HASVENDORXSFVFNRCLIPXFQF, "HasVendorXSfvfnrclipxfqf" },
{ RISCV_FEATURE_HASVENDORXCVELW, "HasVendorXCVelw" },
{ RISCV_FEATURE_HASVENDORXCVBITMANIP, "HasVendorXCVbitmanip" },
{ RISCV_FEATURE_HASVENDORXCVMAC, "HasVendorXCVmac" },
{ RISCV_FEATURE_HASVENDORXCVMEM, "HasVendorXCVmem" },
{ RISCV_FEATURE_HASVENDORXCVALU, "HasVendorXCValu" },
{ RISCV_FEATURE_HASVENDORXCVSIMD, "HasVendorXCVsimd" },
{ RISCV_FEATURE_HASVENDORXCVBI, "HasVendorXCVbi" },
{ RISCV_FEATURE_ISRV64, "IsRV64" },
{ RISCV_FEATURE_ISRV32, "IsRV32" },
{ RISCV_FEATURE_ISRVE, "IsRVE" },

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,26 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2024 */
/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Do not edit. */
/* Capstone's LLVM TableGen Backends: */
/* https://github.com/capstone-engine/llvm-capstone */
RISCV_OP_GROUP_Operand = 0,
RISCV_OP_GROUP_BranchOperand = 1,
RISCV_OP_GROUP_VMaskReg = 2,
RISCV_OP_GROUP_VTypeI = 3,
RISCV_OP_GROUP_ZeroOffsetMemOp = 4,
RISCV_OP_GROUP_Rlist = 5,
RISCV_OP_GROUP_Spimm = 6,
RISCV_OP_GROUP_CSRSystemRegister = 7,
RISCV_OP_GROUP_RegReg = 8,
RISCV_OP_GROUP_FRMArg = 9,
RISCV_OP_GROUP_FRMArgLegacy = 10,
RISCV_OP_GROUP_FenceArg = 11,
RISCV_OP_GROUP_FPImmOperand = 12,

View file

@ -0,0 +1,473 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2024 */
/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Do not edit. */
/* Capstone's LLVM TableGen Backends: */
/* https://github.com/capstone-engine/llvm-capstone */
RISCV_REG_INVALID = 0,
RISCV_REG_FFLAGS = 1,
RISCV_REG_FRM = 2,
RISCV_REG_SSP = 3,
RISCV_REG_VL = 4,
RISCV_REG_VLENB = 5,
RISCV_REG_VTYPE = 6,
RISCV_REG_VXRM = 7,
RISCV_REG_VXSAT = 8,
RISCV_REG_DUMMY_REG_PAIR_WITH_X0 = 9,
RISCV_REG_V0 = 10,
RISCV_REG_V1 = 11,
RISCV_REG_V2 = 12,
RISCV_REG_V3 = 13,
RISCV_REG_V4 = 14,
RISCV_REG_V5 = 15,
RISCV_REG_V6 = 16,
RISCV_REG_V7 = 17,
RISCV_REG_V8 = 18,
RISCV_REG_V9 = 19,
RISCV_REG_V10 = 20,
RISCV_REG_V11 = 21,
RISCV_REG_V12 = 22,
RISCV_REG_V13 = 23,
RISCV_REG_V14 = 24,
RISCV_REG_V15 = 25,
RISCV_REG_V16 = 26,
RISCV_REG_V17 = 27,
RISCV_REG_V18 = 28,
RISCV_REG_V19 = 29,
RISCV_REG_V20 = 30,
RISCV_REG_V21 = 31,
RISCV_REG_V22 = 32,
RISCV_REG_V23 = 33,
RISCV_REG_V24 = 34,
RISCV_REG_V25 = 35,
RISCV_REG_V26 = 36,
RISCV_REG_V27 = 37,
RISCV_REG_V28 = 38,
RISCV_REG_V29 = 39,
RISCV_REG_V30 = 40,
RISCV_REG_V31 = 41,
RISCV_REG_X0 = 42,
RISCV_REG_X1 = 43,
RISCV_REG_X2 = 44,
RISCV_REG_X3 = 45,
RISCV_REG_X4 = 46,
RISCV_REG_X5 = 47,
RISCV_REG_X6 = 48,
RISCV_REG_X7 = 49,
RISCV_REG_X8 = 50,
RISCV_REG_X9 = 51,
RISCV_REG_X10 = 52,
RISCV_REG_X11 = 53,
RISCV_REG_X12 = 54,
RISCV_REG_X13 = 55,
RISCV_REG_X14 = 56,
RISCV_REG_X15 = 57,
RISCV_REG_X16 = 58,
RISCV_REG_X17 = 59,
RISCV_REG_X18 = 60,
RISCV_REG_X19 = 61,
RISCV_REG_X20 = 62,
RISCV_REG_X21 = 63,
RISCV_REG_X22 = 64,
RISCV_REG_X23 = 65,
RISCV_REG_X24 = 66,
RISCV_REG_X25 = 67,
RISCV_REG_X26 = 68,
RISCV_REG_X27 = 69,
RISCV_REG_X28 = 70,
RISCV_REG_X29 = 71,
RISCV_REG_X30 = 72,
RISCV_REG_X31 = 73,
RISCV_REG_F0_D = 74,
RISCV_REG_F1_D = 75,
RISCV_REG_F2_D = 76,
RISCV_REG_F3_D = 77,
RISCV_REG_F4_D = 78,
RISCV_REG_F5_D = 79,
RISCV_REG_F6_D = 80,
RISCV_REG_F7_D = 81,
RISCV_REG_F8_D = 82,
RISCV_REG_F9_D = 83,
RISCV_REG_F10_D = 84,
RISCV_REG_F11_D = 85,
RISCV_REG_F12_D = 86,
RISCV_REG_F13_D = 87,
RISCV_REG_F14_D = 88,
RISCV_REG_F15_D = 89,
RISCV_REG_F16_D = 90,
RISCV_REG_F17_D = 91,
RISCV_REG_F18_D = 92,
RISCV_REG_F19_D = 93,
RISCV_REG_F20_D = 94,
RISCV_REG_F21_D = 95,
RISCV_REG_F22_D = 96,
RISCV_REG_F23_D = 97,
RISCV_REG_F24_D = 98,
RISCV_REG_F25_D = 99,
RISCV_REG_F26_D = 100,
RISCV_REG_F27_D = 101,
RISCV_REG_F28_D = 102,
RISCV_REG_F29_D = 103,
RISCV_REG_F30_D = 104,
RISCV_REG_F31_D = 105,
RISCV_REG_F0_F = 106,
RISCV_REG_F1_F = 107,
RISCV_REG_F2_F = 108,
RISCV_REG_F3_F = 109,
RISCV_REG_F4_F = 110,
RISCV_REG_F5_F = 111,
RISCV_REG_F6_F = 112,
RISCV_REG_F7_F = 113,
RISCV_REG_F8_F = 114,
RISCV_REG_F9_F = 115,
RISCV_REG_F10_F = 116,
RISCV_REG_F11_F = 117,
RISCV_REG_F12_F = 118,
RISCV_REG_F13_F = 119,
RISCV_REG_F14_F = 120,
RISCV_REG_F15_F = 121,
RISCV_REG_F16_F = 122,
RISCV_REG_F17_F = 123,
RISCV_REG_F18_F = 124,
RISCV_REG_F19_F = 125,
RISCV_REG_F20_F = 126,
RISCV_REG_F21_F = 127,
RISCV_REG_F22_F = 128,
RISCV_REG_F23_F = 129,
RISCV_REG_F24_F = 130,
RISCV_REG_F25_F = 131,
RISCV_REG_F26_F = 132,
RISCV_REG_F27_F = 133,
RISCV_REG_F28_F = 134,
RISCV_REG_F29_F = 135,
RISCV_REG_F30_F = 136,
RISCV_REG_F31_F = 137,
RISCV_REG_F0_H = 138,
RISCV_REG_F1_H = 139,
RISCV_REG_F2_H = 140,
RISCV_REG_F3_H = 141,
RISCV_REG_F4_H = 142,
RISCV_REG_F5_H = 143,
RISCV_REG_F6_H = 144,
RISCV_REG_F7_H = 145,
RISCV_REG_F8_H = 146,
RISCV_REG_F9_H = 147,
RISCV_REG_F10_H = 148,
RISCV_REG_F11_H = 149,
RISCV_REG_F12_H = 150,
RISCV_REG_F13_H = 151,
RISCV_REG_F14_H = 152,
RISCV_REG_F15_H = 153,
RISCV_REG_F16_H = 154,
RISCV_REG_F17_H = 155,
RISCV_REG_F18_H = 156,
RISCV_REG_F19_H = 157,
RISCV_REG_F20_H = 158,
RISCV_REG_F21_H = 159,
RISCV_REG_F22_H = 160,
RISCV_REG_F23_H = 161,
RISCV_REG_F24_H = 162,
RISCV_REG_F25_H = 163,
RISCV_REG_F26_H = 164,
RISCV_REG_F27_H = 165,
RISCV_REG_F28_H = 166,
RISCV_REG_F29_H = 167,
RISCV_REG_F30_H = 168,
RISCV_REG_F31_H = 169,
RISCV_REG_X0_PAIR = 170,
RISCV_REG_V0M2 = 171,
RISCV_REG_V0M4 = 172,
RISCV_REG_V0M8 = 173,
RISCV_REG_V2M2 = 174,
RISCV_REG_V4M2 = 175,
RISCV_REG_V4M4 = 176,
RISCV_REG_V6M2 = 177,
RISCV_REG_V8M2 = 178,
RISCV_REG_V8M4 = 179,
RISCV_REG_V8M8 = 180,
RISCV_REG_V10M2 = 181,
RISCV_REG_V12M2 = 182,
RISCV_REG_V12M4 = 183,
RISCV_REG_V14M2 = 184,
RISCV_REG_V16M2 = 185,
RISCV_REG_V16M4 = 186,
RISCV_REG_V16M8 = 187,
RISCV_REG_V18M2 = 188,
RISCV_REG_V20M2 = 189,
RISCV_REG_V20M4 = 190,
RISCV_REG_V22M2 = 191,
RISCV_REG_V24M2 = 192,
RISCV_REG_V24M4 = 193,
RISCV_REG_V24M8 = 194,
RISCV_REG_V26M2 = 195,
RISCV_REG_V28M2 = 196,
RISCV_REG_V28M4 = 197,
RISCV_REG_V30M2 = 198,
RISCV_REG_X2_X3 = 199,
RISCV_REG_X4_X5 = 200,
RISCV_REG_X6_X7 = 201,
RISCV_REG_X8_X9 = 202,
RISCV_REG_X10_X11 = 203,
RISCV_REG_X12_X13 = 204,
RISCV_REG_X14_X15 = 205,
RISCV_REG_X16_X17 = 206,
RISCV_REG_X18_X19 = 207,
RISCV_REG_X20_X21 = 208,
RISCV_REG_X22_X23 = 209,
RISCV_REG_X24_X25 = 210,
RISCV_REG_X26_X27 = 211,
RISCV_REG_X28_X29 = 212,
RISCV_REG_X30_X31 = 213,
RISCV_REG_V1_V2 = 214,
RISCV_REG_V2_V3 = 215,
RISCV_REG_V3_V4 = 216,
RISCV_REG_V4_V5 = 217,
RISCV_REG_V5_V6 = 218,
RISCV_REG_V6_V7 = 219,
RISCV_REG_V7_V8 = 220,
RISCV_REG_V8_V9 = 221,
RISCV_REG_V9_V10 = 222,
RISCV_REG_V10_V11 = 223,
RISCV_REG_V11_V12 = 224,
RISCV_REG_V12_V13 = 225,
RISCV_REG_V13_V14 = 226,
RISCV_REG_V14_V15 = 227,
RISCV_REG_V15_V16 = 228,
RISCV_REG_V16_V17 = 229,
RISCV_REG_V17_V18 = 230,
RISCV_REG_V18_V19 = 231,
RISCV_REG_V19_V20 = 232,
RISCV_REG_V20_V21 = 233,
RISCV_REG_V21_V22 = 234,
RISCV_REG_V22_V23 = 235,
RISCV_REG_V23_V24 = 236,
RISCV_REG_V24_V25 = 237,
RISCV_REG_V25_V26 = 238,
RISCV_REG_V26_V27 = 239,
RISCV_REG_V27_V28 = 240,
RISCV_REG_V28_V29 = 241,
RISCV_REG_V29_V30 = 242,
RISCV_REG_V30_V31 = 243,
RISCV_REG_V0_V1 = 244,
RISCV_REG_V2M2_V4M2 = 245,
RISCV_REG_V4M2_V6M2 = 246,
RISCV_REG_V6M2_V8M2 = 247,
RISCV_REG_V8M2_V10M2 = 248,
RISCV_REG_V10M2_V12M2 = 249,
RISCV_REG_V12M2_V14M2 = 250,
RISCV_REG_V14M2_V16M2 = 251,
RISCV_REG_V16M2_V18M2 = 252,
RISCV_REG_V18M2_V20M2 = 253,
RISCV_REG_V20M2_V22M2 = 254,
RISCV_REG_V22M2_V24M2 = 255,
RISCV_REG_V24M2_V26M2 = 256,
RISCV_REG_V26M2_V28M2 = 257,
RISCV_REG_V28M2_V30M2 = 258,
RISCV_REG_V0M2_V2M2 = 259,
RISCV_REG_V4M4_V8M4 = 260,
RISCV_REG_V8M4_V12M4 = 261,
RISCV_REG_V12M4_V16M4 = 262,
RISCV_REG_V16M4_V20M4 = 263,
RISCV_REG_V20M4_V24M4 = 264,
RISCV_REG_V24M4_V28M4 = 265,
RISCV_REG_V0M4_V4M4 = 266,
RISCV_REG_V1_V2_V3 = 267,
RISCV_REG_V2_V3_V4 = 268,
RISCV_REG_V3_V4_V5 = 269,
RISCV_REG_V4_V5_V6 = 270,
RISCV_REG_V5_V6_V7 = 271,
RISCV_REG_V6_V7_V8 = 272,
RISCV_REG_V7_V8_V9 = 273,
RISCV_REG_V8_V9_V10 = 274,
RISCV_REG_V9_V10_V11 = 275,
RISCV_REG_V10_V11_V12 = 276,
RISCV_REG_V11_V12_V13 = 277,
RISCV_REG_V12_V13_V14 = 278,
RISCV_REG_V13_V14_V15 = 279,
RISCV_REG_V14_V15_V16 = 280,
RISCV_REG_V15_V16_V17 = 281,
RISCV_REG_V16_V17_V18 = 282,
RISCV_REG_V17_V18_V19 = 283,
RISCV_REG_V18_V19_V20 = 284,
RISCV_REG_V19_V20_V21 = 285,
RISCV_REG_V20_V21_V22 = 286,
RISCV_REG_V21_V22_V23 = 287,
RISCV_REG_V22_V23_V24 = 288,
RISCV_REG_V23_V24_V25 = 289,
RISCV_REG_V24_V25_V26 = 290,
RISCV_REG_V25_V26_V27 = 291,
RISCV_REG_V26_V27_V28 = 292,
RISCV_REG_V27_V28_V29 = 293,
RISCV_REG_V28_V29_V30 = 294,
RISCV_REG_V29_V30_V31 = 295,
RISCV_REG_V0_V1_V2 = 296,
RISCV_REG_V2M2_V4M2_V6M2 = 297,
RISCV_REG_V4M2_V6M2_V8M2 = 298,
RISCV_REG_V6M2_V8M2_V10M2 = 299,
RISCV_REG_V8M2_V10M2_V12M2 = 300,
RISCV_REG_V10M2_V12M2_V14M2 = 301,
RISCV_REG_V12M2_V14M2_V16M2 = 302,
RISCV_REG_V14M2_V16M2_V18M2 = 303,
RISCV_REG_V16M2_V18M2_V20M2 = 304,
RISCV_REG_V18M2_V20M2_V22M2 = 305,
RISCV_REG_V20M2_V22M2_V24M2 = 306,
RISCV_REG_V22M2_V24M2_V26M2 = 307,
RISCV_REG_V24M2_V26M2_V28M2 = 308,
RISCV_REG_V26M2_V28M2_V30M2 = 309,
RISCV_REG_V0M2_V2M2_V4M2 = 310,
RISCV_REG_V1_V2_V3_V4 = 311,
RISCV_REG_V2_V3_V4_V5 = 312,
RISCV_REG_V3_V4_V5_V6 = 313,
RISCV_REG_V4_V5_V6_V7 = 314,
RISCV_REG_V5_V6_V7_V8 = 315,
RISCV_REG_V6_V7_V8_V9 = 316,
RISCV_REG_V7_V8_V9_V10 = 317,
RISCV_REG_V8_V9_V10_V11 = 318,
RISCV_REG_V9_V10_V11_V12 = 319,
RISCV_REG_V10_V11_V12_V13 = 320,
RISCV_REG_V11_V12_V13_V14 = 321,
RISCV_REG_V12_V13_V14_V15 = 322,
RISCV_REG_V13_V14_V15_V16 = 323,
RISCV_REG_V14_V15_V16_V17 = 324,
RISCV_REG_V15_V16_V17_V18 = 325,
RISCV_REG_V16_V17_V18_V19 = 326,
RISCV_REG_V17_V18_V19_V20 = 327,
RISCV_REG_V18_V19_V20_V21 = 328,
RISCV_REG_V19_V20_V21_V22 = 329,
RISCV_REG_V20_V21_V22_V23 = 330,
RISCV_REG_V21_V22_V23_V24 = 331,
RISCV_REG_V22_V23_V24_V25 = 332,
RISCV_REG_V23_V24_V25_V26 = 333,
RISCV_REG_V24_V25_V26_V27 = 334,
RISCV_REG_V25_V26_V27_V28 = 335,
RISCV_REG_V26_V27_V28_V29 = 336,
RISCV_REG_V27_V28_V29_V30 = 337,
RISCV_REG_V28_V29_V30_V31 = 338,
RISCV_REG_V0_V1_V2_V3 = 339,
RISCV_REG_V2M2_V4M2_V6M2_V8M2 = 340,
RISCV_REG_V4M2_V6M2_V8M2_V10M2 = 341,
RISCV_REG_V6M2_V8M2_V10M2_V12M2 = 342,
RISCV_REG_V8M2_V10M2_V12M2_V14M2 = 343,
RISCV_REG_V10M2_V12M2_V14M2_V16M2 = 344,
RISCV_REG_V12M2_V14M2_V16M2_V18M2 = 345,
RISCV_REG_V14M2_V16M2_V18M2_V20M2 = 346,
RISCV_REG_V16M2_V18M2_V20M2_V22M2 = 347,
RISCV_REG_V18M2_V20M2_V22M2_V24M2 = 348,
RISCV_REG_V20M2_V22M2_V24M2_V26M2 = 349,
RISCV_REG_V22M2_V24M2_V26M2_V28M2 = 350,
RISCV_REG_V24M2_V26M2_V28M2_V30M2 = 351,
RISCV_REG_V0M2_V2M2_V4M2_V6M2 = 352,
RISCV_REG_V1_V2_V3_V4_V5 = 353,
RISCV_REG_V2_V3_V4_V5_V6 = 354,
RISCV_REG_V3_V4_V5_V6_V7 = 355,
RISCV_REG_V4_V5_V6_V7_V8 = 356,
RISCV_REG_V5_V6_V7_V8_V9 = 357,
RISCV_REG_V6_V7_V8_V9_V10 = 358,
RISCV_REG_V7_V8_V9_V10_V11 = 359,
RISCV_REG_V8_V9_V10_V11_V12 = 360,
RISCV_REG_V9_V10_V11_V12_V13 = 361,
RISCV_REG_V10_V11_V12_V13_V14 = 362,
RISCV_REG_V11_V12_V13_V14_V15 = 363,
RISCV_REG_V12_V13_V14_V15_V16 = 364,
RISCV_REG_V13_V14_V15_V16_V17 = 365,
RISCV_REG_V14_V15_V16_V17_V18 = 366,
RISCV_REG_V15_V16_V17_V18_V19 = 367,
RISCV_REG_V16_V17_V18_V19_V20 = 368,
RISCV_REG_V17_V18_V19_V20_V21 = 369,
RISCV_REG_V18_V19_V20_V21_V22 = 370,
RISCV_REG_V19_V20_V21_V22_V23 = 371,
RISCV_REG_V20_V21_V22_V23_V24 = 372,
RISCV_REG_V21_V22_V23_V24_V25 = 373,
RISCV_REG_V22_V23_V24_V25_V26 = 374,
RISCV_REG_V23_V24_V25_V26_V27 = 375,
RISCV_REG_V24_V25_V26_V27_V28 = 376,
RISCV_REG_V25_V26_V27_V28_V29 = 377,
RISCV_REG_V26_V27_V28_V29_V30 = 378,
RISCV_REG_V27_V28_V29_V30_V31 = 379,
RISCV_REG_V0_V1_V2_V3_V4 = 380,
RISCV_REG_V1_V2_V3_V4_V5_V6 = 381,
RISCV_REG_V2_V3_V4_V5_V6_V7 = 382,
RISCV_REG_V3_V4_V5_V6_V7_V8 = 383,
RISCV_REG_V4_V5_V6_V7_V8_V9 = 384,
RISCV_REG_V5_V6_V7_V8_V9_V10 = 385,
RISCV_REG_V6_V7_V8_V9_V10_V11 = 386,
RISCV_REG_V7_V8_V9_V10_V11_V12 = 387,
RISCV_REG_V8_V9_V10_V11_V12_V13 = 388,
RISCV_REG_V9_V10_V11_V12_V13_V14 = 389,
RISCV_REG_V10_V11_V12_V13_V14_V15 = 390,
RISCV_REG_V11_V12_V13_V14_V15_V16 = 391,
RISCV_REG_V12_V13_V14_V15_V16_V17 = 392,
RISCV_REG_V13_V14_V15_V16_V17_V18 = 393,
RISCV_REG_V14_V15_V16_V17_V18_V19 = 394,
RISCV_REG_V15_V16_V17_V18_V19_V20 = 395,
RISCV_REG_V16_V17_V18_V19_V20_V21 = 396,
RISCV_REG_V17_V18_V19_V20_V21_V22 = 397,
RISCV_REG_V18_V19_V20_V21_V22_V23 = 398,
RISCV_REG_V19_V20_V21_V22_V23_V24 = 399,
RISCV_REG_V20_V21_V22_V23_V24_V25 = 400,
RISCV_REG_V21_V22_V23_V24_V25_V26 = 401,
RISCV_REG_V22_V23_V24_V25_V26_V27 = 402,
RISCV_REG_V23_V24_V25_V26_V27_V28 = 403,
RISCV_REG_V24_V25_V26_V27_V28_V29 = 404,
RISCV_REG_V25_V26_V27_V28_V29_V30 = 405,
RISCV_REG_V26_V27_V28_V29_V30_V31 = 406,
RISCV_REG_V0_V1_V2_V3_V4_V5 = 407,
RISCV_REG_V1_V2_V3_V4_V5_V6_V7 = 408,
RISCV_REG_V2_V3_V4_V5_V6_V7_V8 = 409,
RISCV_REG_V3_V4_V5_V6_V7_V8_V9 = 410,
RISCV_REG_V4_V5_V6_V7_V8_V9_V10 = 411,
RISCV_REG_V5_V6_V7_V8_V9_V10_V11 = 412,
RISCV_REG_V6_V7_V8_V9_V10_V11_V12 = 413,
RISCV_REG_V7_V8_V9_V10_V11_V12_V13 = 414,
RISCV_REG_V8_V9_V10_V11_V12_V13_V14 = 415,
RISCV_REG_V9_V10_V11_V12_V13_V14_V15 = 416,
RISCV_REG_V10_V11_V12_V13_V14_V15_V16 = 417,
RISCV_REG_V11_V12_V13_V14_V15_V16_V17 = 418,
RISCV_REG_V12_V13_V14_V15_V16_V17_V18 = 419,
RISCV_REG_V13_V14_V15_V16_V17_V18_V19 = 420,
RISCV_REG_V14_V15_V16_V17_V18_V19_V20 = 421,
RISCV_REG_V15_V16_V17_V18_V19_V20_V21 = 422,
RISCV_REG_V16_V17_V18_V19_V20_V21_V22 = 423,
RISCV_REG_V17_V18_V19_V20_V21_V22_V23 = 424,
RISCV_REG_V18_V19_V20_V21_V22_V23_V24 = 425,
RISCV_REG_V19_V20_V21_V22_V23_V24_V25 = 426,
RISCV_REG_V20_V21_V22_V23_V24_V25_V26 = 427,
RISCV_REG_V21_V22_V23_V24_V25_V26_V27 = 428,
RISCV_REG_V22_V23_V24_V25_V26_V27_V28 = 429,
RISCV_REG_V23_V24_V25_V26_V27_V28_V29 = 430,
RISCV_REG_V24_V25_V26_V27_V28_V29_V30 = 431,
RISCV_REG_V25_V26_V27_V28_V29_V30_V31 = 432,
RISCV_REG_V0_V1_V2_V3_V4_V5_V6 = 433,
RISCV_REG_V1_V2_V3_V4_V5_V6_V7_V8 = 434,
RISCV_REG_V2_V3_V4_V5_V6_V7_V8_V9 = 435,
RISCV_REG_V3_V4_V5_V6_V7_V8_V9_V10 = 436,
RISCV_REG_V4_V5_V6_V7_V8_V9_V10_V11 = 437,
RISCV_REG_V5_V6_V7_V8_V9_V10_V11_V12 = 438,
RISCV_REG_V6_V7_V8_V9_V10_V11_V12_V13 = 439,
RISCV_REG_V7_V8_V9_V10_V11_V12_V13_V14 = 440,
RISCV_REG_V8_V9_V10_V11_V12_V13_V14_V15 = 441,
RISCV_REG_V9_V10_V11_V12_V13_V14_V15_V16 = 442,
RISCV_REG_V10_V11_V12_V13_V14_V15_V16_V17 = 443,
RISCV_REG_V11_V12_V13_V14_V15_V16_V17_V18 = 444,
RISCV_REG_V12_V13_V14_V15_V16_V17_V18_V19 = 445,
RISCV_REG_V13_V14_V15_V16_V17_V18_V19_V20 = 446,
RISCV_REG_V14_V15_V16_V17_V18_V19_V20_V21 = 447,
RISCV_REG_V15_V16_V17_V18_V19_V20_V21_V22 = 448,
RISCV_REG_V16_V17_V18_V19_V20_V21_V22_V23 = 449,
RISCV_REG_V17_V18_V19_V20_V21_V22_V23_V24 = 450,
RISCV_REG_V18_V19_V20_V21_V22_V23_V24_V25 = 451,
RISCV_REG_V19_V20_V21_V22_V23_V24_V25_V26 = 452,
RISCV_REG_V20_V21_V22_V23_V24_V25_V26_V27 = 453,
RISCV_REG_V21_V22_V23_V24_V25_V26_V27_V28 = 454,
RISCV_REG_V22_V23_V24_V25_V26_V27_V28_V29 = 455,
RISCV_REG_V23_V24_V25_V26_V27_V28_V29_V30 = 456,
RISCV_REG_V24_V25_V26_V27_V28_V29_V30_V31 = 457,
RISCV_REG_V0_V1_V2_V3_V4_V5_V6_V7 = 458,
RISCV_REG_ENDING, // 459

View file

@ -0,0 +1,510 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2024 */
/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Do not edit. */
/* Capstone's LLVM TableGen Backends: */
/* https://github.com/capstone-engine/llvm-capstone */
#ifdef GET_ENUM_VALUES_RISCVMaskedPseudoInfo
#undef GET_ENUM_VALUES_RISCVMaskedPseudoInfo
#endif
#ifdef GET_ENUM_VALUES_RISCVOpcode
#undef GET_ENUM_VALUES_RISCVOpcode
RISCV_RISCVOPCODE_LOAD = 0x3,
RISCV_RISCVOPCODE_LOAD_FP = 0x7,
RISCV_RISCVOPCODE_CUSTOM_0 = 0xb,
RISCV_RISCVOPCODE_MISC_MEM = 0xf,
RISCV_RISCVOPCODE_OP_IMM = 0x13,
RISCV_RISCVOPCODE_AUIPC = 0x17,
RISCV_RISCVOPCODE_OP_IMM_32 = 0x1b,
RISCV_RISCVOPCODE_STORE = 0x23,
RISCV_RISCVOPCODE_STORE_FP = 0x27,
RISCV_RISCVOPCODE_CUSTOM_1 = 0x2b,
RISCV_RISCVOPCODE_AMO = 0x2f,
RISCV_RISCVOPCODE_OP = 0x33,
RISCV_RISCVOPCODE_LUI = 0x37,
RISCV_RISCVOPCODE_OP_32 = 0x3b,
RISCV_RISCVOPCODE_MADD = 0x43,
RISCV_RISCVOPCODE_MSUB = 0x47,
RISCV_RISCVOPCODE_NMSUB = 0x4b,
RISCV_RISCVOPCODE_NMADD = 0x4f,
RISCV_RISCVOPCODE_OP_FP = 0x53,
RISCV_RISCVOPCODE_OP_V = 0x57,
RISCV_RISCVOPCODE_CUSTOM_2 = 0x5b,
RISCV_RISCVOPCODE_BRANCH = 0x63,
RISCV_RISCVOPCODE_JALR = 0x67,
RISCV_RISCVOPCODE_JAL = 0x6f,
RISCV_RISCVOPCODE_SYSTEM = 0x73,
RISCV_RISCVOPCODE_OP_P = 0x77,
RISCV_RISCVOPCODE_CUSTOM_3 = 0x7b,
#endif
#ifdef GET_ENUM_VALUES_RISCVTuneInfo
#undef GET_ENUM_VALUES_RISCVTuneInfo
RISCV_RISCVTUNEINFO_GENERIC = 0x0,
RISCV_RISCVTUNEINFO_GENERIC-RV32 = 0x0,
RISCV_RISCVTUNEINFO_GENERIC-RV64 = 0x0,
#endif
#ifdef GET_ENUM_VALUES_RISCVVIntrinsicInfo
#undef GET_ENUM_VALUES_RISCVVIntrinsicInfo
#endif
#ifdef GET_ENUM_VALUES_PseudoInfo
#undef GET_ENUM_VALUES_PseudoInfo
#endif
#ifdef GET_ENUM_VALUES_VLEPseudo
#undef GET_ENUM_VALUES_VLEPseudo
#endif
#ifdef GET_ENUM_VALUES_VLSEGPseudo
#undef GET_ENUM_VALUES_VLSEGPseudo
#endif
#ifdef GET_ENUM_VALUES_VLXSEGPseudo
#undef GET_ENUM_VALUES_VLXSEGPseudo
#endif
#ifdef GET_ENUM_VALUES_VLX_VSXPseudo
#undef GET_ENUM_VALUES_VLX_VSXPseudo
#endif
#ifdef GET_ENUM_VALUES_PseudoInfo
#undef GET_ENUM_VALUES_PseudoInfo
#endif
#ifdef GET_ENUM_VALUES_VSEPseudo
#undef GET_ENUM_VALUES_VSEPseudo
#endif
#ifdef GET_ENUM_VALUES_VSSEGPseudo
#undef GET_ENUM_VALUES_VSSEGPseudo
#endif
#ifdef GET_ENUM_VALUES_VSXSEGPseudo
#undef GET_ENUM_VALUES_VSXSEGPseudo
#endif
#ifdef GET_ENUM_VALUES_VLX_VSXPseudo
#undef GET_ENUM_VALUES_VLX_VSXPseudo
#endif
#ifdef GET_ENUM_VALUES_SysReg
#undef GET_ENUM_VALUES_SysReg
RISCV_SYSREG_FFLAGS = 0x1,
RISCV_SYSREG_FRM = 0x2,
RISCV_SYSREG_FCSR = 0x3,
RISCV_SYSREG_VSTART = 0x8,
RISCV_SYSREG_VXSAT = 0x9,
RISCV_SYSREG_VXRM = 0xa,
RISCV_SYSREG_VCSR = 0xf,
RISCV_SYSREG_SEED = 0x15,
RISCV_SYSREG_JVT = 0x17,
RISCV_SYSREG_SSTATUS = 0x100,
RISCV_SYSREG_SIE = 0x104,
RISCV_SYSREG_STVEC = 0x105,
RISCV_SYSREG_SCOUNTEREN = 0x106,
RISCV_SYSREG_SENVCFG = 0x10a,
RISCV_SYSREG_SSTATEEN0 = 0x10c,
RISCV_SYSREG_SSTATEEN1 = 0x10d,
RISCV_SYSREG_SSTATEEN2 = 0x10e,
RISCV_SYSREG_SSTATEEN3 = 0x10f,
RISCV_SYSREG_SIEH = 0x114,
RISCV_SYSREG_SSCRATCH = 0x140,
RISCV_SYSREG_SEPC = 0x141,
RISCV_SYSREG_SCAUSE = 0x142,
RISCV_SYSREG_STVAL = 0x143,
RISCV_SYSREG_SIP = 0x144,
RISCV_SYSREG_STIMECMP = 0x14d,
RISCV_SYSREG_SISELECT = 0x150,
RISCV_SYSREG_SIREG = 0x151,
RISCV_SYSREG_SIPH = 0x154,
RISCV_SYSREG_STOPEI = 0x15c,
RISCV_SYSREG_STIMECMPH = 0x15d,
RISCV_SYSREG_SATP = 0x180,
RISCV_SYSREG_VSSTATUS = 0x200,
RISCV_SYSREG_VSIE = 0x204,
RISCV_SYSREG_VSTVEC = 0x205,
RISCV_SYSREG_VSIEH = 0x214,
RISCV_SYSREG_VSSCRATCH = 0x240,
RISCV_SYSREG_VSEPC = 0x241,
RISCV_SYSREG_VSCAUSE = 0x242,
RISCV_SYSREG_VSTVAL = 0x243,
RISCV_SYSREG_VSIP = 0x244,
RISCV_SYSREG_VSTIMECMP = 0x24d,
RISCV_SYSREG_VSISELECT = 0x250,
RISCV_SYSREG_VSIREG = 0x251,
RISCV_SYSREG_VSIPH = 0x254,
RISCV_SYSREG_VSTOPEI = 0x25c,
RISCV_SYSREG_VSTIMECMPH = 0x25d,
RISCV_SYSREG_VSATP = 0x280,
RISCV_SYSREG_MSTATUS = 0x300,
RISCV_SYSREG_MISA = 0x301,
RISCV_SYSREG_MEDELEG = 0x302,
RISCV_SYSREG_MIDELEG = 0x303,
RISCV_SYSREG_MIE = 0x304,
RISCV_SYSREG_MTVEC = 0x305,
RISCV_SYSREG_MCOUNTEREN = 0x306,
RISCV_SYSREG_MVIEN = 0x308,
RISCV_SYSREG_MVIP = 0x309,
RISCV_SYSREG_MENVCFG = 0x30a,
RISCV_SYSREG_MSTATEEN0 = 0x30c,
RISCV_SYSREG_MSTATEEN1 = 0x30d,
RISCV_SYSREG_MSTATEEN2 = 0x30e,
RISCV_SYSREG_MSTATEEN3 = 0x30f,
RISCV_SYSREG_MSTATUSH = 0x310,
RISCV_SYSREG_MIDELEGH = 0x313,
RISCV_SYSREG_MIEH = 0x314,
RISCV_SYSREG_MVIENH = 0x318,
RISCV_SYSREG_MVIPH = 0x319,
RISCV_SYSREG_MENVCFGH = 0x31a,
RISCV_SYSREG_MSTATEEN0H = 0x31c,
RISCV_SYSREG_MSTATEEN1H = 0x31d,
RISCV_SYSREG_MSTATEEN2H = 0x31e,
RISCV_SYSREG_MSTATEEN3H = 0x31f,
RISCV_SYSREG_MCOUNTINHIBIT = 0x320,
RISCV_SYSREG_MUCOUNTEREN = 0x320,
RISCV_SYSREG_MHPMEVENT3 = 0x323,
RISCV_SYSREG_MHPMEVENT4 = 0x324,
RISCV_SYSREG_MHPMEVENT5 = 0x325,
RISCV_SYSREG_MHPMEVENT6 = 0x326,
RISCV_SYSREG_MHPMEVENT7 = 0x327,
RISCV_SYSREG_MHPMEVENT8 = 0x328,
RISCV_SYSREG_MHPMEVENT9 = 0x329,
RISCV_SYSREG_MHPMEVENT10 = 0x32a,
RISCV_SYSREG_MHPMEVENT11 = 0x32b,
RISCV_SYSREG_MHPMEVENT12 = 0x32c,
RISCV_SYSREG_MHPMEVENT13 = 0x32d,
RISCV_SYSREG_MHPMEVENT14 = 0x32e,
RISCV_SYSREG_MHPMEVENT15 = 0x32f,
RISCV_SYSREG_MHPMEVENT16 = 0x330,
RISCV_SYSREG_MHPMEVENT17 = 0x331,
RISCV_SYSREG_MHPMEVENT18 = 0x332,
RISCV_SYSREG_MHPMEVENT19 = 0x333,
RISCV_SYSREG_MHPMEVENT20 = 0x334,
RISCV_SYSREG_MHPMEVENT21 = 0x335,
RISCV_SYSREG_MHPMEVENT22 = 0x336,
RISCV_SYSREG_MHPMEVENT23 = 0x337,
RISCV_SYSREG_MHPMEVENT24 = 0x338,
RISCV_SYSREG_MHPMEVENT25 = 0x339,
RISCV_SYSREG_MHPMEVENT26 = 0x33a,
RISCV_SYSREG_MHPMEVENT27 = 0x33b,
RISCV_SYSREG_MHPMEVENT28 = 0x33c,
RISCV_SYSREG_MHPMEVENT29 = 0x33d,
RISCV_SYSREG_MHPMEVENT30 = 0x33e,
RISCV_SYSREG_MHPMEVENT31 = 0x33f,
RISCV_SYSREG_MSCRATCH = 0x340,
RISCV_SYSREG_MEPC = 0x341,
RISCV_SYSREG_MCAUSE = 0x342,
RISCV_SYSREG_MTVAL = 0x343,
RISCV_SYSREG_MIP = 0x344,
RISCV_SYSREG_MTINST = 0x34a,
RISCV_SYSREG_MTVAL2 = 0x34b,
RISCV_SYSREG_MISELECT = 0x350,
RISCV_SYSREG_MIREG = 0x351,
RISCV_SYSREG_MIPH = 0x354,
RISCV_SYSREG_MTOPEI = 0x35c,
RISCV_SYSREG_PMPCFG0 = 0x3a0,
RISCV_SYSREG_PMPCFG1 = 0x3a1,
RISCV_SYSREG_PMPCFG2 = 0x3a2,
RISCV_SYSREG_PMPCFG3 = 0x3a3,
RISCV_SYSREG_PMPCFG4 = 0x3a4,
RISCV_SYSREG_PMPCFG5 = 0x3a5,
RISCV_SYSREG_PMPCFG6 = 0x3a6,
RISCV_SYSREG_PMPCFG7 = 0x3a7,
RISCV_SYSREG_PMPCFG8 = 0x3a8,
RISCV_SYSREG_PMPCFG9 = 0x3a9,
RISCV_SYSREG_PMPCFG10 = 0x3aa,
RISCV_SYSREG_PMPCFG11 = 0x3ab,
RISCV_SYSREG_PMPCFG12 = 0x3ac,
RISCV_SYSREG_PMPCFG13 = 0x3ad,
RISCV_SYSREG_PMPCFG14 = 0x3ae,
RISCV_SYSREG_PMPCFG15 = 0x3af,
RISCV_SYSREG_PMPADDR0 = 0x3b0,
RISCV_SYSREG_PMPADDR1 = 0x3b1,
RISCV_SYSREG_PMPADDR2 = 0x3b2,
RISCV_SYSREG_PMPADDR3 = 0x3b3,
RISCV_SYSREG_PMPADDR4 = 0x3b4,
RISCV_SYSREG_PMPADDR5 = 0x3b5,
RISCV_SYSREG_PMPADDR6 = 0x3b6,
RISCV_SYSREG_PMPADDR7 = 0x3b7,
RISCV_SYSREG_PMPADDR8 = 0x3b8,
RISCV_SYSREG_PMPADDR9 = 0x3b9,
RISCV_SYSREG_PMPADDR10 = 0x3ba,
RISCV_SYSREG_PMPADDR11 = 0x3bb,
RISCV_SYSREG_PMPADDR12 = 0x3bc,
RISCV_SYSREG_PMPADDR13 = 0x3bd,
RISCV_SYSREG_PMPADDR14 = 0x3be,
RISCV_SYSREG_PMPADDR15 = 0x3bf,
RISCV_SYSREG_PMPADDR16 = 0x3c0,
RISCV_SYSREG_PMPADDR17 = 0x3c1,
RISCV_SYSREG_PMPADDR18 = 0x3c2,
RISCV_SYSREG_PMPADDR19 = 0x3c3,
RISCV_SYSREG_PMPADDR20 = 0x3c4,
RISCV_SYSREG_PMPADDR21 = 0x3c5,
RISCV_SYSREG_PMPADDR22 = 0x3c6,
RISCV_SYSREG_PMPADDR23 = 0x3c7,
RISCV_SYSREG_PMPADDR24 = 0x3c8,
RISCV_SYSREG_PMPADDR25 = 0x3c9,
RISCV_SYSREG_PMPADDR26 = 0x3ca,
RISCV_SYSREG_PMPADDR27 = 0x3cb,
RISCV_SYSREG_PMPADDR28 = 0x3cc,
RISCV_SYSREG_PMPADDR29 = 0x3cd,
RISCV_SYSREG_PMPADDR30 = 0x3ce,
RISCV_SYSREG_PMPADDR31 = 0x3cf,
RISCV_SYSREG_PMPADDR32 = 0x3d0,
RISCV_SYSREG_PMPADDR33 = 0x3d1,
RISCV_SYSREG_PMPADDR34 = 0x3d2,
RISCV_SYSREG_PMPADDR35 = 0x3d3,
RISCV_SYSREG_PMPADDR36 = 0x3d4,
RISCV_SYSREG_PMPADDR37 = 0x3d5,
RISCV_SYSREG_PMPADDR38 = 0x3d6,
RISCV_SYSREG_PMPADDR39 = 0x3d7,
RISCV_SYSREG_PMPADDR40 = 0x3d8,
RISCV_SYSREG_PMPADDR41 = 0x3d9,
RISCV_SYSREG_PMPADDR42 = 0x3da,
RISCV_SYSREG_PMPADDR43 = 0x3db,
RISCV_SYSREG_PMPADDR44 = 0x3dc,
RISCV_SYSREG_PMPADDR45 = 0x3dd,
RISCV_SYSREG_PMPADDR46 = 0x3de,
RISCV_SYSREG_PMPADDR47 = 0x3df,
RISCV_SYSREG_PMPADDR48 = 0x3e0,
RISCV_SYSREG_PMPADDR49 = 0x3e1,
RISCV_SYSREG_PMPADDR50 = 0x3e2,
RISCV_SYSREG_PMPADDR51 = 0x3e3,
RISCV_SYSREG_PMPADDR52 = 0x3e4,
RISCV_SYSREG_PMPADDR53 = 0x3e5,
RISCV_SYSREG_PMPADDR54 = 0x3e6,
RISCV_SYSREG_PMPADDR55 = 0x3e7,
RISCV_SYSREG_PMPADDR56 = 0x3e8,
RISCV_SYSREG_PMPADDR57 = 0x3e9,
RISCV_SYSREG_PMPADDR58 = 0x3ea,
RISCV_SYSREG_PMPADDR59 = 0x3eb,
RISCV_SYSREG_PMPADDR60 = 0x3ec,
RISCV_SYSREG_PMPADDR61 = 0x3ed,
RISCV_SYSREG_PMPADDR62 = 0x3ee,
RISCV_SYSREG_PMPADDR63 = 0x3ef,
RISCV_SYSREG_SCONTEXT = 0x5a8,
RISCV_SYSREG_HSTATUS = 0x600,
RISCV_SYSREG_HEDELEG = 0x602,
RISCV_SYSREG_HIDELEG = 0x603,
RISCV_SYSREG_HIE = 0x604,
RISCV_SYSREG_HTIMEDELTA = 0x605,
RISCV_SYSREG_HCOUNTEREN = 0x606,
RISCV_SYSREG_HGEIE = 0x607,
RISCV_SYSREG_HVIEN = 0x608,
RISCV_SYSREG_HVICTL = 0x609,
RISCV_SYSREG_HENVCFG = 0x60a,
RISCV_SYSREG_HSTATEEN0 = 0x60c,
RISCV_SYSREG_HSTATEEN1 = 0x60d,
RISCV_SYSREG_HSTATEEN2 = 0x60e,
RISCV_SYSREG_HSTATEEN3 = 0x60f,
RISCV_SYSREG_HIDELEGH = 0x613,
RISCV_SYSREG_HTIMEDELTAH = 0x615,
RISCV_SYSREG_HVIENH = 0x618,
RISCV_SYSREG_HENVCFGH = 0x61a,
RISCV_SYSREG_HSTATEEN0H = 0x61c,
RISCV_SYSREG_HSTATEEN1H = 0x61d,
RISCV_SYSREG_HSTATEEN2H = 0x61e,
RISCV_SYSREG_HSTATEEN3H = 0x61f,
RISCV_SYSREG_HTVAL = 0x643,
RISCV_SYSREG_HIP = 0x644,
RISCV_SYSREG_HVIP = 0x645,
RISCV_SYSREG_HVIPRIO1 = 0x646,
RISCV_SYSREG_HVIPRIO2 = 0x647,
RISCV_SYSREG_HTINST = 0x64a,
RISCV_SYSREG_HVIPH = 0x655,
RISCV_SYSREG_HVIPRIO1H = 0x656,
RISCV_SYSREG_HVIPRIO2H = 0x657,
RISCV_SYSREG_HGATP = 0x680,
RISCV_SYSREG_HCONTEXT = 0x6a8,
RISCV_SYSREG_MHPMEVENT3H = 0x723,
RISCV_SYSREG_MHPMEVENT4H = 0x724,
RISCV_SYSREG_MHPMEVENT5H = 0x725,
RISCV_SYSREG_MHPMEVENT6H = 0x726,
RISCV_SYSREG_MHPMEVENT7H = 0x727,
RISCV_SYSREG_MHPMEVENT8H = 0x728,
RISCV_SYSREG_MHPMEVENT9H = 0x729,
RISCV_SYSREG_MHPMEVENT10H = 0x72a,
RISCV_SYSREG_MHPMEVENT11H = 0x72b,
RISCV_SYSREG_MHPMEVENT12H = 0x72c,
RISCV_SYSREG_MHPMEVENT13H = 0x72d,
RISCV_SYSREG_MHPMEVENT14H = 0x72e,
RISCV_SYSREG_MHPMEVENT15H = 0x72f,
RISCV_SYSREG_MHPMEVENT16H = 0x730,
RISCV_SYSREG_MHPMEVENT17H = 0x731,
RISCV_SYSREG_MHPMEVENT18H = 0x732,
RISCV_SYSREG_MHPMEVENT19H = 0x733,
RISCV_SYSREG_MHPMEVENT20H = 0x734,
RISCV_SYSREG_MHPMEVENT21H = 0x735,
RISCV_SYSREG_MHPMEVENT22H = 0x736,
RISCV_SYSREG_MHPMEVENT23H = 0x737,
RISCV_SYSREG_MHPMEVENT24H = 0x738,
RISCV_SYSREG_MHPMEVENT25H = 0x739,
RISCV_SYSREG_MHPMEVENT26H = 0x73a,
RISCV_SYSREG_MHPMEVENT27H = 0x73b,
RISCV_SYSREG_MHPMEVENT28H = 0x73c,
RISCV_SYSREG_MHPMEVENT29H = 0x73d,
RISCV_SYSREG_MHPMEVENT30H = 0x73e,
RISCV_SYSREG_MHPMEVENT31H = 0x73f,
RISCV_SYSREG_MSECCFG = 0x747,
RISCV_SYSREG_MSECCFGH = 0x757,
RISCV_SYSREG_TSELECT = 0x7a0,
RISCV_SYSREG_TDATA1 = 0x7a1,
RISCV_SYSREG_TDATA2 = 0x7a2,
RISCV_SYSREG_TDATA3 = 0x7a3,
RISCV_SYSREG_MCONTEXT = 0x7a8,
RISCV_SYSREG_DCSR = 0x7b0,
RISCV_SYSREG_DPC = 0x7b1,
RISCV_SYSREG_DSCRATCH0 = 0x7b2,
RISCV_SYSREG_DSCRATCH = 0x7b2,
RISCV_SYSREG_DSCRATCH1 = 0x7b3,
RISCV_SYSREG_MCYCLE = 0xb00,
RISCV_SYSREG_MINSTRET = 0xb02,
RISCV_SYSREG_MHPMCOUNTER3 = 0xb03,
RISCV_SYSREG_MHPMCOUNTER4 = 0xb04,
RISCV_SYSREG_MHPMCOUNTER5 = 0xb05,
RISCV_SYSREG_MHPMCOUNTER6 = 0xb06,
RISCV_SYSREG_MHPMCOUNTER7 = 0xb07,
RISCV_SYSREG_MHPMCOUNTER8 = 0xb08,
RISCV_SYSREG_MHPMCOUNTER9 = 0xb09,
RISCV_SYSREG_MHPMCOUNTER10 = 0xb0a,
RISCV_SYSREG_MHPMCOUNTER11 = 0xb0b,
RISCV_SYSREG_MHPMCOUNTER12 = 0xb0c,
RISCV_SYSREG_MHPMCOUNTER13 = 0xb0d,
RISCV_SYSREG_MHPMCOUNTER14 = 0xb0e,
RISCV_SYSREG_MHPMCOUNTER15 = 0xb0f,
RISCV_SYSREG_MHPMCOUNTER16 = 0xb10,
RISCV_SYSREG_MHPMCOUNTER17 = 0xb11,
RISCV_SYSREG_MHPMCOUNTER18 = 0xb12,
RISCV_SYSREG_MHPMCOUNTER19 = 0xb13,
RISCV_SYSREG_MHPMCOUNTER20 = 0xb14,
RISCV_SYSREG_MHPMCOUNTER21 = 0xb15,
RISCV_SYSREG_MHPMCOUNTER22 = 0xb16,
RISCV_SYSREG_MHPMCOUNTER23 = 0xb17,
RISCV_SYSREG_MHPMCOUNTER24 = 0xb18,
RISCV_SYSREG_MHPMCOUNTER25 = 0xb19,
RISCV_SYSREG_MHPMCOUNTER26 = 0xb1a,
RISCV_SYSREG_MHPMCOUNTER27 = 0xb1b,
RISCV_SYSREG_MHPMCOUNTER28 = 0xb1c,
RISCV_SYSREG_MHPMCOUNTER29 = 0xb1d,
RISCV_SYSREG_MHPMCOUNTER30 = 0xb1e,
RISCV_SYSREG_MHPMCOUNTER31 = 0xb1f,
RISCV_SYSREG_MCYCLEH = 0xb80,
RISCV_SYSREG_MINSTRETH = 0xb82,
RISCV_SYSREG_MHPMCOUNTER3H = 0xb83,
RISCV_SYSREG_MHPMCOUNTER4H = 0xb84,
RISCV_SYSREG_MHPMCOUNTER5H = 0xb85,
RISCV_SYSREG_MHPMCOUNTER6H = 0xb86,
RISCV_SYSREG_MHPMCOUNTER7H = 0xb87,
RISCV_SYSREG_MHPMCOUNTER8H = 0xb88,
RISCV_SYSREG_MHPMCOUNTER9H = 0xb89,
RISCV_SYSREG_MHPMCOUNTER10H = 0xb8a,
RISCV_SYSREG_MHPMCOUNTER11H = 0xb8b,
RISCV_SYSREG_MHPMCOUNTER12H = 0xb8c,
RISCV_SYSREG_MHPMCOUNTER13H = 0xb8d,
RISCV_SYSREG_MHPMCOUNTER14H = 0xb8e,
RISCV_SYSREG_MHPMCOUNTER15H = 0xb8f,
RISCV_SYSREG_MHPMCOUNTER16H = 0xb90,
RISCV_SYSREG_MHPMCOUNTER17H = 0xb91,
RISCV_SYSREG_MHPMCOUNTER18H = 0xb92,
RISCV_SYSREG_MHPMCOUNTER19H = 0xb93,
RISCV_SYSREG_MHPMCOUNTER20H = 0xb94,
RISCV_SYSREG_MHPMCOUNTER21H = 0xb95,
RISCV_SYSREG_MHPMCOUNTER22H = 0xb96,
RISCV_SYSREG_MHPMCOUNTER23H = 0xb97,
RISCV_SYSREG_MHPMCOUNTER24H = 0xb98,
RISCV_SYSREG_MHPMCOUNTER25H = 0xb99,
RISCV_SYSREG_MHPMCOUNTER26H = 0xb9a,
RISCV_SYSREG_MHPMCOUNTER27H = 0xb9b,
RISCV_SYSREG_MHPMCOUNTER28H = 0xb9c,
RISCV_SYSREG_MHPMCOUNTER29H = 0xb9d,
RISCV_SYSREG_MHPMCOUNTER30H = 0xb9e,
RISCV_SYSREG_MHPMCOUNTER31H = 0xb9f,
RISCV_SYSREG_CYCLE = 0xc00,
RISCV_SYSREG_TIME = 0xc01,
RISCV_SYSREG_INSTRET = 0xc02,
RISCV_SYSREG_HPMCOUNTER3 = 0xc03,
RISCV_SYSREG_HPMCOUNTER4 = 0xc04,
RISCV_SYSREG_HPMCOUNTER5 = 0xc05,
RISCV_SYSREG_HPMCOUNTER6 = 0xc06,
RISCV_SYSREG_HPMCOUNTER7 = 0xc07,
RISCV_SYSREG_HPMCOUNTER8 = 0xc08,
RISCV_SYSREG_HPMCOUNTER9 = 0xc09,
RISCV_SYSREG_HPMCOUNTER10 = 0xc0a,
RISCV_SYSREG_HPMCOUNTER11 = 0xc0b,
RISCV_SYSREG_HPMCOUNTER12 = 0xc0c,
RISCV_SYSREG_HPMCOUNTER13 = 0xc0d,
RISCV_SYSREG_HPMCOUNTER14 = 0xc0e,
RISCV_SYSREG_HPMCOUNTER15 = 0xc0f,
RISCV_SYSREG_HPMCOUNTER16 = 0xc10,
RISCV_SYSREG_HPMCOUNTER17 = 0xc11,
RISCV_SYSREG_HPMCOUNTER18 = 0xc12,
RISCV_SYSREG_HPMCOUNTER19 = 0xc13,
RISCV_SYSREG_HPMCOUNTER20 = 0xc14,
RISCV_SYSREG_HPMCOUNTER21 = 0xc15,
RISCV_SYSREG_HPMCOUNTER22 = 0xc16,
RISCV_SYSREG_HPMCOUNTER23 = 0xc17,
RISCV_SYSREG_HPMCOUNTER24 = 0xc18,
RISCV_SYSREG_HPMCOUNTER25 = 0xc19,
RISCV_SYSREG_HPMCOUNTER26 = 0xc1a,
RISCV_SYSREG_HPMCOUNTER27 = 0xc1b,
RISCV_SYSREG_HPMCOUNTER28 = 0xc1c,
RISCV_SYSREG_HPMCOUNTER29 = 0xc1d,
RISCV_SYSREG_HPMCOUNTER30 = 0xc1e,
RISCV_SYSREG_HPMCOUNTER31 = 0xc1f,
RISCV_SYSREG_VL = 0xc20,
RISCV_SYSREG_VTYPE = 0xc21,
RISCV_SYSREG_VLENB = 0xc22,
RISCV_SYSREG_CYCLEH = 0xc80,
RISCV_SYSREG_TIMEH = 0xc81,
RISCV_SYSREG_INSTRETH = 0xc82,
RISCV_SYSREG_HPMCOUNTER3H = 0xc83,
RISCV_SYSREG_HPMCOUNTER4H = 0xc84,
RISCV_SYSREG_HPMCOUNTER5H = 0xc85,
RISCV_SYSREG_HPMCOUNTER6H = 0xc86,
RISCV_SYSREG_HPMCOUNTER7H = 0xc87,
RISCV_SYSREG_HPMCOUNTER8H = 0xc88,
RISCV_SYSREG_HPMCOUNTER9H = 0xc89,
RISCV_SYSREG_HPMCOUNTER10H = 0xc8a,
RISCV_SYSREG_HPMCOUNTER11H = 0xc8b,
RISCV_SYSREG_HPMCOUNTER12H = 0xc8c,
RISCV_SYSREG_HPMCOUNTER13H = 0xc8d,
RISCV_SYSREG_HPMCOUNTER14H = 0xc8e,
RISCV_SYSREG_HPMCOUNTER15H = 0xc8f,
RISCV_SYSREG_HPMCOUNTER16H = 0xc90,
RISCV_SYSREG_HPMCOUNTER17H = 0xc91,
RISCV_SYSREG_HPMCOUNTER18H = 0xc92,
RISCV_SYSREG_HPMCOUNTER19H = 0xc93,
RISCV_SYSREG_HPMCOUNTER20H = 0xc94,
RISCV_SYSREG_HPMCOUNTER21H = 0xc95,
RISCV_SYSREG_HPMCOUNTER22H = 0xc96,
RISCV_SYSREG_HPMCOUNTER23H = 0xc97,
RISCV_SYSREG_HPMCOUNTER24H = 0xc98,
RISCV_SYSREG_HPMCOUNTER25H = 0xc99,
RISCV_SYSREG_HPMCOUNTER26H = 0xc9a,
RISCV_SYSREG_HPMCOUNTER27H = 0xc9b,
RISCV_SYSREG_HPMCOUNTER28H = 0xc9c,
RISCV_SYSREG_HPMCOUNTER29H = 0xc9d,
RISCV_SYSREG_HPMCOUNTER30H = 0xc9e,
RISCV_SYSREG_HPMCOUNTER31H = 0xc9f,
RISCV_SYSREG_SCOUNTOVF = 0xda0,
RISCV_SYSREG_STOPI = 0xdb0,
RISCV_SYSREG_HGEIP = 0xe12,
RISCV_SYSREG_VSTOPI = 0xeb0,
RISCV_SYSREG_MVENDORID = 0xf11,
RISCV_SYSREG_MARCHID = 0xf12,
RISCV_SYSREG_MIMPID = 0xf13,
RISCV_SYSREG_MHARTID = 0xf14,
RISCV_SYSREG_MCONFIGPTR = 0xf15,
RISCV_SYSREG_MTOPI = 0xfb0,
#endif

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,275 +0,0 @@
// This is auto-gen data for Capstone engine (www.capstone-engine.org)
// By Nguyen Anh Quynh <aquynh@gmail.com>
{ RISCV_INS_ADD, "add" },
{ RISCV_INS_ADDI, "addi" },
{ RISCV_INS_ADDIW, "addiw" },
{ RISCV_INS_ADDW, "addw" },
{ RISCV_INS_AMOADD_D, "amoadd.d" },
{ RISCV_INS_AMOADD_D_AQ, "amoadd.d.aq" },
{ RISCV_INS_AMOADD_D_AQ_RL, "amoadd.d.aqrl" },
{ RISCV_INS_AMOADD_D_RL, "amoadd.d.rl" },
{ RISCV_INS_AMOADD_W, "amoadd.w" },
{ RISCV_INS_AMOADD_W_AQ, "amoadd.w.aq" },
{ RISCV_INS_AMOADD_W_AQ_RL, "amoadd.w.aqrl" },
{ RISCV_INS_AMOADD_W_RL, "amoadd.w.rl" },
{ RISCV_INS_AMOAND_D, "amoand.d" },
{ RISCV_INS_AMOAND_D_AQ, "amoand.d.aq" },
{ RISCV_INS_AMOAND_D_AQ_RL, "amoand.d.aqrl" },
{ RISCV_INS_AMOAND_D_RL, "amoand.d.rl" },
{ RISCV_INS_AMOAND_W, "amoand.w" },
{ RISCV_INS_AMOAND_W_AQ, "amoand.w.aq" },
{ RISCV_INS_AMOAND_W_AQ_RL, "amoand.w.aqrl" },
{ RISCV_INS_AMOAND_W_RL, "amoand.w.rl" },
{ RISCV_INS_AMOMAXU_D, "amomaxu.d" },
{ RISCV_INS_AMOMAXU_D_AQ, "amomaxu.d.aq" },
{ RISCV_INS_AMOMAXU_D_AQ_RL, "amomaxu.d.aqrl" },
{ RISCV_INS_AMOMAXU_D_RL, "amomaxu.d.rl" },
{ RISCV_INS_AMOMAXU_W, "amomaxu.w" },
{ RISCV_INS_AMOMAXU_W_AQ, "amomaxu.w.aq" },
{ RISCV_INS_AMOMAXU_W_AQ_RL, "amomaxu.w.aqrl" },
{ RISCV_INS_AMOMAXU_W_RL, "amomaxu.w.rl" },
{ RISCV_INS_AMOMAX_D, "amomax.d" },
{ RISCV_INS_AMOMAX_D_AQ, "amomax.d.aq" },
{ RISCV_INS_AMOMAX_D_AQ_RL, "amomax.d.aqrl" },
{ RISCV_INS_AMOMAX_D_RL, "amomax.d.rl" },
{ RISCV_INS_AMOMAX_W, "amomax.w" },
{ RISCV_INS_AMOMAX_W_AQ, "amomax.w.aq" },
{ RISCV_INS_AMOMAX_W_AQ_RL, "amomax.w.aqrl" },
{ RISCV_INS_AMOMAX_W_RL, "amomax.w.rl" },
{ RISCV_INS_AMOMINU_D, "amominu.d" },
{ RISCV_INS_AMOMINU_D_AQ, "amominu.d.aq" },
{ RISCV_INS_AMOMINU_D_AQ_RL, "amominu.d.aqrl" },
{ RISCV_INS_AMOMINU_D_RL, "amominu.d.rl" },
{ RISCV_INS_AMOMINU_W, "amominu.w" },
{ RISCV_INS_AMOMINU_W_AQ, "amominu.w.aq" },
{ RISCV_INS_AMOMINU_W_AQ_RL, "amominu.w.aqrl" },
{ RISCV_INS_AMOMINU_W_RL, "amominu.w.rl" },
{ RISCV_INS_AMOMIN_D, "amomin.d" },
{ RISCV_INS_AMOMIN_D_AQ, "amomin.d.aq" },
{ RISCV_INS_AMOMIN_D_AQ_RL, "amomin.d.aqrl" },
{ RISCV_INS_AMOMIN_D_RL, "amomin.d.rl" },
{ RISCV_INS_AMOMIN_W, "amomin.w" },
{ RISCV_INS_AMOMIN_W_AQ, "amomin.w.aq" },
{ RISCV_INS_AMOMIN_W_AQ_RL, "amomin.w.aqrl" },
{ RISCV_INS_AMOMIN_W_RL, "amomin.w.rl" },
{ RISCV_INS_AMOOR_D, "amoor.d" },
{ RISCV_INS_AMOOR_D_AQ, "amoor.d.aq" },
{ RISCV_INS_AMOOR_D_AQ_RL, "amoor.d.aqrl" },
{ RISCV_INS_AMOOR_D_RL, "amoor.d.rl" },
{ RISCV_INS_AMOOR_W, "amoor.w" },
{ RISCV_INS_AMOOR_W_AQ, "amoor.w.aq" },
{ RISCV_INS_AMOOR_W_AQ_RL, "amoor.w.aqrl" },
{ RISCV_INS_AMOOR_W_RL, "amoor.w.rl" },
{ RISCV_INS_AMOSWAP_D, "amoswap.d" },
{ RISCV_INS_AMOSWAP_D_AQ, "amoswap.d.aq" },
{ RISCV_INS_AMOSWAP_D_AQ_RL, "amoswap.d.aqrl" },
{ RISCV_INS_AMOSWAP_D_RL, "amoswap.d.rl" },
{ RISCV_INS_AMOSWAP_W, "amoswap.w" },
{ RISCV_INS_AMOSWAP_W_AQ, "amoswap.w.aq" },
{ RISCV_INS_AMOSWAP_W_AQ_RL, "amoswap.w.aqrl" },
{ RISCV_INS_AMOSWAP_W_RL, "amoswap.w.rl" },
{ RISCV_INS_AMOXOR_D, "amoxor.d" },
{ RISCV_INS_AMOXOR_D_AQ, "amoxor.d.aq" },
{ RISCV_INS_AMOXOR_D_AQ_RL, "amoxor.d.aqrl" },
{ RISCV_INS_AMOXOR_D_RL, "amoxor.d.rl" },
{ RISCV_INS_AMOXOR_W, "amoxor.w" },
{ RISCV_INS_AMOXOR_W_AQ, "amoxor.w.aq" },
{ RISCV_INS_AMOXOR_W_AQ_RL, "amoxor.w.aqrl" },
{ RISCV_INS_AMOXOR_W_RL, "amoxor.w.rl" },
{ RISCV_INS_AND, "and" },
{ RISCV_INS_ANDI, "andi" },
{ RISCV_INS_AUIPC, "auipc" },
{ RISCV_INS_BEQ, "beq" },
{ RISCV_INS_BGE, "bge" },
{ RISCV_INS_BGEU, "bgeu" },
{ RISCV_INS_BLT, "blt" },
{ RISCV_INS_BLTU, "bltu" },
{ RISCV_INS_BNE, "bne" },
{ RISCV_INS_CSRRC, "csrrc" },
{ RISCV_INS_CSRRCI, "csrrci" },
{ RISCV_INS_CSRRS, "csrrs" },
{ RISCV_INS_CSRRSI, "csrrsi" },
{ RISCV_INS_CSRRW, "csrrw" },
{ RISCV_INS_CSRRWI, "csrrwi" },
{ RISCV_INS_C_ADD, "c.add" },
{ RISCV_INS_C_ADDI, "c.addi" },
{ RISCV_INS_C_ADDI16SP, "c.addi16sp" },
{ RISCV_INS_C_ADDI4SPN, "c.addi4spn" },
{ RISCV_INS_C_ADDIW, "c.addiw" },
{ RISCV_INS_C_ADDW, "c.addw" },
{ RISCV_INS_C_AND, "c.and" },
{ RISCV_INS_C_ANDI, "c.andi" },
{ RISCV_INS_C_BEQZ, "c.beqz" },
{ RISCV_INS_C_BNEZ, "c.bnez" },
{ RISCV_INS_C_EBREAK, "c.ebreak" },
{ RISCV_INS_C_FLD, "c.fld" },
{ RISCV_INS_C_FLDSP, "c.fldsp" },
{ RISCV_INS_C_FLW, "c.flw" },
{ RISCV_INS_C_FLWSP, "c.flwsp" },
{ RISCV_INS_C_FSD, "c.fsd" },
{ RISCV_INS_C_FSDSP, "c.fsdsp" },
{ RISCV_INS_C_FSW, "c.fsw" },
{ RISCV_INS_C_FSWSP, "c.fswsp" },
{ RISCV_INS_C_J, "c.j" },
{ RISCV_INS_C_JAL, "c.jal" },
{ RISCV_INS_C_JALR, "c.jalr" },
{ RISCV_INS_C_JR, "c.jr" },
{ RISCV_INS_C_LD, "c.ld" },
{ RISCV_INS_C_LDSP, "c.ldsp" },
{ RISCV_INS_C_LI, "c.li" },
{ RISCV_INS_C_LUI, "c.lui" },
{ RISCV_INS_C_LW, "c.lw" },
{ RISCV_INS_C_LWSP, "c.lwsp" },
{ RISCV_INS_C_MV, "c.mv" },
{ RISCV_INS_C_NOP, "c.nop" },
{ RISCV_INS_C_OR, "c.or" },
{ RISCV_INS_C_SD, "c.sd" },
{ RISCV_INS_C_SDSP, "c.sdsp" },
{ RISCV_INS_C_SLLI, "c.slli" },
{ RISCV_INS_C_SRAI, "c.srai" },
{ RISCV_INS_C_SRLI, "c.srli" },
{ RISCV_INS_C_SUB, "c.sub" },
{ RISCV_INS_C_SUBW, "c.subw" },
{ RISCV_INS_C_SW, "c.sw" },
{ RISCV_INS_C_SWSP, "c.swsp" },
{ RISCV_INS_C_UNIMP, "c.unimp" },
{ RISCV_INS_C_XOR, "c.xor" },
{ RISCV_INS_DIV, "div" },
{ RISCV_INS_DIVU, "divu" },
{ RISCV_INS_DIVUW, "divuw" },
{ RISCV_INS_DIVW, "divw" },
{ RISCV_INS_EBREAK, "ebreak" },
{ RISCV_INS_ECALL, "ecall" },
{ RISCV_INS_FADD_D, "fadd.d" },
{ RISCV_INS_FADD_S, "fadd.s" },
{ RISCV_INS_FCLASS_D, "fclass.d" },
{ RISCV_INS_FCLASS_S, "fclass.s" },
{ RISCV_INS_FCVT_D_L, "fcvt.d.l" },
{ RISCV_INS_FCVT_D_LU, "fcvt.d.lu" },
{ RISCV_INS_FCVT_D_S, "fcvt.d.s" },
{ RISCV_INS_FCVT_D_W, "fcvt.d.w" },
{ RISCV_INS_FCVT_D_WU, "fcvt.d.wu" },
{ RISCV_INS_FCVT_LU_D, "fcvt.lu.d" },
{ RISCV_INS_FCVT_LU_S, "fcvt.lu.s" },
{ RISCV_INS_FCVT_L_D, "fcvt.l.d" },
{ RISCV_INS_FCVT_L_S, "fcvt.l.s" },
{ RISCV_INS_FCVT_S_D, "fcvt.s.d" },
{ RISCV_INS_FCVT_S_L, "fcvt.s.l" },
{ RISCV_INS_FCVT_S_LU, "fcvt.s.lu" },
{ RISCV_INS_FCVT_S_W, "fcvt.s.w" },
{ RISCV_INS_FCVT_S_WU, "fcvt.s.wu" },
{ RISCV_INS_FCVT_WU_D, "fcvt.wu.d" },
{ RISCV_INS_FCVT_WU_S, "fcvt.wu.s" },
{ RISCV_INS_FCVT_W_D, "fcvt.w.d" },
{ RISCV_INS_FCVT_W_S, "fcvt.w.s" },
{ RISCV_INS_FDIV_D, "fdiv.d" },
{ RISCV_INS_FDIV_S, "fdiv.s" },
{ RISCV_INS_FENCE, "fence" },
{ RISCV_INS_FENCE_I, "fence.i" },
{ RISCV_INS_FENCE_TSO, "fence.tso" },
{ RISCV_INS_FEQ_D, "feq.d" },
{ RISCV_INS_FEQ_S, "feq.s" },
{ RISCV_INS_FLD, "fld" },
{ RISCV_INS_FLE_D, "fle.d" },
{ RISCV_INS_FLE_S, "fle.s" },
{ RISCV_INS_FLT_D, "flt.d" },
{ RISCV_INS_FLT_S, "flt.s" },
{ RISCV_INS_FLW, "flw" },
{ RISCV_INS_FMADD_D, "fmadd.d" },
{ RISCV_INS_FMADD_S, "fmadd.s" },
{ RISCV_INS_FMAX_D, "fmax.d" },
{ RISCV_INS_FMAX_S, "fmax.s" },
{ RISCV_INS_FMIN_D, "fmin.d" },
{ RISCV_INS_FMIN_S, "fmin.s" },
{ RISCV_INS_FMSUB_D, "fmsub.d" },
{ RISCV_INS_FMSUB_S, "fmsub.s" },
{ RISCV_INS_FMUL_D, "fmul.d" },
{ RISCV_INS_FMUL_S, "fmul.s" },
{ RISCV_INS_FMV_D_X, "fmv.d.x" },
{ RISCV_INS_FMV_W_X, "fmv.w.x" },
{ RISCV_INS_FMV_X_D, "fmv.x.d" },
{ RISCV_INS_FMV_X_W, "fmv.x.w" },
{ RISCV_INS_FNMADD_D, "fnmadd.d" },
{ RISCV_INS_FNMADD_S, "fnmadd.s" },
{ RISCV_INS_FNMSUB_D, "fnmsub.d" },
{ RISCV_INS_FNMSUB_S, "fnmsub.s" },
{ RISCV_INS_FSD, "fsd" },
{ RISCV_INS_FSGNJN_D, "fsgnjn.d" },
{ RISCV_INS_FSGNJN_S, "fsgnjn.s" },
{ RISCV_INS_FSGNJX_D, "fsgnjx.d" },
{ RISCV_INS_FSGNJX_S, "fsgnjx.s" },
{ RISCV_INS_FSGNJ_D, "fsgnj.d" },
{ RISCV_INS_FSGNJ_S, "fsgnj.s" },
{ RISCV_INS_FSQRT_D, "fsqrt.d" },
{ RISCV_INS_FSQRT_S, "fsqrt.s" },
{ RISCV_INS_FSUB_D, "fsub.d" },
{ RISCV_INS_FSUB_S, "fsub.s" },
{ RISCV_INS_FSW, "fsw" },
{ RISCV_INS_JAL, "jal" },
{ RISCV_INS_JALR, "jalr" },
{ RISCV_INS_LB, "lb" },
{ RISCV_INS_LBU, "lbu" },
{ RISCV_INS_LD, "ld" },
{ RISCV_INS_LH, "lh" },
{ RISCV_INS_LHU, "lhu" },
{ RISCV_INS_LR_D, "lr.d" },
{ RISCV_INS_LR_D_AQ, "lr.d.aq" },
{ RISCV_INS_LR_D_AQ_RL, "lr.d.aqrl" },
{ RISCV_INS_LR_D_RL, "lr.d.rl" },
{ RISCV_INS_LR_W, "lr.w" },
{ RISCV_INS_LR_W_AQ, "lr.w.aq" },
{ RISCV_INS_LR_W_AQ_RL, "lr.w.aqrl" },
{ RISCV_INS_LR_W_RL, "lr.w.rl" },
{ RISCV_INS_LUI, "lui" },
{ RISCV_INS_LW, "lw" },
{ RISCV_INS_LWU, "lwu" },
{ RISCV_INS_MRET, "mret" },
{ RISCV_INS_MUL, "mul" },
{ RISCV_INS_MULH, "mulh" },
{ RISCV_INS_MULHSU, "mulhsu" },
{ RISCV_INS_MULHU, "mulhu" },
{ RISCV_INS_MULW, "mulw" },
{ RISCV_INS_OR, "or" },
{ RISCV_INS_ORI, "ori" },
{ RISCV_INS_REM, "rem" },
{ RISCV_INS_REMU, "remu" },
{ RISCV_INS_REMUW, "remuw" },
{ RISCV_INS_REMW, "remw" },
{ RISCV_INS_SB, "sb" },
{ RISCV_INS_SC_D, "sc.d" },
{ RISCV_INS_SC_D_AQ, "sc.d.aq" },
{ RISCV_INS_SC_D_AQ_RL, "sc.d.aqrl" },
{ RISCV_INS_SC_D_RL, "sc.d.rl" },
{ RISCV_INS_SC_W, "sc.w" },
{ RISCV_INS_SC_W_AQ, "sc.w.aq" },
{ RISCV_INS_SC_W_AQ_RL, "sc.w.aqrl" },
{ RISCV_INS_SC_W_RL, "sc.w.rl" },
{ RISCV_INS_SD, "sd" },
{ RISCV_INS_SFENCE_VMA, "sfence.vma" },
{ RISCV_INS_SH, "sh" },
{ RISCV_INS_SLL, "sll" },
{ RISCV_INS_SLLI, "slli" },
{ RISCV_INS_SLLIW, "slliw" },
{ RISCV_INS_SLLW, "sllw" },
{ RISCV_INS_SLT, "slt" },
{ RISCV_INS_SLTI, "slti" },
{ RISCV_INS_SLTIU, "sltiu" },
{ RISCV_INS_SLTU, "sltu" },
{ RISCV_INS_SRA, "sra" },
{ RISCV_INS_SRAI, "srai" },
{ RISCV_INS_SRAIW, "sraiw" },
{ RISCV_INS_SRAW, "sraw" },
{ RISCV_INS_SRET, "sret" },
{ RISCV_INS_SRL, "srl" },
{ RISCV_INS_SRLI, "srli" },
{ RISCV_INS_SRLIW, "srliw" },
{ RISCV_INS_SRLW, "srlw" },
{ RISCV_INS_SUB, "sub" },
{ RISCV_INS_SUBW, "subw" },
{ RISCV_INS_SW, "sw" },
{ RISCV_INS_UNIMP, "unimp" },
{ RISCV_INS_URET, "uret" },
{ RISCV_INS_WFI, "wfi" },
{ RISCV_INS_XOR, "xor" },
{ RISCV_INS_XORI, "xori" },

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,33 +1,211 @@
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|* *|
|* Subtarget Enumeration Source Fragment *|
|* *|
|* Automatically generated file, do not edit! *|
|* *|
\*===----------------------------------------------------------------------===*/
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2024 */
/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
/* Capstone Disassembly Engine, http://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Do not edit. */
/* Capstone's LLVM TableGen Backends: */
/* https://github.com/capstone-engine/llvm-capstone */
#ifdef GET_SUBTARGETINFO_ENUM
#undef GET_SUBTARGETINFO_ENUM
/*
Make sure:
CS_MODE_RISCV64 = 0b11111
CS_MODE_RISCV32 = 0b11110
*/
enum {
RISCV_Feature64Bit = 1ULL << 0,
RISCV_FeatureStdExtA = 1ULL << 1,
RISCV_FeatureStdExtC = 1ULL << 2,
RISCV_FeatureStdExtD = 1ULL << 3,
RISCV_FeatureStdExtF = 1ULL << 4,
RISCV_FeatureStdExtM = 1ULL << 5,
RISCV_FeatureRelax = 1ULL << 6,
RISCV_Experimental = 0,
RISCV_Feature32Bit = 1,
RISCV_Feature64Bit = 2,
RISCV_FeatureFastUnalignedAccess = 3,
RISCV_FeatureForcedAtomics = 4,
RISCV_FeatureNoRVCHints = 5,
RISCV_FeaturePostRAScheduler = 6,
RISCV_FeatureRVE = 7,
RISCV_FeatureRelax = 8,
RISCV_FeatureReserveX1 = 9,
RISCV_FeatureReserveX2 = 10,
RISCV_FeatureReserveX3 = 11,
RISCV_FeatureReserveX4 = 12,
RISCV_FeatureReserveX5 = 13,
RISCV_FeatureReserveX6 = 14,
RISCV_FeatureReserveX7 = 15,
RISCV_FeatureReserveX8 = 16,
RISCV_FeatureReserveX9 = 17,
RISCV_FeatureReserveX10 = 18,
RISCV_FeatureReserveX11 = 19,
RISCV_FeatureReserveX12 = 20,
RISCV_FeatureReserveX13 = 21,
RISCV_FeatureReserveX14 = 22,
RISCV_FeatureReserveX15 = 23,
RISCV_FeatureReserveX16 = 24,
RISCV_FeatureReserveX17 = 25,
RISCV_FeatureReserveX18 = 26,
RISCV_FeatureReserveX19 = 27,
RISCV_FeatureReserveX20 = 28,
RISCV_FeatureReserveX21 = 29,
RISCV_FeatureReserveX22 = 30,
RISCV_FeatureReserveX23 = 31,
RISCV_FeatureReserveX24 = 32,
RISCV_FeatureReserveX25 = 33,
RISCV_FeatureReserveX26 = 34,
RISCV_FeatureReserveX27 = 35,
RISCV_FeatureReserveX28 = 36,
RISCV_FeatureReserveX29 = 37,
RISCV_FeatureReserveX30 = 38,
RISCV_FeatureReserveX31 = 39,
RISCV_FeatureSaveRestore = 40,
RISCV_FeatureStdExtA = 41,
RISCV_FeatureStdExtC = 42,
RISCV_FeatureStdExtD = 43,
RISCV_FeatureStdExtF = 44,
RISCV_FeatureStdExtH = 45,
RISCV_FeatureStdExtI = 46,
RISCV_FeatureStdExtM = 47,
RISCV_FeatureStdExtSmaia = 48,
RISCV_FeatureStdExtSmepmp = 49,
RISCV_FeatureStdExtSsaia = 50,
RISCV_FeatureStdExtSvinval = 51,
RISCV_FeatureStdExtSvnapot = 52,
RISCV_FeatureStdExtSvpbmt = 53,
RISCV_FeatureStdExtV = 54,
RISCV_FeatureStdExtZa64rs = 55,
RISCV_FeatureStdExtZa128rs = 56,
RISCV_FeatureStdExtZacas = 57,
RISCV_FeatureStdExtZawrs = 58,
RISCV_FeatureStdExtZba = 59,
RISCV_FeatureStdExtZbb = 60,
RISCV_FeatureStdExtZbc = 61,
RISCV_FeatureStdExtZbkb = 62,
RISCV_FeatureStdExtZbkc = 63,
RISCV_FeatureStdExtZbkx = 64,
RISCV_FeatureStdExtZbs = 65,
RISCV_FeatureStdExtZca = 66,
RISCV_FeatureStdExtZcb = 67,
RISCV_FeatureStdExtZcd = 68,
RISCV_FeatureStdExtZce = 69,
RISCV_FeatureStdExtZcf = 70,
RISCV_FeatureStdExtZcmop = 71,
RISCV_FeatureStdExtZcmp = 72,
RISCV_FeatureStdExtZcmt = 73,
RISCV_FeatureStdExtZdinx = 74,
RISCV_FeatureStdExtZfa = 75,
RISCV_FeatureStdExtZfbfmin = 76,
RISCV_FeatureStdExtZfh = 77,
RISCV_FeatureStdExtZfhmin = 78,
RISCV_FeatureStdExtZfinx = 79,
RISCV_FeatureStdExtZhinx = 80,
RISCV_FeatureStdExtZhinxmin = 81,
RISCV_FeatureStdExtZic64b = 82,
RISCV_FeatureStdExtZicbom = 83,
RISCV_FeatureStdExtZicbop = 84,
RISCV_FeatureStdExtZicboz = 85,
RISCV_FeatureStdExtZiccamoa = 86,
RISCV_FeatureStdExtZiccif = 87,
RISCV_FeatureStdExtZicclsm = 88,
RISCV_FeatureStdExtZiccrse = 89,
RISCV_FeatureStdExtZicfilp = 90,
RISCV_FeatureStdExtZicfiss = 91,
RISCV_FeatureStdExtZicntr = 92,
RISCV_FeatureStdExtZicond = 93,
RISCV_FeatureStdExtZicsr = 94,
RISCV_FeatureStdExtZifencei = 95,
RISCV_FeatureStdExtZihintntl = 96,
RISCV_FeatureStdExtZihintpause = 97,
RISCV_FeatureStdExtZihpm = 98,
RISCV_FeatureStdExtZimop = 99,
RISCV_FeatureStdExtZk = 100,
RISCV_FeatureStdExtZkn = 101,
RISCV_FeatureStdExtZknd = 102,
RISCV_FeatureStdExtZkne = 103,
RISCV_FeatureStdExtZknh = 104,
RISCV_FeatureStdExtZkr = 105,
RISCV_FeatureStdExtZks = 106,
RISCV_FeatureStdExtZksed = 107,
RISCV_FeatureStdExtZksh = 108,
RISCV_FeatureStdExtZkt = 109,
RISCV_FeatureStdExtZmmul = 110,
RISCV_FeatureStdExtZtso = 111,
RISCV_FeatureStdExtZvbb = 112,
RISCV_FeatureStdExtZvbc = 113,
RISCV_FeatureStdExtZve32f = 114,
RISCV_FeatureStdExtZve32x = 115,
RISCV_FeatureStdExtZve64d = 116,
RISCV_FeatureStdExtZve64f = 117,
RISCV_FeatureStdExtZve64x = 118,
RISCV_FeatureStdExtZvfbfmin = 119,
RISCV_FeatureStdExtZvfbfwma = 120,
RISCV_FeatureStdExtZvfh = 121,
RISCV_FeatureStdExtZvfhmin = 122,
RISCV_FeatureStdExtZvkb = 123,
RISCV_FeatureStdExtZvkg = 124,
RISCV_FeatureStdExtZvkn = 125,
RISCV_FeatureStdExtZvknc = 126,
RISCV_FeatureStdExtZvkned = 127,
RISCV_FeatureStdExtZvkng = 128,
RISCV_FeatureStdExtZvknha = 129,
RISCV_FeatureStdExtZvknhb = 130,
RISCV_FeatureStdExtZvks = 131,
RISCV_FeatureStdExtZvksc = 132,
RISCV_FeatureStdExtZvksed = 133,
RISCV_FeatureStdExtZvksg = 134,
RISCV_FeatureStdExtZvksh = 135,
RISCV_FeatureStdExtZvkt = 136,
RISCV_FeatureStdExtZvl32b = 137,
RISCV_FeatureStdExtZvl64b = 138,
RISCV_FeatureStdExtZvl128b = 139,
RISCV_FeatureStdExtZvl256b = 140,
RISCV_FeatureStdExtZvl512b = 141,
RISCV_FeatureStdExtZvl1024b = 142,
RISCV_FeatureStdExtZvl2048b = 143,
RISCV_FeatureStdExtZvl4096b = 144,
RISCV_FeatureStdExtZvl8192b = 145,
RISCV_FeatureStdExtZvl16384b = 146,
RISCV_FeatureStdExtZvl32768b = 147,
RISCV_FeatureStdExtZvl65536b = 148,
RISCV_FeatureTaggedGlobals = 149,
RISCV_FeatureTrailingSeqCstFence = 150,
RISCV_FeatureVendorXCValu = 151,
RISCV_FeatureVendorXCVbi = 152,
RISCV_FeatureVendorXCVbitmanip = 153,
RISCV_FeatureVendorXCVelw = 154,
RISCV_FeatureVendorXCVmac = 155,
RISCV_FeatureVendorXCVmem = 156,
RISCV_FeatureVendorXCVsimd = 157,
RISCV_FeatureVendorXSfvcp = 158,
RISCV_FeatureVendorXSfvfnrclipxfqf = 159,
RISCV_FeatureVendorXSfvfwmaccqqq = 160,
RISCV_FeatureVendorXSfvqmaccdod = 161,
RISCV_FeatureVendorXSfvqmaccqoq = 162,
RISCV_FeatureVendorXTHeadBa = 163,
RISCV_FeatureVendorXTHeadBb = 164,
RISCV_FeatureVendorXTHeadBs = 165,
RISCV_FeatureVendorXTHeadCmo = 166,
RISCV_FeatureVendorXTHeadCondMov = 167,
RISCV_FeatureVendorXTHeadFMemIdx = 168,
RISCV_FeatureVendorXTHeadMac = 169,
RISCV_FeatureVendorXTHeadMemIdx = 170,
RISCV_FeatureVendorXTHeadMemPair = 171,
RISCV_FeatureVendorXTHeadSync = 172,
RISCV_FeatureVendorXTHeadVdot = 173,
RISCV_FeatureVendorXVentanaCondOps = 174,
RISCV_TuneAUIPCADDIFusion = 175,
RISCV_TuneConditionalCompressedMoveFusion = 176,
RISCV_TuneDLenFactor2 = 177,
RISCV_TuneLDADDFusion = 178,
RISCV_TuneLUIADDIFusion = 179,
RISCV_TuneNoDefaultUnroll = 180,
RISCV_TuneNoOptimizedZeroStrideLoad = 181,
RISCV_TuneShiftedZExtWFusion = 182,
RISCV_TuneShortForwardBranchOpt = 183,
RISCV_TuneSiFive7 = 184,
RISCV_TuneVentanaVeyron = 185,
RISCV_TuneZExtHFusion = 186,
RISCV_TuneZExtWFusion = 187,
RISCV_NumSubtargetFeatures = 188
};
#endif // GET_SUBTARGETINFO_ENUM

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,24 +1,69 @@
//===-- RISCVInstPrinter.h - Convert RISCV MCInst to asm syntax ---*- C++ -*--//
/* Capstone Disassembly Engine, http://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 2022-2023 */
/* Automatically translated source file from LLVM. */
/* LLVM-commit: <commit> */
/* LLVM-tag: <tag> */
/* Only small edits allowed. */
/* For multiple similar edits, please create a Patch for the translator. */
/* Capstone's C++ file translator: */
/* https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */
//===-- RISCVInstPrinter.h - Convert RISC-V MCInst to asm syntax --*- C++ -*--//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This class prints a RISCV MCInst to a .s file.
// This class prints a RISC-V MCInst to a .s file.
//
//===----------------------------------------------------------------------===//
#ifndef CS_RISCVINSTPRINTER_H
#define CS_RISCVINSTPRINTER_H
#ifndef LLVM_LIB_TARGET_RISCV_MCTARGETDESC_RISCVINSTPRINTER_H
#define LLVM_LIB_TARGET_RISCV_MCTARGETDESC_RISCVINSTPRINTER_H
#include "../../MCInst.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <capstone/platform.h>
#include "../../MCInstPrinter.h"
#include "../../cs_priv.h"
#include "../../SStream.h"
#include "RISCVBaseInfo.h"
#include "RISCVDisassemblerExtension.h"
void RISCV_printInst(MCInst *MI, SStream *O, void *info);
#define CONCAT(a, b) CONCAT_(a, b)
#define CONCAT_(a, b) a##_##b
void RISCV_post_printer(csh ud, cs_insn *insn, char *insn_asm, MCInst *mci);
void printBranchOperand(MCInst *MI, uint64_t Address, unsigned OpNo,
SStream *O);
void printCSRSystemRegister(MCInst *MI, unsigned OpNo, SStream *O);
void printFenceArg(MCInst *MI, unsigned OpNo, SStream *O);
void printFRMArg(MCInst *MI, unsigned OpNo, SStream *O);
void printFRMArgLegacy(MCInst *MI, unsigned OpNo, SStream *O);
void printFPImmOperand(MCInst *MI, unsigned OpNo, SStream *O);
void printZeroOffsetMemOp(MCInst *MI, unsigned OpNo, SStream *O);
void printVTypeI(MCInst *MI, unsigned OpNo, SStream *O);
void printVMaskReg(MCInst *MI, unsigned OpNo, SStream *O);
void printRlist(MCInst *MI, unsigned OpNo, SStream *O);
void printSpimm(MCInst *MI, unsigned OpNo, SStream *O);
void printRegReg(MCInst *MI, unsigned OpNo, SStream *O);
const char *RISCV_LLVM_getRegisterName(unsigned RegNo, unsigned AltIdx);
const char *getSysRegName(unsigned reg);
bool isCompressed(MCInst *MI);
typedef enum {
#define GET_ENUM_VALUES_SysReg
#include "RISCVGenCSSystemOperandsEnum.inc"
} SysRegValue;
#endif

17
arch/RISCV/RISCVLinkage.h Normal file
View file

@ -0,0 +1,17 @@
#ifndef CS_MIPS_LINKAGE_H
#define CS_MIPS_LINKAGE_H
#include "../../MCDisassembler.h"
#include "../../MCInst.h"
#include "../../MCRegisterInfo.h"
#include "../../SStream.h"
#include "capstone/capstone.h"
bool RISCV_LLVM_getInstruction(csh handle, const uint8_t *Bytes, size_t ByteLen,
MCInst *MI, uint16_t *Size, uint64_t Address,
void *Info);
const char *RISCV_LLVM_getRegisterName(unsigned RegNo, unsigned AltIdx);
void RISCV_LLVM_printInstruction(MCInst *MI, SStream *O,
void * /* MCRegisterInfo* */ info);
#endif // CS_MIPS_LINKAGE_H

View file

@ -1,131 +1,289 @@
#include "capstone/cs_operand.h"
#include "capstone/riscv.h"
#include <stdint.h>
#include <float.h>
#include <math.h>
#ifdef CAPSTONE_HAS_RISCV
#include <stdio.h> // debug
#include <string.h>
#include "../../Mapping.h"
#include "../../utils.h"
#include "../../cs_simple_types.h"
#include "../../utils.h"
#include "RISCVMapping.h"
#include "RISCVInstPrinter.h"
#define GET_INSTRINFO_ENUM
#include "RISCVGenInstrInfo.inc"
#ifndef CAPSTONE_DIET
static const name_map reg_name_maps[] = {
{ RISCV_REG_INVALID, NULL },
#define GET_REGINFO_ENUM
#define GET_REGINFO_MC_DESC
#include "RISCVGenRegisterInfo.inc"
{ RISCV_REG_X0, "zero" }, { RISCV_REG_X1, "ra" },
{ RISCV_REG_X2, "sp" }, { RISCV_REG_X3, "gp" },
{ RISCV_REG_X4, "tp" }, { RISCV_REG_X5, "t0" },
{ RISCV_REG_X6, "t1" }, { RISCV_REG_X7, "t2" },
{ RISCV_REG_X8, "s0" }, { RISCV_REG_X9, "s1" },
{ RISCV_REG_X10, "a0" }, { RISCV_REG_X11, "a1" },
{ RISCV_REG_X12, "a2" }, { RISCV_REG_X13, "a3" },
{ RISCV_REG_X14, "a4" }, { RISCV_REG_X15, "a5" },
{ RISCV_REG_X16, "a6" }, { RISCV_REG_X17, "a7" },
{ RISCV_REG_X18, "s2" }, { RISCV_REG_X19, "s3" },
{ RISCV_REG_X20, "s4" }, { RISCV_REG_X21, "s5" },
{ RISCV_REG_X22, "s6" }, { RISCV_REG_X23, "s7" },
{ RISCV_REG_X24, "s8" }, { RISCV_REG_X25, "s9" },
{ RISCV_REG_X26, "s10" }, { RISCV_REG_X27, "s11" },
{ RISCV_REG_X28, "t3" }, { RISCV_REG_X29, "t4" },
{ RISCV_REG_X30, "t5" }, { RISCV_REG_X31, "t6" },
{ RISCV_REG_F0_32, "ft0" }, { RISCV_REG_F0_64, "ft0" },
{ RISCV_REG_F1_32, "ft1" }, { RISCV_REG_F1_64, "ft1" },
{ RISCV_REG_F2_32, "ft2" }, { RISCV_REG_F2_64, "ft2" },
{ RISCV_REG_F3_32, "ft3" }, { RISCV_REG_F3_64, "ft3" },
{ RISCV_REG_F4_32, "ft4" }, { RISCV_REG_F4_64, "ft4" },
{ RISCV_REG_F5_32, "ft5" }, { RISCV_REG_F5_64, "ft5" },
{ RISCV_REG_F6_32, "ft6" }, { RISCV_REG_F6_64, "ft6" },
{ RISCV_REG_F7_32, "ft7" }, { RISCV_REG_F7_64, "ft7" },
{ RISCV_REG_F8_32, "fs0" }, { RISCV_REG_F8_64, "fs0" },
{ RISCV_REG_F9_32, "fs1" }, { RISCV_REG_F9_64, "fs1" },
{ RISCV_REG_F10_32, "fa0" }, { RISCV_REG_F10_64, "fa0" },
{ RISCV_REG_F11_32, "fa1" }, { RISCV_REG_F11_64, "fa1" },
{ RISCV_REG_F12_32, "fa2" }, { RISCV_REG_F12_64, "fa2" },
{ RISCV_REG_F13_32, "fa3" }, { RISCV_REG_F13_64, "fa3" },
{ RISCV_REG_F14_32, "fa4" }, { RISCV_REG_F14_64, "fa4" },
{ RISCV_REG_F15_32, "fa5" }, { RISCV_REG_F15_64, "fa5" },
{ RISCV_REG_F16_32, "fa6" }, { RISCV_REG_F16_64, "fa6" },
{ RISCV_REG_F17_32, "fa7" }, { RISCV_REG_F17_64, "fa7" },
{ RISCV_REG_F18_32, "fs2" }, { RISCV_REG_F18_64, "fs2" },
{ RISCV_REG_F19_32, "fs3" }, { RISCV_REG_F19_64, "fs3" },
{ RISCV_REG_F20_32, "fs4" }, { RISCV_REG_F20_64, "fs4" },
{ RISCV_REG_F21_32, "fs5" }, { RISCV_REG_F21_64, "fs5" },
{ RISCV_REG_F22_32, "fs6" }, { RISCV_REG_F22_64, "fs6" },
{ RISCV_REG_F23_32, "fs7" }, { RISCV_REG_F23_64, "fs7" },
{ RISCV_REG_F24_32, "fs8" }, { RISCV_REG_F24_64, "fs8" },
{ RISCV_REG_F25_32, "fs9" }, { RISCV_REG_F25_64, "fs9" },
{ RISCV_REG_F26_32, "fs10" }, { RISCV_REG_F26_64, "fs10" },
{ RISCV_REG_F27_32, "fs11" }, { RISCV_REG_F27_64, "fs11" },
{ RISCV_REG_F28_32, "ft8" }, { RISCV_REG_F28_64, "ft8" },
{ RISCV_REG_F29_32, "ft9" }, { RISCV_REG_F29_64, "ft9" },
{ RISCV_REG_F30_32, "ft10" }, { RISCV_REG_F30_64, "ft10" },
{ RISCV_REG_F31_32, "ft11" }, { RISCV_REG_F31_64, "ft11" },
};
#endif
#include "RISCVInstPrinter.h"
const char *RISCV_reg_name(csh handle, unsigned int reg)
{
#ifndef CAPSTONE_DIET
if (reg >= RISCV_REG_ENDING)
return NULL;
return reg_name_maps[reg].name;
#else
return NULL;
#endif
int syntax_opt = ((cs_struct *)(uintptr_t)handle)->syntax;
if (syntax_opt & CS_OPT_SYNTAX_NOREGNAME) {
return RISCV_LLVM_getRegisterName(reg, RISCV_NoRegAltName);
}
return RISCV_LLVM_getRegisterName(reg, RISCV_ABIRegAltName);
}
static const insn_map insns[] = {
// dummy item
{ 0,
0,
#ifndef CAPSTONE_DIET
{ 0 },
{ 0 },
{ 0 },
0,
0
#endif
},
#include "RISCVMappingInsn.inc"
#include "RISCVGenCSMappingInsn.inc"
};
#ifndef CAPSTONE_DIET
static const map_insn_ops insn_operands[] = {
#include "RISCVMappingInsnOp.inc"
#include "RISCVGenCSMappingInsnOp.inc"
};
#endif
void RISCV_add_cs_detail(MCInst *MI, unsigned OpNum)
void RISCV_add_cs_detail_0(MCInst *MI, riscv_op_group opgroup, unsigned OpNum)
{
if (!detail_is_set(MI))
return;
// are not "true" arguments and has no Capstone equivalent
if (opgroup == RISCV_OP_GROUP_FRMArg ||
opgroup == RISCV_OP_GROUP_FRMArgLegacy)
return;
if (opgroup == RISCV_OP_GROUP_FPImmOperand) {
unsigned Imm = (unsigned)MCInst_getOperand(MI, OpNum)->ImmVal;
cs_riscv_op *op = RISCV_get_detail_op_at(MI, OpNum);
op->type = RISCV_OP_FP;
op->access = (cs_ac_type)map_get_op_access(MI, OpNum);
switch (Imm) {
case 1: // min
switch (MI->Opcode) {
case RISCV_FLI_S:
op->dimm = (double)FLT_MIN;
break;
case RISCV_FLI_D:
op->dimm = (double)DBL_MIN;
break;
case RISCV_FLI_H:
op->dimm = 6.103515625e-05;
break;
default:
op->dimm = 0.0;
break;
}
break;
case 30: // inf
op->dimm = INFINITY;
break;
case 31: // nan
op->dimm = NAN;
break;
default:
op->dimm = (double)getFPImm(Imm);
break;
}
RISCV_inc_op_count(MI);
return;
}
cs_riscv_op *op = RISCV_get_detail_op_at(MI, OpNum);
op->type = (riscv_op_type)map_get_op_type(MI, OpNum);
op->access = (cs_ac_type)map_get_op_access(MI, OpNum);
switch (map_get_op_type(MI, OpNum)) {
case CS_OP_REG:
op->reg = MCInst_getOperand(MI, OpNum)->RegVal;
break;
case CS_OP_MEM:
op->mem.base = 0;
op->mem.disp = MCInst_getOperand(MI, OpNum)->ImmVal;
break;
case CS_OP_IMM: {
uint64_t val = MCInst_getOperand(MI, OpNum)->ImmVal;
if (opgroup != RISCV_OP_GROUP_CSRSystemRegister) {
op->imm = val;
if (opgroup == RISCV_OP_GROUP_BranchOperand) {
op->imm += MI->address;
}
} else /* system register read-write */ {
op->type = RISCV_OP_CSR;
op->csr = val;
// CSR instruction always read-writes the system operand
op->access = CS_AC_READ_WRITE;
}
break;
}
case CS_OP_MEM_REG:
op->type = (riscv_op_type)CS_OP_MEM;
op->mem.base = MCInst_getOperand(MI, OpNum)->RegVal;
break;
case CS_OP_MEM_IMM:
// fill in the disp in the last operand
op = RISCV_get_detail_op_at(MI, OpNum - 1);
op->type = (riscv_op_type)CS_OP_MEM;
op->mem.disp = MCInst_getOperand(MI, OpNum)->ImmVal;
RISCV_dec_op_count(
MI); // don't increase the count, cancel the coming increment
break;
case CS_OP_INVALID:
break;
default: {
CS_ASSERT(0 && "unhandled operand type");
}
}
RISCV_inc_op_count(MI);
}
static inline void RISCV_add_adhoc_groups(MCInst *MI);
void RISCV_add_groups(MCInst *MI)
{
if (!detail_is_set(MI))
return;
cs_op_type op_type = map_get_op_type(MI, OpNum);
get_detail(MI)->groups_count = 0;
if (op_type == CS_OP_IMM) {
RISCV_get_detail_op(MI, 0)->type = RISCV_OP_IMM;
RISCV_get_detail_op(MI, 0)->imm = MCInst_getOpVal(MI, OpNum);
RISCV_get_detail_op(MI, 0)->access =
map_get_op_access(MI, OpNum);
RISCV_inc_op_count(MI);
} else if (op_type == CS_OP_REG) {
RISCV_get_detail_op(MI, 0)->type = RISCV_OP_REG;
RISCV_get_detail_op(MI, 0)->reg = MCInst_getOpVal(MI, OpNum);
RISCV_get_detail_op(MI, 0)->access =
map_get_op_access(MI, OpNum);
RISCV_inc_op_count(MI);
} else {
CS_ASSERT(0 && "Op type not handled.");
#ifndef CAPSTONE_DIET
int i = 0;
while (insns[MI->Opcode].groups[i] != 0) {
add_group(MI, insns[MI->Opcode].groups[i]);
i++;
}
#endif
RISCV_add_adhoc_groups(MI);
}
enum {
#define GET_ENUM_VALUES_RISCVOpcode
#include "RISCVGenCSSystemOperandsEnum.inc"
};
static inline void RISCV_add_privileged_group(MCInst *MI)
{
const uint8_t *bytes = MI->flat_insn->bytes;
uint8_t opcode = bytes[0] & 0x80;
// no privileged instruction has a major opcode other than SYSTEM
if (opcode != RISCV_RISCVOPCODE_SYSTEM) {
return;
}
uint8_t func3 = (bytes[1] >> 4) & 0x7;
// no privileged instruction has a minor opcode other than PRIV or PRIVM
if (func3 != 0 && func3 != 0x4) {
return;
}
uint16_t func12 = readBytes16(MI, &(bytes[2])) >> 4;
// ecall and ebreak has SYSTEM and PRIV but aren't privileged
if (func12 == 0 || func12 == 1) {
return;
}
uint8_t func6 = func12 >> 6;
// a subspace under extension-defined custom SYSTEM instructions that is not privileged
if (func6 == 0x23 || func6 == 0x33) {
return;
}
add_group(MI, RISCV_GRP_PRIVILEGE);
}
static inline void RISCV_add_interrupt_group(MCInst *MI)
{
if (MI->Opcode == RISCV_ECALL || MI->Opcode == RISCV_EBREAK) {
add_group(MI, RISCV_GRP_INT);
}
}
static inline void RISCV_add_interrupt_ret_group(MCInst *MI)
{
if (MI->Opcode == RISCV_MRET || MI->Opcode == RISCV_SRET) {
add_group(MI, RISCV_GRP_IRET);
}
}
// calls are implemented in RISCV as plain jumps that happen to set a link register containing the return address
// but this link register could be given as the null register x0, discarding the return address and making them jumps
static inline void RISCV_add_call_group(MCInst *MI)
{
if (MI->Opcode == RISCV_JAL || MI->Opcode == RISCV_JALR) {
cs_riscv_op *op = RISCV_get_detail_op_at(MI, 0);
if ((op->type == (riscv_op_type)CS_OP_REG) &&
op->reg != RISCV_REG_X0 && (op->access & CS_AC_WRITE)) {
add_group(MI, RISCV_GRP_CALL);
}
if (MI->Opcode == RISCV_JAL) {
add_group(MI, RISCV_GRP_BRANCH_RELATIVE);
}
}
}
// returns are implemented in RISCV as a plain indirect jump that happen to reference the return address register ra == x1
static inline void RISCV_add_ret_group(MCInst *MI)
{
if (MI->Opcode == RISCV_C_JR) {
cs_riscv_op *op = RISCV_get_detail_op_at(MI, 0);
if ((op->type == (riscv_op_type)CS_OP_REG) &&
op->reg == RISCV_REG_X1) {
add_group(MI, RISCV_GRP_RET);
} else {
add_group(MI, RISCV_GRP_JUMP);
}
}
}
static inline void RISCV_add_adhoc_groups(MCInst *MI)
{
RISCV_add_privileged_group(MI);
RISCV_add_interrupt_group(MI);
RISCV_add_interrupt_ret_group(MI);
RISCV_add_call_group(MI);
RISCV_add_ret_group(MI);
}
// for weird reasons some instructions end up with valid operands that are
// interspersed with invalid operands, i.e. the operands array is an "island"
// of valid operands with invalid gaps between them, this function will compactify
// all the valid operands and pad the rest of the array to invalid
void RISCV_compact_operands(MCInst *MI)
{
if (!detail_is_set(MI))
return;
cs_riscv_op *ops = RISCV_get_detail(MI)->operands;
unsigned int write_pos = 0;
// Move valid elements to front
for (unsigned int read_pos = 0; read_pos < NUM_RISCV_OPS; read_pos++) {
if (ops[read_pos].type != (riscv_op_type)CS_OP_INVALID) {
if (write_pos != read_pos) {
ops[write_pos] = ops[read_pos];
}
write_pos++;
}
}
// fill the rest, if any, with invalid
memset((void *)(&ops[write_pos]), CS_OP_INVALID,
(NUM_RISCV_OPS - write_pos) * sizeof(cs_riscv_op));
}
// some RISC-V instructions have only 2 apparent operands, one of them is read-write
// the actual operand information for those instruction should have 3 operands, the first and second are the same operand,
// but once with read and once write access
// when those instructions are disassembled only the operand entry with the read access is used,
// and therefore the read-write operand is wrongly classified as only-read
// this logic tries to correct that
void RISCV_add_missing_write_access(MCInst *MI)
{
if (!detail_is_set(MI))
return;
if (!isCompressed(MI))
return;
cs_riscv *riscv_details = RISCV_get_detail(MI);
cs_riscv_op *ops = riscv_details->operands;
// make the detection condition as specific as possible
// so it doesn't accidentally trigger for other cases
if (riscv_details->op_count == 2 && ops[0].type == RISCV_OP_INVALID &&
ops[1].type == RISCV_OP_REG && ops[1].access == CS_AC_READ) {
ops[1].access |= CS_AC_WRITE;
}
}
@ -167,10 +325,10 @@ void RISCV_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
}
}
static const name_map insn_name_maps[] = {
{ RISCV_INS_INVALID, NULL },
static const char *const insn_name_maps[] = {
/*RISCV_INS_INVALID:*/ NULL,
#include "RISCVGenInsnNameMaps.inc"
#include "RISCVGenCSMappingInsnName.inc"
};
const char *RISCV_insn_name(csh handle, unsigned int id)
@ -179,7 +337,7 @@ const char *RISCV_insn_name(csh handle, unsigned int id)
if (id >= RISCV_INS_ENDING)
return NULL;
return insn_name_maps[id].name;
return insn_name_maps[id];
#else
return NULL;
#endif
@ -197,30 +355,9 @@ static const name_map group_name_maps[] = {
{ RISCV_GRP_PRIVILEGE, "privileged" },
{ RISCV_GRP_BRANCH_RELATIVE, "branch_relative" },
// architecture specific
{ RISCV_GRP_ISRV32, "isrv32" },
{ RISCV_GRP_ISRV64, "isrv64" },
{ RISCV_GRP_HASSTDEXTA, "hasStdExtA" },
{ RISCV_GRP_HASSTDEXTC, "hasStdExtC" },
{ RISCV_GRP_HASSTDEXTD, "hasStdExtD" },
{ RISCV_GRP_HASSTDEXTF, "hasStdExtF" },
{ RISCV_GRP_HASSTDEXTM, "hasStdExtM" },
// architecture specific
#include "RISCVGenCSFeatureName.inc"
/*
{ RISCV_GRP_ISRVA, "isrva" },
{ RISCV_GRP_ISRVC, "isrvc" },
{ RISCV_GRP_ISRVD, "isrvd" },
{ RISCV_GRP_ISRVCD, "isrvcd" },
{ RISCV_GRP_ISRVF, "isrvf" },
{ RISCV_GRP_ISRV32C, "isrv32c" },
{ RISCV_GRP_ISRV32CF, "isrv32cf" },
{ RISCV_GRP_ISRVM, "isrvm" },
{ RISCV_GRP_ISRV64A, "isrv64a" },
{ RISCV_GRP_ISRV64C, "isrv64c" },
{ RISCV_GRP_ISRV64D, "isrv64d" },
{ RISCV_GRP_ISRV64F, "isrv64f" },
{ RISCV_GRP_ISRV64M, "isrv64m" }
*/
{ RISCV_GRP_ENDING, NULL }
};
#endif
@ -229,8 +366,10 @@ const char *RISCV_group_name(csh handle, unsigned int id)
{
#ifndef CAPSTONE_DIET
// verify group id
// if past the end
if (id >= RISCV_GRP_ENDING ||
(id > RISCV_GRP_BRANCH_RELATIVE && id < RISCV_GRP_ISRV32))
// or in the encoding gap between generic groups and arch-specific groups
(id > RISCV_GRP_BRANCH_RELATIVE && id < RISCV_FEATURE_HASSTDEXTI))
return NULL;
return id2name(group_name_maps, ARR_SIZE(group_name_maps), id);
#else
@ -239,126 +378,24 @@ const char *RISCV_group_name(csh handle, unsigned int id)
}
// map instruction name to public instruction ID
riscv_reg RISCV_map_insn(const char *name)
riscv_insn RISCV_map_insn(const char *name)
{
// handle special alias first
unsigned int i;
// NOTE: skip first NULL name in insn_name_maps
i = name2id(&insn_name_maps[1], ARR_SIZE(insn_name_maps) - 1, name);
return (i != -1) ? i : RISCV_REG_INVALID;
for (i = 1; i < ARR_SIZE(insn_name_maps); i++) {
if (!strcmp(name, insn_name_maps[i]))
return i;
}
return RISCV_INS_INVALID;
}
// map internal raw register to 'public' register
riscv_reg RISCV_map_register(unsigned int r)
void RISCV_init(MCRegisterInfo *MRI)
{
static const unsigned int map[] = {
0,
RISCV_REG_X0,
RISCV_REG_X1,
RISCV_REG_X2,
RISCV_REG_X3,
RISCV_REG_X4,
RISCV_REG_X5,
RISCV_REG_X6,
RISCV_REG_X7,
RISCV_REG_X8,
RISCV_REG_X9,
RISCV_REG_X10,
RISCV_REG_X11,
RISCV_REG_X12,
RISCV_REG_X13,
RISCV_REG_X14,
RISCV_REG_X15,
RISCV_REG_X16,
RISCV_REG_X17,
RISCV_REG_X18,
RISCV_REG_X19,
RISCV_REG_X20,
RISCV_REG_X21,
RISCV_REG_X22,
RISCV_REG_X23,
RISCV_REG_X24,
RISCV_REG_X25,
RISCV_REG_X26,
RISCV_REG_X27,
RISCV_REG_X28,
RISCV_REG_X29,
RISCV_REG_X30,
RISCV_REG_X31,
RISCV_REG_F0_32,
RISCV_REG_F0_64,
RISCV_REG_F1_32,
RISCV_REG_F1_64,
RISCV_REG_F2_32,
RISCV_REG_F2_64,
RISCV_REG_F3_32,
RISCV_REG_F3_64,
RISCV_REG_F4_32,
RISCV_REG_F4_64,
RISCV_REG_F5_32,
RISCV_REG_F5_64,
RISCV_REG_F6_32,
RISCV_REG_F6_64,
RISCV_REG_F7_32,
RISCV_REG_F7_64,
RISCV_REG_F8_32,
RISCV_REG_F8_64,
RISCV_REG_F9_32,
RISCV_REG_F9_64,
RISCV_REG_F10_32,
RISCV_REG_F10_64,
RISCV_REG_F11_32,
RISCV_REG_F11_64,
RISCV_REG_F12_32,
RISCV_REG_F12_64,
RISCV_REG_F13_32,
RISCV_REG_F13_64,
RISCV_REG_F14_32,
RISCV_REG_F14_64,
RISCV_REG_F15_32,
RISCV_REG_F15_64,
RISCV_REG_F16_32,
RISCV_REG_F16_64,
RISCV_REG_F17_32,
RISCV_REG_F17_64,
RISCV_REG_F18_32,
RISCV_REG_F18_64,
RISCV_REG_F19_32,
RISCV_REG_F19_64,
RISCV_REG_F20_32,
RISCV_REG_F20_64,
RISCV_REG_F21_32,
RISCV_REG_F21_64,
RISCV_REG_F22_32,
RISCV_REG_F22_64,
RISCV_REG_F23_32,
RISCV_REG_F23_64,
RISCV_REG_F24_32,
RISCV_REG_F24_64,
RISCV_REG_F25_32,
RISCV_REG_F25_64,
RISCV_REG_F26_32,
RISCV_REG_F26_64,
RISCV_REG_F27_32,
RISCV_REG_F27_64,
RISCV_REG_F28_32,
RISCV_REG_F28_64,
RISCV_REG_F29_32,
RISCV_REG_F29_64,
RISCV_REG_F30_32,
RISCV_REG_F30_64,
RISCV_REG_F31_32,
RISCV_REG_F31_64,
};
if (r < ARR_SIZE(map))
return map[r];
// cannot find this register
return 0;
MCRegisterInfo_InitMCRegisterInfo(MRI, RISCVRegDesc, RISCV_REG_ENDING,
0, 0, RISCVMCRegisterClasses,
ARR_SIZE(RISCVMCRegisterClasses), 0,
0, RISCVRegDiffLists, 0,
RISCVSubRegIdxLists,
ARR_SIZE(RISCVSubRegIdxLists), 0);
}
#endif

View file

@ -3,6 +3,11 @@
#define CS_RISCV_MAP_H
#include "../../include/capstone/capstone.h"
#include "../../cs_priv.h"
typedef enum {
#include "RISCVGenCSOpGroup.inc"
} riscv_op_group;
// given internal insn id, return public instruction info
void RISCV_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id);
@ -13,12 +18,17 @@ const char *RISCV_group_name(csh handle, unsigned int id);
const char *RISCV_reg_name(csh handle, unsigned int reg);
void RISCV_add_cs_detail(MCInst *MI, unsigned OpNum);
void RISCV_add_cs_detail_0(MCInst *MI, riscv_op_group opgroup, unsigned OpNum);
void RISCV_add_groups(MCInst *MI);
void RISCV_compact_operands(MCInst *MI);
void RISCV_add_missing_write_access(MCInst *MI);
// map instruction name to instruction ID
riscv_reg RISCV_map_insn(const char *name);
riscv_insn RISCV_map_insn(const char *name);
// map internal raw register to 'public' register
riscv_reg RISCV_map_register(unsigned int r);
void RISCV_init(MCRegisterInfo *MRI);
#endif

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -6,10 +6,10 @@
#include "../../utils.h"
#include "../../MCRegisterInfo.h"
#include "RISCVDisassembler.h"
#include "RISCVInstPrinter.h"
#include "RISCVMapping.h"
#include "RISCVModule.h"
#include "RISCVLinkage.h"
cs_err RISCV_global_init(cs_struct *ud)
{
@ -17,10 +17,10 @@ cs_err RISCV_global_init(cs_struct *ud)
mri = cs_mem_malloc(sizeof(*mri));
RISCV_init(mri);
ud->printer = RISCV_printInst;
ud->printer = RISCV_LLVM_printInstruction;
ud->printer_info = mri;
ud->getinsn_info = mri;
ud->disasm = RISCV_getInstruction;
ud->disasm = RISCV_LLVM_getInstruction;
ud->post_printer = NULL;
ud->reg_name = RISCV_reg_name;

View file

@ -106,7 +106,56 @@ __all__ = [
'CS_MODE_BPF_EXTENDED',
'CS_MODE_RISCV32',
'CS_MODE_RISCV64',
'CS_MODE_RISCVC',
'CS_MODE_RISCV_C',
'CS_MODE_RISCV_FD',
'CS_MODE_RISCV_F',
'CS_MODE_RISCV_D',
'CS_MODE_RISCV_V',
'CS_MODE_RISCV_ZFINX',
'CS_MODE_RISCV_ZDINX',
'CS_MODE_RISCV_ZHINX',
'CS_MODE_RISCV_ZHINXMIN',
'CS_MODE_RISCV_ZCMP_ZCMT_ZCE',
'CS_MODE_RISCV_ZCE',
'CS_MODE_RISCV_ZCMP',
'CS_MODE_RISCV_ZCMT',
'CS_MODE_RISCV_ZICFISS',
'CS_MODE_RISCV_EXPERIMENTAL_ZICFISS',
'CS_MODE_RISCV_E',
'CS_MODE_RISCV_A',
'CS_MODE_RISCV_COREV',
'CS_MODE_RISCV_XCVALU',
'CS_MODE_RISCV_XCVBI',
'CS_MODE_RISCV_XCVBITMANIP',
'CS_MODE_RISCV_XCVELW',
'CS_MODE_RISCV_XCVMAC',
'CS_MODE_RISCV_XCVMEM',
'CS_MODE_RISCV_XCVSIMD',
'CS_MODE_RISCV_THEAD',
'CS_MODE_RISCV_XTHEADBA',
'CS_MODE_RISCV_XTHEADBS',
'CS_MODE_RISCV_XTHEADCMO',
'CS_MODE_RISCV_XTHEADCONDMOV',
'CS_MODE_RISCV_XTHEADFMEMIDX',
'CS_MODE_RISCV_XTHEADMAC',
'CS_MODE_RISCV_XTHEADMEMIDX',
'CS_MODE_RISCV_XTHEADMEMPAIR',
'CS_MODE_RISCV_XTHEADSYNC',
'CS_MODE_RISCV_XTHEADVDOT',
'CS_MODE_RISCV_SIFIVE',
'CS_MODE_RISCV_XSFVCP',
'CS_MODE_RISCV_XSFVFNRCLIPXFQF',
'CS_MODE_RISCV_XSFVFWMACCQQQ',
'CS_MODE_RISCV_XSFVQMACCDOD',
'CS_MODE_RISCV_XSFVQMACCQOQ',
'CS_MODE_RISCV_BITMANIP',
'CS_MODE_RISCV_ZBA',
'CS_MODE_RISCV_ZBB',
'CS_MODE_RISCV_ZBC',
'CS_MODE_RISCV_ZBKB',
'CS_MODE_RISCV_ZBKC',
'CS_MODE_RISCV_ZBKX',
'CS_MODE_RISCV_ZBS',
'CS_MODE_MOS65XX_6502',
'CS_MODE_MOS65XX_65C02',
'CS_MODE_MOS65XX_W65C02',
@ -159,6 +208,7 @@ __all__ = [
'CS_OPT_SYNTAX_MOTOROLA',
'CS_OPT_SYNTAX_CS_REG_ALIAS',
'CS_OPT_SYNTAX_NO_DOLLAR',
'CS_OPT_SYNTAX_NO_ALIAS_TEXT',
'CS_OPT_DETAIL',
'CS_OPT_DETAIL_REAL',
@ -332,7 +382,7 @@ CS_MODE_MIPS64R5 = 1 << 16 # Mips64r5 ISA Support
CS_MODE_MIPS64R6 = 1 << 17 # Mips64r6 ISA Support
CS_MODE_OCTEON = 1 << 18 # Octeon cnMIPS Support
CS_MODE_OCTEONP = 1 << 19 # Octeon+ cnMIPS Support
CS_MODE_NANOMIPS = 1 << 20 # Generic nanomips
CS_MODE_NANOMIPS = 1 << 20 # Generic nanomips
CS_MODE_NMS1 = ((1 << 21) | CS_MODE_NANOMIPS) # nanoMips NMS1
CS_MODE_I7200 = ((1 << 22) | CS_MODE_NANOMIPS) # nanoMips I7200
CS_MODE_MIPS_NOFLOAT = 1 << 23 # Disable floating points ops
@ -353,7 +403,56 @@ CS_MODE_BPF_CLASSIC = 0 # Classic BPF mode (default)
CS_MODE_BPF_EXTENDED = (1 << 0) # Extended BPF mode
CS_MODE_RISCV32 = (1 << 0) # RISCV32 mode
CS_MODE_RISCV64 = (1 << 1) # RISCV64 mode
CS_MODE_RISCVC = (1 << 2) # RISCV compressed mode
CS_MODE_RISCV_C = 1 << 2 # RISCV compressed instructure mode
CS_MODE_RISCV_FD = 1 << 3
CS_MODE_RISCV_F = CS_MODE_RISCV_FD
CS_MODE_RISCV_D = CS_MODE_RISCV_FD
CS_MODE_RISCV_V = 1 << 4
CS_MODE_RISCV_ZFINX = 1 << 5
CS_MODE_RISCV_ZDINX = CS_MODE_RISCV_ZFINX
CS_MODE_RISCV_ZHINX = CS_MODE_RISCV_ZFINX
CS_MODE_RISCV_ZHINXMIN = CS_MODE_RISCV_ZFINX
CS_MODE_RISCV_ZCMP_ZCMT_ZCE = 1 << 6
CS_MODE_RISCV_ZCE = CS_MODE_RISCV_ZCMP_ZCMT_ZCE
CS_MODE_RISCV_ZCMP =CS_MODE_RISCV_ZCMP_ZCMT_ZCE
CS_MODE_RISCV_ZCMT = CS_MODE_RISCV_ZCMP_ZCMT_ZCE
CS_MODE_RISCV_ZICFISS = 1 << 7
CS_MODE_RISCV_EXPERIMENTAL_ZICFISS = CS_MODE_RISCV_ZICFISS
CS_MODE_RISCV_E = 1 << 8
CS_MODE_RISCV_A = 1 << 9
CS_MODE_RISCV_COREV = 1 << 10
CS_MODE_RISCV_XCVALU = CS_MODE_RISCV_COREV
CS_MODE_RISCV_XCVBI = CS_MODE_RISCV_COREV
CS_MODE_RISCV_XCVBITMANIP = CS_MODE_RISCV_COREV
CS_MODE_RISCV_XCVELW = CS_MODE_RISCV_COREV
CS_MODE_RISCV_XCVMAC = CS_MODE_RISCV_COREV
CS_MODE_RISCV_XCVMEM = CS_MODE_RISCV_COREV
CS_MODE_RISCV_XCVSIMD = CS_MODE_RISCV_COREV
CS_MODE_RISCV_THEAD = 1 << 11
CS_MODE_RISCV_XTHEADBA = CS_MODE_RISCV_THEAD
CS_MODE_RISCV_XTHEADBS = CS_MODE_RISCV_THEAD
CS_MODE_RISCV_XTHEADCMO = CS_MODE_RISCV_THEAD
CS_MODE_RISCV_XTHEADCONDMOV = CS_MODE_RISCV_THEAD
CS_MODE_RISCV_XTHEADFMEMIDX = CS_MODE_RISCV_THEAD
CS_MODE_RISCV_XTHEADMAC = CS_MODE_RISCV_THEAD
CS_MODE_RISCV_XTHEADMEMIDX = CS_MODE_RISCV_THEAD
CS_MODE_RISCV_XTHEADMEMPAIR = CS_MODE_RISCV_THEAD
CS_MODE_RISCV_XTHEADSYNC = CS_MODE_RISCV_THEAD
CS_MODE_RISCV_XTHEADVDOT = CS_MODE_RISCV_THEAD
CS_MODE_RISCV_SIFIVE = 1 << 12
CS_MODE_RISCV_XSFVCP = CS_MODE_RISCV_SIFIVE
CS_MODE_RISCV_XSFVFNRCLIPXFQF = CS_MODE_RISCV_SIFIVE
CS_MODE_RISCV_XSFVFWMACCQQQ = CS_MODE_RISCV_SIFIVE
CS_MODE_RISCV_XSFVQMACCDOD = CS_MODE_RISCV_SIFIVE
CS_MODE_RISCV_XSFVQMACCQOQ = CS_MODE_RISCV_SIFIVE
CS_MODE_RISCV_BITMANIP = 1 << 13
CS_MODE_RISCV_ZBA = 1 << 14
CS_MODE_RISCV_ZBB = 1 << 15
CS_MODE_RISCV_ZBC = 1 << 16
CS_MODE_RISCV_ZBKB = 1 << 17
CS_MODE_RISCV_ZBKC = 1 << 18
CS_MODE_RISCV_ZBKX = 1 << 19
CS_MODE_RISCV_ZBS = 1 << 20
CS_MODE_MOS65XX_6502 = (1 << 1) # MOS65XXX MOS 6502
CS_MODE_MOS65XX_65C02 = (1 << 2) # MOS65XXX WDC 65c02
CS_MODE_MOS65XX_W65C02 = (1 << 3) # MOS65XXX WDC W65c02
@ -461,6 +560,7 @@ CS_OPT_SYNTAX_MOTOROLA = (1 << 6) # MOS65XX use $ as hex prefix
CS_OPT_SYNTAX_CS_REG_ALIAS = (1 << 7) # Prints common register alias which are not defined in LLVM (ARM: r9 = sb etc.)
CS_OPT_SYNTAX_PERCENT = (1 << 8) # Prints the % in front of PPC registers.
CS_OPT_SYNTAX_NO_DOLLAR = (1 << 9) # Does not print the $ in front of Mips, LoongArch registers.
CS_OPT_SYNTAX_NO_ALIAS_TEXT = (1 << 10) # Does not print an instruction's alias test if the instruction is an alias
CS_OPT_DETAIL_REAL = (1 << 1) # If enabled, always sets the real instruction detail.Even if the instruction is an alias.
# Capstone error type
@ -1468,7 +1568,7 @@ def debug():
"m680x": CS_ARCH_M680X, 'evm': CS_ARCH_EVM, 'mos65xx': CS_ARCH_MOS65XX,
'bpf': CS_ARCH_BPF, 'riscv': CS_ARCH_RISCV, 'tricore': CS_ARCH_TRICORE,
'wasm': CS_ARCH_WASM, 'sh': CS_ARCH_SH, 'alpha': CS_ARCH_ALPHA,
'hppa': CS_ARCH_HPPA, 'loongarch': CS_ARCH_LOONGARCH, 'xtensa': CS_ARCH_XTENSA,
'hppa': CS_ARCH_HPPA, 'loongarch': CS_ARCH_LOONGARCH, 'xtensa': CS_ARCH_XTENSA,
'arc': CS_ARCH_ARC
}

View file

@ -1,34 +1,44 @@
# Capstone Python bindings, by Nguyen Anh Quynnh <aquynh@gmail.com>
import ctypes
from . import copy_ctypes_list
from .riscv_const import *
# define the API
class RISCVOpMem(ctypes.Structure):
_fields_ = (
('base', ctypes.c_uint),
('disp', ctypes.c_int64),
("base", ctypes.c_uint),
("disp", ctypes.c_int64),
)
class RISCVOpValue(ctypes.Union):
_fields_ = (
('reg', ctypes.c_uint),
('imm', ctypes.c_int64),
('mem', RISCVOpMem),
("reg", ctypes.c_uint),
("imm", ctypes.c_int64),
("dimm", ctypes.c_double),
("mem", RISCVOpMem),
("csr", ctypes.c_uint16),
)
class RISCVOp(ctypes.Structure):
_fields_ = (
('type', ctypes.c_uint),
('value', RISCVOpValue),
('access', ctypes.c_uint),
("type", ctypes.c_uint),
("value", RISCVOpValue),
("access", ctypes.c_uint),
)
@property
def imm(self):
return self.value.imm
@property
def dimm(self):
return self.value.dimm
@property
def reg(self):
return self.value.reg
@ -37,14 +47,18 @@ class RISCVOp(ctypes.Structure):
def mem(self):
return self.value.mem
@property
def csr(self):
return self.value.csr
class CsRISCV(ctypes.Structure):
_fields_ = (
('need_effective_addr', ctypes.c_bool),
('op_count', ctypes.c_uint8),
('operands', RISCVOp * 8),
("need_effective_addr", ctypes.c_bool),
("op_count", ctypes.c_uint8),
("operands", RISCVOp * 8),
)
def get_arch_info(a):
return (a.need_effective_addr, copy_ctypes_list(a.operands[:a.op_count]))
def get_arch_info(a):
return (a.need_effective_addr, copy_ctypes_list(a.operands[: a.op_count]))

File diff suppressed because it is too large Load diff

View file

@ -275,14 +275,26 @@ def compare_int64(actual: int, expected: None | int, msg: str) -> bool:
return True
def compare_fp(actual: float, expected: None | float, msg: str) -> bool:
def compare_fp(actual: float, expected: None | float | str, msg: str) -> bool:
if expected is None:
return True
from cstest_py.cstest import log
from math import isnan
if isinstance(expected, str):
try:
expected = float(expected)
except ValueError:
log.error(f"{msg}: Expected value '{expected}' is not a valid float.")
return False
def floatToBits(f):
return struct.unpack("=L", struct.pack("=f", f))[0]
# NAN's bit representation is non-canonical
if isnan(actual) and isnan(expected):
return True
if floatToBits(actual) != floatToBits(expected):
log.error(f"{msg}: {actual} != {expected}")
return False

View file

@ -42,4 +42,8 @@ configs = {
"type": cs.CS_OPT_SYNTAX,
"val": cs.CS_OPT_SYNTAX_NO_DOLLAR,
},
"CS_OPT_SYNTAX_NO_ALIAS_TEXT": {
"type": cs.CS_OPT_SYNTAX,
"val": cs.CS_OPT_SYNTAX_NO_ALIAS_TEXT
}
}

View file

@ -8,6 +8,7 @@ from capstone import (
Cs,
CsInsn,
)
import capstone
from capstone.alpha_const import ALPHA_OP_IMM, ALPHA_OP_REG
from capstone.bpf_const import (
BPF_OP_REG,
@ -71,7 +72,8 @@ from capstone.m68k_const import (
)
from capstone.mips_const import MIPS_OP_REG, MIPS_OP_IMM, MIPS_OP_MEM
from capstone.mos65xx_const import MOS65XX_OP_REG, MOS65XX_OP_MEM, MOS65XX_OP_IMM
from capstone.riscv_const import RISCV_OP_MEM, RISCV_OP_IMM, RISCV_OP_REG
from capstone.riscv import RISCV_OP_FP
from capstone.riscv_const import RISCV_OP_CSR, RISCV_OP_MEM, RISCV_OP_IMM, RISCV_OP_REG
from capstone.sh_const import SH_OP_REG, SH_OP_MEM, SH_OP_IMM
from capstone.sparc_const import SPARC_OP_REG, SPARC_OP_IMM, SPARC_OP_MEM, SPARC_OP_ASI, SPARC_OP_MEMBAR_TAG
from capstone.systemz_const import SYSTEMZ_OP_REG, SYSTEMZ_OP_IMM, SYSTEMZ_OP_MEM
@ -1345,6 +1347,12 @@ def test_expected_riscv(actual: CsInsn, expected: dict) -> bool:
return False
if not compare_int64(aop.mem.disp, eop.get("mem_disp"), "mem_disp"):
return False
elif aop.type == RISCV_OP_FP:
if not compare_fp(aop.dimm, eop.get("dimm"), "dimm"):
return False
elif aop.type == RISCV_OP_CSR:
if not compare_uint16(aop.csr, capstone.riscv.SYSREG_NAME_TO_VAL[eop.get("csr")], "csr"):
return False
else:
raise ValueError("Operand type not handled.")
return True

14
cs.c
View file

@ -201,7 +201,17 @@ typedef struct cs_arch_config {
#define CS_ARCH_CONFIG_RISCV \
{ \
RISCV_global_init, RISCV_option, \
~(CS_MODE_RISCV32 | CS_MODE_RISCV64 | CS_MODE_RISCVC), \
~(CS_MODE_RISCV32 | CS_MODE_RISCV64 | \
CS_MODE_RISCV_C | CS_MODE_RISCV_FD | \
CS_MODE_RISCV_V | CS_MODE_RISCV_ZFINX | \
CS_MODE_RISCV_ZCMP_ZCMT_ZCE | \
CS_MODE_RISCV_ZICFISS | CS_MODE_RISCV_E | \
CS_MODE_RISCV_A | CS_MODE_RISCV_COREV | \
CS_MODE_RISCV_SIFIVE | CS_MODE_RISCV_THEAD | \
CS_MODE_RISCV_ZBA | CS_MODE_RISCV_ZBB | \
CS_MODE_RISCV_ZBC | CS_MODE_RISCV_ZBKB | \
CS_MODE_RISCV_ZBKC | CS_MODE_RISCV_ZBKX | \
CS_MODE_RISCV_ZBS), \
}
#define CS_ARCH_CONFIG_SH \
{ \
@ -994,7 +1004,7 @@ static uint8_t skipdata_size(cs_struct *handle)
return 8;
case CS_ARCH_RISCV:
// special compress mode
if (handle->mode & CS_MODE_RISCVC)
if (handle->mode & CS_MODE_RISCV_C)
return 2;
return 4;
case CS_ARCH_SH:

View file

@ -64,6 +64,11 @@ static struct {
{ CS_ARCH_LOONGARCH, CS_ARCH_MIPS, CS_ARCH_MAX },
CS_OPT_SYNTAX_NO_DOLLAR,
0 },
{ "+noalias",
"Does not print the text alias of an alias instruction",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
CS_OPT_SYNTAX_NO_ALIAS_TEXT,
0 },
// cs_mode only
{ "+nofloat",
"Disables floating point support",
@ -135,6 +140,92 @@ static struct {
{ CS_ARCH_SPARC, CS_ARCH_MAX },
0,
CS_MODE_V9 },
{ "+c",
"Enables RISCV C extension.",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_C },
{ "+fd",
"Enables RISCV F and D extensions.",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_FD },
{ "+v",
"Enables RISCV V extension.",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_V },
{ "+inx",
"Enables RISCV Zfinx, Zdinx, and Zhinx extensions,"
" zhinxmin is also enabled as it's subset of zhinx ",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_ZFINX },
{ "+zcmp-t-e",
"Enables the following RISCV code size reduction extensions: zcmp, zcmt and zce",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_ZCMP_ZCMT_ZCE },
{ "a",
"Enables the RISCV A extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_A },
{ "+zbb",
"Enables the RISCV ZBB extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_ZBB },
{ "+zbc",
"Enables the RISCV ZBC extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_ZBC },
{ "+zba",
"Enables the RISCV ZBA extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_ZBA },
{ "+zbs",
"Enables the RISCV ZBS extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_ZBS },
{ "+zbk",
"Enables the RISCV crypto extensions (ZBKB, ZBKC, ZBKX)",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_ZBKB | CS_MODE_RISCV_ZBKC | CS_MODE_RISCV_ZBKX },
{ "+zicfiss",
"Enables the RISCV ZICFISS extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_ZICFISS },
{ "+e",
"Enables the RISCV E extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_E },
{ "+corev",
"Enables the RISCV COREV extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_COREV },
{ "+thead",
"Enables the RISCV T-HEAD extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_THEAD },
{ "+sifive",
"Enables the RISCV SiFive extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_SIFIVE },
{ "+bitmanip",
"Enables the RISCV bit manipulation extension",
{ CS_ARCH_RISCV, CS_ARCH_MAX },
0,
CS_MODE_RISCV_BITMANIP },
{ NULL }
};
@ -351,9 +442,9 @@ static struct {
CS_MODE_BIG_ENDIAN | CS_MODE_BPF_EXTENDED },
{ "riscv32", "Risc-V 32-bit, little endian", CS_ARCH_RISCV,
CS_MODE_RISCV32 | CS_MODE_RISCVC },
CS_MODE_RISCV32 | CS_MODE_RISCV_C },
{ "riscv64", "Risc-V 64-bit, little endian", CS_ARCH_RISCV,
CS_MODE_RISCV64 | CS_MODE_RISCVC },
CS_MODE_RISCV64 | CS_MODE_RISCV_C },
{ "6502", "MOS 6502", CS_ARCH_MOS65XX, CS_MODE_MOS65XX_6502 },
{ "65c02", "WDC 65c02", CS_ARCH_MOS65XX, CS_MODE_MOS65XX_65C02 },
@ -955,6 +1046,7 @@ int main(int argc, char **argv)
}
count = cs_disasm(handle, assembly, size, address, 0, &insn);
if (count > 0) {
for (i = 0; i < count; i++) {
int j;

View file

@ -5,6 +5,8 @@
#include <capstone/capstone.h>
#include "cstool.h"
#include "../arch/RISCV/RISCVInstPrinter.h"
void print_insn_detail_riscv(csh handle, cs_insn *ins)
{
cs_riscv *riscv;
@ -41,6 +43,14 @@ void print_insn_detail_riscv(csh handle, cs_insn *ins)
i, (long)op->mem.disp);
break;
case RISCV_OP_FP:
printf("\t\toperands[%u].type: FP_IMM %f \n", i,
op->dimm);
break;
case RISCV_OP_CSR:
printf("\t\toperands[%u].type: CSR = %s\n", i,
getSysRegName(op->csr));
break;
}
switch (op->access) {

View file

@ -209,7 +209,25 @@ typedef enum cs_mode {
CS_MODE_BPF_EXTENDED = 1 << 0, ///< Extended BPF mode
CS_MODE_RISCV32 = 1 << 0, ///< RISCV RV32G
CS_MODE_RISCV64 = 1 << 1, ///< RISCV RV64G
CS_MODE_RISCVC = 1 << 2, ///< RISCV compressed instructure mode
CS_MODE_RISCV_C = 1 << 2, ///< RISCV compressed instructure mode
CS_MODE_RISCV_FD = 1 << 3,
CS_MODE_RISCV_V = 1 << 4,
CS_MODE_RISCV_ZFINX = 1 << 5,
CS_MODE_RISCV_ZCMP_ZCMT_ZCE = 1 << 6,
CS_MODE_RISCV_ZICFISS = 1 << 7,
CS_MODE_RISCV_E = 1 << 8,
CS_MODE_RISCV_A = 1 << 9,
CS_MODE_RISCV_COREV = 1 << 10,
CS_MODE_RISCV_THEAD = 1 << 11,
CS_MODE_RISCV_SIFIVE = 1 << 12,
CS_MODE_RISCV_BITMANIP = 1 << 13,
CS_MODE_RISCV_ZBA = 1 << 14,
CS_MODE_RISCV_ZBB = 1 << 15,
CS_MODE_RISCV_ZBC = 1 << 16,
CS_MODE_RISCV_ZBKB = 1 << 17,
CS_MODE_RISCV_ZBKC = 1 << 18,
CS_MODE_RISCV_ZBKX = 1 << 19,
CS_MODE_RISCV_ZBS = 1 << 20,
CS_MODE_MOS65XX_6502 = 1 << 1, ///< MOS65XXX MOS 6502
CS_MODE_MOS65XX_65C02 = 1 << 2, ///< MOS65XXX WDC 65c02
CS_MODE_MOS65XX_W65C02 = 1 << 3, ///< MOS65XXX WDC W65c02
@ -341,6 +359,9 @@ typedef enum cs_opt_value {
CS_OPT_SYNTAX_NO_DOLLAR =
1
<< 9, ///< Does not print the $ in front of Mips, LoongArch registers.
CS_OPT_SYNTAX_NO_ALIAS_TEXT =
1
<< 10, ///< Does not print an instruction's alias test if the instruction is an alias
CS_OPT_DETAIL_REAL =
1
<< 1, ///< If enabled, always sets the real instruction detail. Even if the instruction is an alias.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,73 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_XCVALU", None
0xab,0x32,0x73,0x86 == cv.addurnr t0, t1, t2
0x2b,0xb5,0xc5,0x86 == cv.addurnr a0, a1, a2
0xab,0x32,0x73,0x5c == cv.maxu t0, t1, t2
0x2b,0xb5,0xc5,0x5c == cv.maxu a0, a1, a2
0xab,0x32,0x73,0x8c == cv.subrnr t0, t1, t2
0x2b,0xb5,0xc5,0x8c == cv.subrnr a0, a1, a2
0xab,0x32,0x73,0x52 == cv.slet t0, t1, t2
0x2b,0xb5,0xc5,0x52 == cv.slet a0, a1, a2
0xdb,0x32,0x73,0x80 == cv.subrn t0, t1, t2, 0
0xdb,0x32,0x73,0xa0 == cv.subrn t0, t1, t2, 16
0x5b,0xb5,0x05,0xbe == cv.subrn a0, a1, zero, 31
0xab,0x32,0x73,0x88 == cv.subnr t0, t1, t2
0x2b,0xb5,0xc5,0x88 == cv.subnr a0, a1, a2
0xab,0x32,0x73,0x82 == cv.addunr t0, t1, t2
0x2b,0xb5,0xc5,0x82 == cv.addunr a0, a1, a2
0xdb,0x22,0x73,0xc0 == cv.addurn t0, t1, t2, 0
0xdb,0x22,0x73,0xe0 == cv.addurn t0, t1, t2, 16
0x5b,0xa5,0x05,0xfe == cv.addurn a0, a1, zero, 31
0xdb,0x22,0x73,0x40 == cv.addun t0, t1, t2, 0
0xdb,0x22,0x73,0x60 == cv.addun t0, t1, t2, 16
0x5b,0xa5,0x05,0x7e == cv.addun a0, a1, zero, 31
0xab,0x32,0x03,0x72 == cv.clipu t0, t1, 0
0xab,0x32,0x03,0x73 == cv.clipu t0, t1, 16
0x2b,0x35,0xf0,0x73 == cv.clipu a0, zero, 31
0xab,0x32,0x03,0x70 == cv.clip t0, t1, 0
0xab,0x32,0x03,0x71 == cv.clip t0, t1, 16
0x2b,0x35,0xf0,0x71 == cv.clip a0, zero, 31
0xab,0x32,0x03,0x62 == cv.exthz t0, t1
0x2b,0xb5,0x05,0x62 == cv.exthz a0, a1
0xab,0x32,0x73,0x5a == cv.max t0, t1, t2
0x2b,0xb5,0xc5,0x5a == cv.max a0, a1, a2
0xab,0x32,0x73,0x74 == cv.clipr t0, t1, t2
0x2b,0xb5,0xc5,0x74 == cv.clipr a0, a1, a2
0xdb,0x32,0x73,0x00 == cv.subn t0, t1, t2, 0
0xdb,0x32,0x73,0x20 == cv.subn t0, t1, t2, 16
0x5b,0xb5,0x05,0x3e == cv.subn a0, a1, zero, 31
0xab,0x32,0x03,0x66 == cv.extbz t0, t1
0x2b,0xb5,0x05,0x66 == cv.extbz a0, a1
0xab,0x32,0x03,0x50 == cv.abs t0, t1
0x2b,0xb5,0x05,0x50 == cv.abs a0, a1
0xab,0x32,0x73,0x76 == cv.clipur t0, t1, t2
0x2b,0xb5,0xc5,0x76 == cv.clipur a0, a1, a2
0xab,0x32,0x73,0x58 == cv.minu t0, t1, t2
0x2b,0xb5,0xc5,0x58 == cv.minu a0, a1, a2
0xdb,0x22,0x73,0x00 == cv.addn t0, t1, t2, 0
0xdb,0x22,0x73,0x20 == cv.addn t0, t1, t2, 16
0x5b,0xa5,0x05,0x3e == cv.addn a0, a1, zero, 31
0xab,0x32,0x73,0x8a == cv.subunr t0, t1, t2
0x2b,0xb5,0xc5,0x8a == cv.subunr a0, a1, a2
0xab,0x32,0x03,0x64 == cv.extbs t0, t1
0x2b,0xb5,0x05,0x64 == cv.extbs a0, a1
0xab,0x32,0x73,0x54 == cv.sletu t0, t1, t2
0x2b,0xb5,0xc5,0x54 == cv.sletu a0, a1, a2
0xab,0x32,0x73,0x56 == cv.min t0, t1, t2
0x2b,0xb5,0xc5,0x56 == cv.min a0, a1, a2
0xab,0x32,0x73,0x8e == cv.suburnr t0, t1, t2
0x2b,0xb5,0xc5,0x8e == cv.suburnr a0, a1, a2
0xab,0x32,0x73,0x84 == cv.addrnr t0, t1, t2
0x2b,0xb5,0xc5,0x84 == cv.addrnr a0, a1, a2
0xab,0x32,0x03,0x60 == cv.exths t0, t1
0x2b,0xb5,0x05,0x60 == cv.exths a0, a1
0xdb,0x22,0x73,0x80 == cv.addrn t0, t1, t2, 0
0xdb,0x22,0x73,0xa0 == cv.addrn t0, t1, t2, 16
0x5b,0xa5,0x05,0xbe == cv.addrn a0, a1, zero, 31
0xdb,0x32,0x73,0xc0 == cv.suburn t0, t1, t2, 0
0xdb,0x32,0x73,0xe0 == cv.suburn t0, t1, t2, 16
0x5b,0xb5,0x05,0xfe == cv.suburn a0, a1, zero, 31
0xab,0x32,0x73,0x80 == cv.addnr t0, t1, t2
0x2b,0xb5,0xc5,0x80 == cv.addnr a0, a1, a2
0xdb,0x32,0x73,0x40 == cv.subun t0, t1, t2, 0
0xdb,0x32,0x73,0x60 == cv.subun t0, t1, t2, 16
0x5b,0xb5,0x05,0x7e == cv.subun a0, a1, zero, 31

View file

@ -0,0 +1,5 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_XCVBI", None
0x0b,0xe0,0x02,0x00 == cv.beqimm t0, 0, 0
0x0b,0x65,0x55,0x02 == cv.beqimm a0, 5, 42
0x0b,0xf0,0x02,0x00 == cv.bneimm t0, 0, 0
0x0b,0x75,0x55,0x02 == cv.bneimm a0, 5, 42

View file

@ -0,0 +1,49 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_XCVBITMANIP", None
0xdb,0x02,0x13,0x00 == cv.extract t0, t1, 0, 1
0x5b,0x85,0x25,0x23 == cv.extract a0, a1, 17, 18
0x5b,0x84,0xf4,0x3d == cv.extract s0, s1, 30, 31
0xdb,0x02,0x13,0x40 == cv.extractu t0, t1, 0, 1
0x5b,0x85,0x25,0x63 == cv.extractu a0, a1, 17, 18
0x5b,0x84,0xf4,0x7d == cv.extractu s0, s1, 30, 31
0xdb,0x02,0x13,0x80 == cv.insert t0, t1, 0, 1
0x5b,0x85,0x25,0xa3 == cv.insert a0, a1, 17, 18
0x5b,0x84,0xf4,0xbd == cv.insert s0, s1, 30, 31
0xdb,0x12,0x13,0x00 == cv.bclr t0, t1, 0, 1
0x5b,0x95,0x25,0x23 == cv.bclr a0, a1, 17, 18
0x5b,0x94,0xf4,0x3d == cv.bclr s0, s1, 30, 31
0xdb,0x12,0x13,0x40 == cv.bset t0, t1, 0, 1
0x5b,0x95,0x25,0x63 == cv.bset a0, a1, 17, 18
0x5b,0x94,0xf4,0x7d == cv.bset s0, s1, 30, 31
0xdb,0x12,0x13,0xc0 == cv.bitrev t0, t1, 0, 1
0x5b,0x95,0x25,0xc3 == cv.bitrev a0, a1, 1, 18
0x5b,0x94,0xf4,0xc5 == cv.bitrev s0, s1, 2, 31
0xab,0x32,0x73,0x30 == cv.extractr t0, t1, t2
0x2b,0xb5,0xc5,0x30 == cv.extractr a0, a1, a2
0x2b,0xb4,0x24,0x31 == cv.extractr s0, s1, s2
0xab,0x32,0x73,0x32 == cv.extractur t0, t1, t2
0x2b,0xb5,0xc5,0x32 == cv.extractur a0, a1, a2
0x2b,0xb4,0x24,0x33 == cv.extractur s0, s1, s2
0xab,0x32,0x73,0x34 == cv.insertr t0, t1, t2
0x2b,0xb5,0xc5,0x34 == cv.insertr a0, a1, a2
0x2b,0xb4,0x24,0x35 == cv.insertr s0, s1, s2
0xab,0x32,0x73,0x38 == cv.bclrr t0, t1, t2
0x2b,0xb5,0xc5,0x38 == cv.bclrr a0, a1, a2
0x2b,0xb4,0x24,0x39 == cv.bclrr s0, s1, s2
0xab,0x32,0x73,0x3a == cv.bsetr t0, t1, t2
0x2b,0xb5,0xc5,0x3a == cv.bsetr a0, a1, a2
0x2b,0xb4,0x24,0x3b == cv.bsetr s0, s1, s2
0xab,0x32,0x73,0x40 == cv.ror t0, t1, t2
0x2b,0xb5,0xc5,0x40 == cv.ror a0, a1, a2
0x2b,0xb4,0x24,0x41 == cv.ror s0, s1, s2
0xab,0x32,0x03,0x42 == cv.ff1 t0, t1
0x2b,0xb5,0x05,0x42 == cv.ff1 a0, a1
0x2b,0xb4,0x04,0x42 == cv.ff1 s0, s1
0xab,0x32,0x03,0x44 == cv.fl1 t0, t1
0x2b,0xb5,0x05,0x44 == cv.fl1 a0, a1
0x2b,0xb4,0x04,0x44 == cv.fl1 s0, s1
0xab,0x32,0x03,0x46 == cv.clb t0, t1
0x2b,0xb5,0x05,0x46 == cv.clb a0, a1
0x2b,0xb4,0x04,0x46 == cv.clb s0, s1
0xab,0x32,0x03,0x48 == cv.cnt t0, t1
0x2b,0xb5,0x05,0x48 == cv.cnt a0, a1
0x2b,0xb4,0x04,0x48 == cv.cnt s0, s1

View file

@ -0,0 +1,4 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_XCVELW", None
0x0b,0x35,0x05,0x40 == cv.elw a0, 1024(a0)
0x8b,0xb5,0x15,0x00 == cv.elw a1, 1(a1)
0x0b,0xb6,0x06,0xc0 == cv.elw a2, -1024(a3)

View file

@ -0,0 +1,57 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_XCVMAC", None
0xab,0x32,0x73,0x90 == cv.mac t0, t1, t2
0xab,0x32,0x03,0x90 == cv.mac t0, t1, zero
0xdb,0x62,0x73,0x40 == cv.machhsn t0, t1, t2, 0
0xdb,0x62,0x03,0x60 == cv.machhsn t0, t1, zero, 16
0xdb,0x62,0x03,0x7e == cv.machhsn t0, t1, zero, 31
0xdb,0x62,0x73,0xc0 == cv.machhsrn t0, t1, t2, 0
0xdb,0x62,0x03,0xe0 == cv.machhsrn t0, t1, zero, 16
0xdb,0x62,0x03,0xfe == cv.machhsrn t0, t1, zero, 31
0xdb,0x72,0x73,0x40 == cv.machhun t0, t1, t2, 0
0xdb,0x72,0x03,0x60 == cv.machhun t0, t1, zero, 16
0xdb,0x72,0x03,0x7e == cv.machhun t0, t1, zero, 31
0xdb,0x72,0x73,0xc0 == cv.machhurn t0, t1, t2, 0
0xdb,0x72,0x03,0xe0 == cv.machhurn t0, t1, zero, 16
0xdb,0x72,0x03,0xfe == cv.machhurn t0, t1, zero, 31
0xdb,0x62,0x73,0x00 == cv.macsn t0, t1, t2, 0
0xdb,0x62,0x03,0x20 == cv.macsn t0, t1, zero, 16
0xdb,0x62,0x03,0x3e == cv.macsn t0, t1, zero, 31
0xdb,0x62,0x73,0x80 == cv.macsrn t0, t1, t2, 0
0xdb,0x62,0x03,0xa0 == cv.macsrn t0, t1, zero, 16
0xdb,0x62,0x03,0xbe == cv.macsrn t0, t1, zero, 31
0xdb,0x72,0x73,0x00 == cv.macun t0, t1, t2, 0
0xdb,0x72,0x03,0x20 == cv.macun t0, t1, zero, 16
0xdb,0x72,0x03,0x3e == cv.macun t0, t1, zero, 31
0xdb,0x72,0x73,0x80 == cv.macurn t0, t1, t2, 0
0xdb,0x72,0x03,0xa0 == cv.macurn t0, t1, zero, 16
0xdb,0x72,0x03,0xbe == cv.macurn t0, t1, zero, 31
0xab,0x32,0x73,0x92 == cv.msu t0, t1, t2
0xab,0x32,0x03,0x92 == cv.msu t0, t1, zero
0xdb,0x42,0x73,0x40 == cv.mulhhsn t0, t1, t2, 0
0xdb,0x42,0x03,0x40 == cv.mulhhsn t0, t1, zero, 0
0xdb,0x42,0x03,0x60 == cv.mulhhsn t0, t1, zero, 16
0xdb,0x42,0x03,0x7e == cv.mulhhsn t0, t1, zero, 31
0xdb,0x42,0x73,0xc0 == cv.mulhhsrn t0, t1, t2, 0
0xdb,0x42,0x03,0xe0 == cv.mulhhsrn t0, t1, zero, 16
0xdb,0x42,0x03,0xfe == cv.mulhhsrn t0, t1, zero, 31
0xdb,0x52,0x73,0x40 == cv.mulhhun t0, t1, t2, 0
0xdb,0x52,0x03,0x40 == cv.mulhhun t0, t1, zero, 0
0xdb,0x52,0x03,0x60 == cv.mulhhun t0, t1, zero, 16
0xdb,0x52,0x03,0x7e == cv.mulhhun t0, t1, zero, 31
0xdb,0x52,0x73,0xc0 == cv.mulhhurn t0, t1, t2, 0
0xdb,0x52,0x03,0xe0 == cv.mulhhurn t0, t1, zero, 16
0xdb,0x52,0x03,0xfe == cv.mulhhurn t0, t1, zero, 31
0xdb,0x42,0x73,0x00 == cv.mulsn t0, t1, t2, 0
0xdb,0x42,0x03,0x00 == cv.mulsn t0, t1, zero, 0
0xdb,0x42,0x03,0x20 == cv.mulsn t0, t1, zero, 16
0xdb,0x42,0x03,0x3e == cv.mulsn t0, t1, zero, 31
0xdb,0x42,0x73,0x80 == cv.mulsrn t0, t1, t2, 0
0xdb,0x42,0x03,0xa0 == cv.mulsrn t0, t1, zero, 16
0xdb,0x42,0x03,0xbe == cv.mulsrn t0, t1, zero, 31
0xdb,0x52,0x73,0x00 == cv.mulun t0, t1, t2, 0
0xdb,0x52,0x03,0x00 == cv.mulun t0, t1, zero, 0
0xdb,0x52,0x03,0x20 == cv.mulun t0, t1, zero, 16
0xdb,0x52,0x03,0x3e == cv.mulun t0, t1, zero, 31
0xdb,0x52,0x73,0x80 == cv.mulurn t0, t1, t2, 0
0xdb,0x52,0x03,0xa0 == cv.mulurn t0, t1, zero, 16
0xdb,0x52,0x03,0xbe == cv.mulurn t0, t1, zero, 31

View file

@ -0,0 +1,49 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_XCVMEM", None
0x8b,0x02,0x03,0x00 == cv.lb t0, (t1), 0
0x0b,0x85,0xf5,0x7f == cv.lb a0, (a1), 2047
0xab,0x32,0x73,0x00 == cv.lb t0, (t1), t2
0x2b,0xb5,0xc5,0x00 == cv.lb a0, (a1), a2
0xab,0x32,0x73,0x08 == cv.lb t0, t2(t1)
0x2b,0xb5,0xc5,0x08 == cv.lb a0, a2(a1)
0x8b,0x42,0x03,0x00 == cv.lbu t0, (t1), 0
0x0b,0xc5,0xf5,0x7f == cv.lbu a0, (a1), 2047
0xab,0x32,0x73,0x10 == cv.lbu t0, (t1), t2
0x2b,0xb5,0xc5,0x10 == cv.lbu a0, (a1), a2
0xab,0x32,0x73,0x18 == cv.lbu t0, t2(t1)
0x2b,0xb5,0xc5,0x18 == cv.lbu a0, a2(a1)
0x8b,0x12,0x03,0x00 == cv.lh t0, (t1), 0
0x0b,0x95,0xf5,0x7f == cv.lh a0, (a1), 2047
0xab,0x32,0x73,0x02 == cv.lh t0, (t1), t2
0x2b,0xb5,0xc5,0x02 == cv.lh a0, (a1), a2
0xab,0x32,0x73,0x0a == cv.lh t0, t2(t1)
0x2b,0xb5,0xc5,0x0a == cv.lh a0, a2(a1)
0x8b,0x52,0x03,0x00 == cv.lhu t0, (t1), 0
0x0b,0xd5,0xf5,0x7f == cv.lhu a0, (a1), 2047
0xab,0x32,0x73,0x12 == cv.lhu t0, (t1), t2
0x2b,0xb5,0xc5,0x12 == cv.lhu a0, (a1), a2
0xab,0x32,0x73,0x1a == cv.lhu t0, t2(t1)
0x2b,0xb5,0xc5,0x1a == cv.lhu a0, a2(a1)
0x8b,0x22,0x03,0x00 == cv.lw t0, (t1), 0
0x0b,0xa5,0xf5,0x7f == cv.lw a0, (a1), 2047
0xab,0x32,0x73,0x04 == cv.lw t0, (t1), t2
0x2b,0xb5,0xc5,0x04 == cv.lw a0, (a1), a2
0xab,0x32,0x73,0x0c == cv.lw t0, t2(t1)
0x2b,0xb5,0xc5,0x0c == cv.lw a0, a2(a1)
0x2b,0x00,0x53,0x00 == cv.sb t0, (t1), 0
0xab,0x8f,0xa5,0x7e == cv.sb a0, (a1), 2047
0xab,0x33,0x53,0x20 == cv.sb t0, (t1), t2
0x2b,0xb6,0xa5,0x20 == cv.sb a0, (a1), a2
0xab,0x33,0x53,0x28 == cv.sb t0, t2(t1)
0x2b,0xb6,0xa5,0x28 == cv.sb a0, a2(a1)
0x2b,0x10,0x53,0x00 == cv.sh t0, (t1), 0
0xab,0x9f,0xa5,0x7e == cv.sh a0, (a1), 2047
0xab,0x33,0x53,0x22 == cv.sh t0, (t1), t2
0x2b,0xb6,0xa5,0x22 == cv.sh a0, (a1), a2
0xab,0x33,0x53,0x2a == cv.sh t0, t2(t1)
0x2b,0xb6,0xa5,0x2a == cv.sh a0, a2(a1)
0x2b,0x20,0x53,0x00 == cv.sw t0, (t1), 0
0xab,0xaf,0xa5,0x7e == cv.sw a0, (a1), 2047
0xab,0x33,0x53,0x24 == cv.sw t0, (t1), t2
0x2b,0xb6,0xa5,0x24 == cv.sw a0, (a1), a2
0xab,0x33,0x53,0x2c == cv.sw t0, t2(t1)
0x2b,0xb6,0xa5,0x2c == cv.sw a0, a2(a1)

View file

@ -0,0 +1,881 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_XCVSIMD", None
0xfb,0x02,0x73,0x00 == cv.add.h t0, t1, t2
0x7b,0x8e,0xee,0x01 == cv.add.h t3, t4, t5
0x7b,0x85,0xc5,0x00 == cv.add.h a0, a1, a2
0x7b,0x84,0x24,0x01 == cv.add.h s0, s1, s2
0xfb,0x12,0x73,0x00 == cv.add.b t0, t1, t2
0x7b,0x9e,0xee,0x01 == cv.add.b t3, t4, t5
0x7b,0x95,0xc5,0x00 == cv.add.b a0, a1, a2
0x7b,0x94,0x24,0x01 == cv.add.b s0, s1, s2
0xfb,0x42,0x73,0x00 == cv.add.sc.h t0, t1, t2
0x7b,0xce,0xee,0x01 == cv.add.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x00 == cv.add.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x01 == cv.add.sc.h s0, s1, s2
0xfb,0x52,0x73,0x00 == cv.add.sc.b t0, t1, t2
0x7b,0xde,0xee,0x01 == cv.add.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x00 == cv.add.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x01 == cv.add.sc.b s0, s1, s2
0xfb,0x62,0x03,0x00 == cv.add.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x01 == cv.add.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x02 == cv.add.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x03 == cv.add.sci.h s0, s1, -1
0xfb,0x72,0x03,0x00 == cv.add.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x01 == cv.add.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x02 == cv.add.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x03 == cv.add.sci.b s0, s1, -1
0xfb,0x02,0x73,0x08 == cv.sub.h t0, t1, t2
0x7b,0x8e,0xee,0x09 == cv.sub.h t3, t4, t5
0x7b,0x85,0xc5,0x08 == cv.sub.h a0, a1, a2
0x7b,0x84,0x24,0x09 == cv.sub.h s0, s1, s2
0xfb,0x12,0x73,0x08 == cv.sub.b t0, t1, t2
0x7b,0x9e,0xee,0x09 == cv.sub.b t3, t4, t5
0x7b,0x95,0xc5,0x08 == cv.sub.b a0, a1, a2
0x7b,0x94,0x24,0x09 == cv.sub.b s0, s1, s2
0xfb,0x42,0x73,0x08 == cv.sub.sc.h t0, t1, t2
0x7b,0xce,0xee,0x09 == cv.sub.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x08 == cv.sub.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x09 == cv.sub.sc.h s0, s1, s2
0xfb,0x52,0x73,0x08 == cv.sub.sc.b t0, t1, t2
0x7b,0xde,0xee,0x09 == cv.sub.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x08 == cv.sub.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x09 == cv.sub.sc.b s0, s1, s2
0xfb,0x62,0x03,0x08 == cv.sub.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x09 == cv.sub.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x0a == cv.sub.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x0b == cv.sub.sci.h s0, s1, -1
0xfb,0x72,0x03,0x08 == cv.sub.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x09 == cv.sub.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x0a == cv.sub.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x0b == cv.sub.sci.b s0, s1, -1
0xfb,0x02,0x73,0x10 == cv.avg.h t0, t1, t2
0x7b,0x8e,0xee,0x11 == cv.avg.h t3, t4, t5
0x7b,0x85,0xc5,0x10 == cv.avg.h a0, a1, a2
0x7b,0x84,0x24,0x11 == cv.avg.h s0, s1, s2
0xfb,0x12,0x73,0x10 == cv.avg.b t0, t1, t2
0x7b,0x9e,0xee,0x11 == cv.avg.b t3, t4, t5
0x7b,0x95,0xc5,0x10 == cv.avg.b a0, a1, a2
0x7b,0x94,0x24,0x11 == cv.avg.b s0, s1, s2
0xfb,0x42,0x73,0x10 == cv.avg.sc.h t0, t1, t2
0x7b,0xce,0xee,0x11 == cv.avg.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x10 == cv.avg.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x11 == cv.avg.sc.h s0, s1, s2
0xfb,0x52,0x73,0x10 == cv.avg.sc.b t0, t1, t2
0x7b,0xde,0xee,0x11 == cv.avg.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x10 == cv.avg.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x11 == cv.avg.sc.b s0, s1, s2
0xfb,0x62,0x03,0x10 == cv.avg.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x11 == cv.avg.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x12 == cv.avg.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x13 == cv.avg.sci.h s0, s1, -1
0xfb,0x72,0x03,0x10 == cv.avg.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x11 == cv.avg.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x12 == cv.avg.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x13 == cv.avg.sci.b s0, s1, -1
0xfb,0x02,0x73,0x18 == cv.avgu.h t0, t1, t2
0x7b,0x8e,0xee,0x19 == cv.avgu.h t3, t4, t5
0x7b,0x85,0xc5,0x18 == cv.avgu.h a0, a1, a2
0x7b,0x84,0x24,0x19 == cv.avgu.h s0, s1, s2
0xfb,0x12,0x73,0x18 == cv.avgu.b t0, t1, t2
0x7b,0x9e,0xee,0x19 == cv.avgu.b t3, t4, t5
0x7b,0x95,0xc5,0x18 == cv.avgu.b a0, a1, a2
0x7b,0x94,0x24,0x19 == cv.avgu.b s0, s1, s2
0xfb,0x42,0x73,0x18 == cv.avgu.sc.h t0, t1, t2
0x7b,0xce,0xee,0x19 == cv.avgu.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x18 == cv.avgu.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x19 == cv.avgu.sc.h s0, s1, s2
0xfb,0x52,0x73,0x18 == cv.avgu.sc.b t0, t1, t2
0x7b,0xde,0xee,0x19 == cv.avgu.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x18 == cv.avgu.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x19 == cv.avgu.sc.b s0, s1, s2
0xfb,0x62,0x03,0x18 == cv.avgu.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x19 == cv.avgu.sci.h t3, t4, 32
0x7b,0xe5,0x35,0x1a == cv.avgu.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x1b == cv.avgu.sci.h s0, s1, 63
0xfb,0x72,0x03,0x18 == cv.avgu.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x19 == cv.avgu.sci.b t3, t4, 32
0x7b,0xf5,0x35,0x1a == cv.avgu.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x1b == cv.avgu.sci.b s0, s1, 63
0xfb,0x02,0x73,0x20 == cv.min.h t0, t1, t2
0x7b,0x8e,0xee,0x21 == cv.min.h t3, t4, t5
0x7b,0x85,0xc5,0x20 == cv.min.h a0, a1, a2
0x7b,0x84,0x24,0x21 == cv.min.h s0, s1, s2
0xfb,0x12,0x73,0x20 == cv.min.b t0, t1, t2
0x7b,0x9e,0xee,0x21 == cv.min.b t3, t4, t5
0x7b,0x95,0xc5,0x20 == cv.min.b a0, a1, a2
0x7b,0x94,0x24,0x21 == cv.min.b s0, s1, s2
0xfb,0x42,0x73,0x20 == cv.min.sc.h t0, t1, t2
0x7b,0xce,0xee,0x21 == cv.min.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x20 == cv.min.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x21 == cv.min.sc.h s0, s1, s2
0xfb,0x52,0x73,0x20 == cv.min.sc.b t0, t1, t2
0x7b,0xde,0xee,0x21 == cv.min.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x20 == cv.min.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x21 == cv.min.sc.b s0, s1, s2
0xfb,0x62,0x03,0x20 == cv.min.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x21 == cv.min.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x22 == cv.min.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x23 == cv.min.sci.h s0, s1, -1
0xfb,0x72,0x03,0x20 == cv.min.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x21 == cv.min.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x22 == cv.min.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x23 == cv.min.sci.b s0, s1, -1
0xfb,0x02,0x73,0x28 == cv.minu.h t0, t1, t2
0x7b,0x8e,0xee,0x29 == cv.minu.h t3, t4, t5
0x7b,0x85,0xc5,0x28 == cv.minu.h a0, a1, a2
0x7b,0x84,0x24,0x29 == cv.minu.h s0, s1, s2
0xfb,0x12,0x73,0x28 == cv.minu.b t0, t1, t2
0x7b,0x9e,0xee,0x29 == cv.minu.b t3, t4, t5
0x7b,0x95,0xc5,0x28 == cv.minu.b a0, a1, a2
0x7b,0x94,0x24,0x29 == cv.minu.b s0, s1, s2
0xfb,0x42,0x73,0x28 == cv.minu.sc.h t0, t1, t2
0x7b,0xce,0xee,0x29 == cv.minu.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x28 == cv.minu.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x29 == cv.minu.sc.h s0, s1, s2
0xfb,0x52,0x73,0x28 == cv.minu.sc.b t0, t1, t2
0x7b,0xde,0xee,0x29 == cv.minu.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x28 == cv.minu.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x29 == cv.minu.sc.b s0, s1, s2
0xfb,0x62,0x03,0x28 == cv.minu.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x29 == cv.minu.sci.h t3, t4, 32
0x7b,0xe5,0x35,0x2a == cv.minu.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x2b == cv.minu.sci.h s0, s1, 63
0xfb,0x72,0x03,0x28 == cv.minu.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x29 == cv.minu.sci.b t3, t4, 32
0x7b,0xf5,0x35,0x2a == cv.minu.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x2b == cv.minu.sci.b s0, s1, 63
0xfb,0x02,0x73,0x30 == cv.max.h t0, t1, t2
0x7b,0x8e,0xee,0x31 == cv.max.h t3, t4, t5
0x7b,0x85,0xc5,0x30 == cv.max.h a0, a1, a2
0x7b,0x84,0x24,0x31 == cv.max.h s0, s1, s2
0xfb,0x12,0x73,0x30 == cv.max.b t0, t1, t2
0x7b,0x9e,0xee,0x31 == cv.max.b t3, t4, t5
0x7b,0x95,0xc5,0x30 == cv.max.b a0, a1, a2
0x7b,0x94,0x24,0x31 == cv.max.b s0, s1, s2
0xfb,0x42,0x73,0x30 == cv.max.sc.h t0, t1, t2
0x7b,0xce,0xee,0x31 == cv.max.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x30 == cv.max.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x31 == cv.max.sc.h s0, s1, s2
0xfb,0x52,0x73,0x30 == cv.max.sc.b t0, t1, t2
0x7b,0xde,0xee,0x31 == cv.max.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x30 == cv.max.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x31 == cv.max.sc.b s0, s1, s2
0xfb,0x62,0x03,0x30 == cv.max.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x31 == cv.max.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x32 == cv.max.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x33 == cv.max.sci.h s0, s1, -1
0xfb,0x72,0x03,0x30 == cv.max.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x31 == cv.max.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x32 == cv.max.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x33 == cv.max.sci.b s0, s1, -1
0xfb,0x02,0x73,0x38 == cv.maxu.h t0, t1, t2
0x7b,0x8e,0xee,0x39 == cv.maxu.h t3, t4, t5
0x7b,0x85,0xc5,0x38 == cv.maxu.h a0, a1, a2
0x7b,0x84,0x24,0x39 == cv.maxu.h s0, s1, s2
0xfb,0x12,0x73,0x38 == cv.maxu.b t0, t1, t2
0x7b,0x9e,0xee,0x39 == cv.maxu.b t3, t4, t5
0x7b,0x95,0xc5,0x38 == cv.maxu.b a0, a1, a2
0x7b,0x94,0x24,0x39 == cv.maxu.b s0, s1, s2
0xfb,0x42,0x73,0x38 == cv.maxu.sc.h t0, t1, t2
0x7b,0xce,0xee,0x39 == cv.maxu.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x38 == cv.maxu.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x39 == cv.maxu.sc.h s0, s1, s2
0xfb,0x52,0x73,0x38 == cv.maxu.sc.b t0, t1, t2
0x7b,0xde,0xee,0x39 == cv.maxu.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x38 == cv.maxu.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x39 == cv.maxu.sc.b s0, s1, s2
0xfb,0x62,0x03,0x38 == cv.maxu.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x39 == cv.maxu.sci.h t3, t4, 32
0x7b,0xe5,0x35,0x3a == cv.maxu.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x3b == cv.maxu.sci.h s0, s1, 63
0xfb,0x72,0x03,0x38 == cv.maxu.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x39 == cv.maxu.sci.b t3, t4, 32
0x7b,0xf5,0x35,0x3a == cv.maxu.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x3b == cv.maxu.sci.b s0, s1, 63
0xfb,0x02,0x73,0x40 == cv.srl.h t0, t1, t2
0x7b,0x8e,0xee,0x41 == cv.srl.h t3, t4, t5
0x7b,0x85,0xc5,0x40 == cv.srl.h a0, a1, a2
0x7b,0x84,0x24,0x41 == cv.srl.h s0, s1, s2
0xfb,0x12,0x73,0x40 == cv.srl.b t0, t1, t2
0x7b,0x9e,0xee,0x41 == cv.srl.b t3, t4, t5
0x7b,0x95,0xc5,0x40 == cv.srl.b a0, a1, a2
0x7b,0x94,0x24,0x41 == cv.srl.b s0, s1, s2
0xfb,0x42,0x73,0x40 == cv.srl.sc.h t0, t1, t2
0x7b,0xce,0xee,0x41 == cv.srl.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x40 == cv.srl.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x41 == cv.srl.sc.h s0, s1, s2
0xfb,0x52,0x73,0x40 == cv.srl.sc.b t0, t1, t2
0x7b,0xde,0xee,0x41 == cv.srl.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x40 == cv.srl.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x41 == cv.srl.sc.b s0, s1, s2
0xfb,0x62,0x03,0x40 == cv.srl.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x40 == cv.srl.sci.h t3, t4, 0
0x7b,0xe5,0x35,0x42 == cv.srl.sci.h a0, a1, 7
0x7b,0xe4,0x74,0x42 == cv.srl.sci.h s0, s1, 15
0xfb,0x72,0x03,0x40 == cv.srl.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x40 == cv.srl.sci.b t3, t4, 0
0x7b,0xf5,0x35,0x42 == cv.srl.sci.b a0, a1, 7
0x7b,0xf4,0x34,0x42 == cv.srl.sci.b s0, s1, 7
0xfb,0x02,0x73,0x48 == cv.sra.h t0, t1, t2
0x7b,0x8e,0xee,0x49 == cv.sra.h t3, t4, t5
0x7b,0x85,0xc5,0x48 == cv.sra.h a0, a1, a2
0x7b,0x84,0x24,0x49 == cv.sra.h s0, s1, s2
0xfb,0x12,0x73,0x48 == cv.sra.b t0, t1, t2
0x7b,0x9e,0xee,0x49 == cv.sra.b t3, t4, t5
0x7b,0x95,0xc5,0x48 == cv.sra.b a0, a1, a2
0x7b,0x94,0x24,0x49 == cv.sra.b s0, s1, s2
0xfb,0x42,0x73,0x48 == cv.sra.sc.h t0, t1, t2
0x7b,0xce,0xee,0x49 == cv.sra.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x48 == cv.sra.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x49 == cv.sra.sc.h s0, s1, s2
0xfb,0x52,0x73,0x48 == cv.sra.sc.b t0, t1, t2
0x7b,0xde,0xee,0x49 == cv.sra.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x48 == cv.sra.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x49 == cv.sra.sc.b s0, s1, s2
0xfb,0x62,0x03,0x48 == cv.sra.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x48 == cv.sra.sci.h t3, t4, 0
0x7b,0xe5,0x35,0x4a == cv.sra.sci.h a0, a1, 7
0x7b,0xe4,0x74,0x4a == cv.sra.sci.h s0, s1, 15
0xfb,0x72,0x03,0x48 == cv.sra.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x48 == cv.sra.sci.b t3, t4, 0
0x7b,0xf5,0x35,0x4a == cv.sra.sci.b a0, a1, 7
0x7b,0xf4,0x34,0x4a == cv.sra.sci.b s0, s1, 7
0xfb,0x02,0x73,0x50 == cv.sll.h t0, t1, t2
0x7b,0x8e,0xee,0x51 == cv.sll.h t3, t4, t5
0x7b,0x85,0xc5,0x50 == cv.sll.h a0, a1, a2
0x7b,0x84,0x24,0x51 == cv.sll.h s0, s1, s2
0xfb,0x12,0x73,0x50 == cv.sll.b t0, t1, t2
0x7b,0x9e,0xee,0x51 == cv.sll.b t3, t4, t5
0x7b,0x95,0xc5,0x50 == cv.sll.b a0, a1, a2
0x7b,0x94,0x24,0x51 == cv.sll.b s0, s1, s2
0xfb,0x42,0x73,0x50 == cv.sll.sc.h t0, t1, t2
0x7b,0xce,0xee,0x51 == cv.sll.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x50 == cv.sll.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x51 == cv.sll.sc.h s0, s1, s2
0xfb,0x52,0x73,0x50 == cv.sll.sc.b t0, t1, t2
0x7b,0xde,0xee,0x51 == cv.sll.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x50 == cv.sll.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x51 == cv.sll.sc.b s0, s1, s2
0xfb,0x62,0x03,0x50 == cv.sll.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x50 == cv.sll.sci.h t3, t4, 0
0x7b,0xe5,0x35,0x52 == cv.sll.sci.h a0, a1, 7
0x7b,0xe4,0x74,0x52 == cv.sll.sci.h s0, s1, 15
0xfb,0x72,0x03,0x50 == cv.sll.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x50 == cv.sll.sci.b t3, t4, 0
0x7b,0xf5,0x35,0x52 == cv.sll.sci.b a0, a1, 7
0x7b,0xf4,0x34,0x52 == cv.sll.sci.b s0, s1, 7
0xfb,0x02,0x73,0x58 == cv.or.h t0, t1, t2
0x7b,0x8e,0xee,0x59 == cv.or.h t3, t4, t5
0x7b,0x85,0xc5,0x58 == cv.or.h a0, a1, a2
0x7b,0x84,0x24,0x59 == cv.or.h s0, s1, s2
0xfb,0x12,0x73,0x58 == cv.or.b t0, t1, t2
0x7b,0x9e,0xee,0x59 == cv.or.b t3, t4, t5
0x7b,0x95,0xc5,0x58 == cv.or.b a0, a1, a2
0x7b,0x94,0x24,0x59 == cv.or.b s0, s1, s2
0xfb,0x42,0x73,0x58 == cv.or.sc.h t0, t1, t2
0x7b,0xce,0xee,0x59 == cv.or.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x58 == cv.or.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x59 == cv.or.sc.h s0, s1, s2
0xfb,0x52,0x73,0x58 == cv.or.sc.b t0, t1, t2
0x7b,0xde,0xee,0x59 == cv.or.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x58 == cv.or.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x59 == cv.or.sc.b s0, s1, s2
0xfb,0x62,0x03,0x58 == cv.or.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x59 == cv.or.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x5a == cv.or.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x5b == cv.or.sci.h s0, s1, -1
0xfb,0x72,0x03,0x58 == cv.or.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x59 == cv.or.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x5a == cv.or.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x5b == cv.or.sci.b s0, s1, -1
0xfb,0x02,0x73,0x60 == cv.xor.h t0, t1, t2
0x7b,0x8e,0xee,0x61 == cv.xor.h t3, t4, t5
0x7b,0x85,0xc5,0x60 == cv.xor.h a0, a1, a2
0x7b,0x84,0x24,0x61 == cv.xor.h s0, s1, s2
0xfb,0x12,0x73,0x60 == cv.xor.b t0, t1, t2
0x7b,0x9e,0xee,0x61 == cv.xor.b t3, t4, t5
0x7b,0x95,0xc5,0x60 == cv.xor.b a0, a1, a2
0x7b,0x94,0x24,0x61 == cv.xor.b s0, s1, s2
0xfb,0x42,0x73,0x60 == cv.xor.sc.h t0, t1, t2
0x7b,0xce,0xee,0x61 == cv.xor.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x60 == cv.xor.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x61 == cv.xor.sc.h s0, s1, s2
0xfb,0x52,0x73,0x60 == cv.xor.sc.b t0, t1, t2
0x7b,0xde,0xee,0x61 == cv.xor.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x60 == cv.xor.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x61 == cv.xor.sc.b s0, s1, s2
0xfb,0x62,0x03,0x60 == cv.xor.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x61 == cv.xor.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x62 == cv.xor.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x63 == cv.xor.sci.h s0, s1, -1
0xfb,0x72,0x03,0x60 == cv.xor.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x61 == cv.xor.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x62 == cv.xor.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x63 == cv.xor.sci.b s0, s1, -1
0xfb,0x02,0x73,0x68 == cv.and.h t0, t1, t2
0x7b,0x8e,0xee,0x69 == cv.and.h t3, t4, t5
0x7b,0x85,0xc5,0x68 == cv.and.h a0, a1, a2
0x7b,0x84,0x24,0x69 == cv.and.h s0, s1, s2
0xfb,0x12,0x73,0x68 == cv.and.b t0, t1, t2
0x7b,0x9e,0xee,0x69 == cv.and.b t3, t4, t5
0x7b,0x95,0xc5,0x68 == cv.and.b a0, a1, a2
0x7b,0x94,0x24,0x69 == cv.and.b s0, s1, s2
0xfb,0x42,0x73,0x68 == cv.and.sc.h t0, t1, t2
0x7b,0xce,0xee,0x69 == cv.and.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x68 == cv.and.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x69 == cv.and.sc.h s0, s1, s2
0xfb,0x52,0x73,0x68 == cv.and.sc.b t0, t1, t2
0x7b,0xde,0xee,0x69 == cv.and.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x68 == cv.and.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x69 == cv.and.sc.b s0, s1, s2
0xfb,0x62,0x03,0x68 == cv.and.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x69 == cv.and.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x6a == cv.and.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x6b == cv.and.sci.h s0, s1, -1
0xfb,0x72,0x03,0x68 == cv.and.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x69 == cv.and.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x6a == cv.and.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x6b == cv.and.sci.b s0, s1, -1
0xfb,0x02,0x03,0x70 == cv.abs.h t0, t1
0x7b,0x8e,0x0e,0x70 == cv.abs.h t3, t4
0x7b,0x85,0x05,0x70 == cv.abs.h a0, a1
0x7b,0x84,0x04,0x70 == cv.abs.h s0, s1
0xfb,0x12,0x03,0x70 == cv.abs.b t0, t1
0x7b,0x9e,0x0e,0x70 == cv.abs.b t3, t4
0x7b,0x95,0x05,0x70 == cv.abs.b a0, a1
0x7b,0x94,0x04,0x70 == cv.abs.b s0, s1
0xfb,0x02,0x73,0x80 == cv.dotup.h t0, t1, t2
0x7b,0x8e,0xee,0x81 == cv.dotup.h t3, t4, t5
0x7b,0x85,0xc5,0x80 == cv.dotup.h a0, a1, a2
0x7b,0x84,0x24,0x81 == cv.dotup.h s0, s1, s2
0xfb,0x12,0x73,0x80 == cv.dotup.b t0, t1, t2
0x7b,0x9e,0xee,0x81 == cv.dotup.b t3, t4, t5
0x7b,0x95,0xc5,0x80 == cv.dotup.b a0, a1, a2
0x7b,0x94,0x24,0x81 == cv.dotup.b s0, s1, s2
0xfb,0x42,0x73,0x80 == cv.dotup.sc.h t0, t1, t2
0x7b,0xce,0xee,0x81 == cv.dotup.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x80 == cv.dotup.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x81 == cv.dotup.sc.h s0, s1, s2
0xfb,0x52,0x73,0x80 == cv.dotup.sc.b t0, t1, t2
0x7b,0xde,0xee,0x81 == cv.dotup.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x80 == cv.dotup.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x81 == cv.dotup.sc.b s0, s1, s2
0xfb,0x62,0x03,0x80 == cv.dotup.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x81 == cv.dotup.sci.h t3, t4, 32
0x7b,0xe5,0x35,0x82 == cv.dotup.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x83 == cv.dotup.sci.h s0, s1, 63
0xfb,0x72,0x03,0x80 == cv.dotup.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x81 == cv.dotup.sci.b t3, t4, 32
0x7b,0xf5,0x35,0x82 == cv.dotup.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x83 == cv.dotup.sci.b s0, s1, 63
0xfb,0x02,0x73,0x88 == cv.dotusp.h t0, t1, t2
0x7b,0x8e,0xee,0x89 == cv.dotusp.h t3, t4, t5
0x7b,0x85,0xc5,0x88 == cv.dotusp.h a0, a1, a2
0x7b,0x84,0x24,0x89 == cv.dotusp.h s0, s1, s2
0xfb,0x12,0x73,0x88 == cv.dotusp.b t0, t1, t2
0x7b,0x9e,0xee,0x89 == cv.dotusp.b t3, t4, t5
0x7b,0x95,0xc5,0x88 == cv.dotusp.b a0, a1, a2
0x7b,0x94,0x24,0x89 == cv.dotusp.b s0, s1, s2
0xfb,0x42,0x73,0x88 == cv.dotusp.sc.h t0, t1, t2
0x7b,0xce,0xee,0x89 == cv.dotusp.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x88 == cv.dotusp.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x89 == cv.dotusp.sc.h s0, s1, s2
0xfb,0x52,0x73,0x88 == cv.dotusp.sc.b t0, t1, t2
0x7b,0xde,0xee,0x89 == cv.dotusp.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x88 == cv.dotusp.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x89 == cv.dotusp.sc.b s0, s1, s2
0xfb,0x62,0x03,0x88 == cv.dotusp.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x89 == cv.dotusp.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x8a == cv.dotusp.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x8b == cv.dotusp.sci.h s0, s1, -1
0xfb,0x72,0x03,0x88 == cv.dotusp.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x89 == cv.dotusp.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x8a == cv.dotusp.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x8b == cv.dotusp.sci.b s0, s1, -1
0xfb,0x02,0x73,0x90 == cv.dotsp.h t0, t1, t2
0x7b,0x8e,0xee,0x91 == cv.dotsp.h t3, t4, t5
0x7b,0x85,0xc5,0x90 == cv.dotsp.h a0, a1, a2
0x7b,0x84,0x24,0x91 == cv.dotsp.h s0, s1, s2
0xfb,0x12,0x73,0x90 == cv.dotsp.b t0, t1, t2
0x7b,0x9e,0xee,0x91 == cv.dotsp.b t3, t4, t5
0x7b,0x95,0xc5,0x90 == cv.dotsp.b a0, a1, a2
0x7b,0x94,0x24,0x91 == cv.dotsp.b s0, s1, s2
0xfb,0x42,0x73,0x90 == cv.dotsp.sc.h t0, t1, t2
0x7b,0xce,0xee,0x91 == cv.dotsp.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x90 == cv.dotsp.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x91 == cv.dotsp.sc.h s0, s1, s2
0xfb,0x52,0x73,0x90 == cv.dotsp.sc.b t0, t1, t2
0x7b,0xde,0xee,0x91 == cv.dotsp.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x90 == cv.dotsp.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x91 == cv.dotsp.sc.b s0, s1, s2
0xfb,0x62,0x03,0x90 == cv.dotsp.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x91 == cv.dotsp.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x92 == cv.dotsp.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x93 == cv.dotsp.sci.h s0, s1, -1
0xfb,0x72,0x03,0x90 == cv.dotsp.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x91 == cv.dotsp.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x92 == cv.dotsp.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x93 == cv.dotsp.sci.b s0, s1, -1
0xfb,0x02,0x73,0x98 == cv.sdotup.h t0, t1, t2
0x7b,0x8e,0xee,0x99 == cv.sdotup.h t3, t4, t5
0x7b,0x85,0xc5,0x98 == cv.sdotup.h a0, a1, a2
0x7b,0x84,0x24,0x99 == cv.sdotup.h s0, s1, s2
0xfb,0x12,0x73,0x98 == cv.sdotup.b t0, t1, t2
0x7b,0x9e,0xee,0x99 == cv.sdotup.b t3, t4, t5
0x7b,0x95,0xc5,0x98 == cv.sdotup.b a0, a1, a2
0x7b,0x94,0x24,0x99 == cv.sdotup.b s0, s1, s2
0xfb,0x42,0x73,0x98 == cv.sdotup.sc.h t0, t1, t2
0x7b,0xce,0xee,0x99 == cv.sdotup.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x98 == cv.sdotup.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x99 == cv.sdotup.sc.h s0, s1, s2
0xfb,0x52,0x73,0x98 == cv.sdotup.sc.b t0, t1, t2
0x7b,0xde,0xee,0x99 == cv.sdotup.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x98 == cv.sdotup.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x99 == cv.sdotup.sc.b s0, s1, s2
0xfb,0x62,0x03,0x98 == cv.sdotup.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x99 == cv.sdotup.sci.h t3, t4, 32
0x7b,0xe5,0x35,0x9a == cv.sdotup.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x9b == cv.sdotup.sci.h s0, s1, 63
0xfb,0x72,0x03,0x98 == cv.sdotup.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x99 == cv.sdotup.sci.b t3, t4, 32
0x7b,0xf5,0x35,0x9a == cv.sdotup.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x9b == cv.sdotup.sci.b s0, s1, 63
0xfb,0x02,0x73,0xa0 == cv.sdotusp.h t0, t1, t2
0x7b,0x8e,0xee,0xa1 == cv.sdotusp.h t3, t4, t5
0x7b,0x85,0xc5,0xa0 == cv.sdotusp.h a0, a1, a2
0x7b,0x84,0x24,0xa1 == cv.sdotusp.h s0, s1, s2
0xfb,0x12,0x73,0xa0 == cv.sdotusp.b t0, t1, t2
0x7b,0x9e,0xee,0xa1 == cv.sdotusp.b t3, t4, t5
0x7b,0x95,0xc5,0xa0 == cv.sdotusp.b a0, a1, a2
0x7b,0x94,0x24,0xa1 == cv.sdotusp.b s0, s1, s2
0xfb,0x42,0x73,0xa0 == cv.sdotusp.sc.h t0, t1, t2
0x7b,0xce,0xee,0xa1 == cv.sdotusp.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0xa0 == cv.sdotusp.sc.h a0, a1, a2
0x7b,0xc4,0x24,0xa1 == cv.sdotusp.sc.h s0, s1, s2
0xfb,0x52,0x73,0xa0 == cv.sdotusp.sc.b t0, t1, t2
0x7b,0xde,0xee,0xa1 == cv.sdotusp.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0xa0 == cv.sdotusp.sc.b a0, a1, a2
0x7b,0xd4,0x24,0xa1 == cv.sdotusp.sc.b s0, s1, s2
0xfb,0x62,0x03,0xa0 == cv.sdotusp.sci.h t0, t1, 0
0x7b,0xee,0x0e,0xa1 == cv.sdotusp.sci.h t3, t4, -32
0x7b,0xe5,0x35,0xa2 == cv.sdotusp.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0xa3 == cv.sdotusp.sci.h s0, s1, -1
0xfb,0x72,0x03,0xa0 == cv.sdotusp.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0xa1 == cv.sdotusp.sci.b t3, t4, -32
0x7b,0xf5,0x35,0xa2 == cv.sdotusp.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0xa3 == cv.sdotusp.sci.b s0, s1, -1
0xfb,0x02,0x73,0xa8 == cv.sdotsp.h t0, t1, t2
0x7b,0x8e,0xee,0xa9 == cv.sdotsp.h t3, t4, t5
0x7b,0x85,0xc5,0xa8 == cv.sdotsp.h a0, a1, a2
0x7b,0x84,0x24,0xa9 == cv.sdotsp.h s0, s1, s2
0xfb,0x12,0x73,0xa8 == cv.sdotsp.b t0, t1, t2
0x7b,0x9e,0xee,0xa9 == cv.sdotsp.b t3, t4, t5
0x7b,0x95,0xc5,0xa8 == cv.sdotsp.b a0, a1, a2
0x7b,0x94,0x24,0xa9 == cv.sdotsp.b s0, s1, s2
0xfb,0x42,0x73,0xa8 == cv.sdotsp.sc.h t0, t1, t2
0x7b,0xce,0xee,0xa9 == cv.sdotsp.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0xa8 == cv.sdotsp.sc.h a0, a1, a2
0x7b,0xc4,0x24,0xa9 == cv.sdotsp.sc.h s0, s1, s2
0xfb,0x52,0x73,0xa8 == cv.sdotsp.sc.b t0, t1, t2
0x7b,0xde,0xee,0xa9 == cv.sdotsp.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0xa8 == cv.sdotsp.sc.b a0, a1, a2
0x7b,0xd4,0x24,0xa9 == cv.sdotsp.sc.b s0, s1, s2
0xfb,0x62,0x03,0xa8 == cv.sdotsp.sci.h t0, t1, 0
0x7b,0xee,0x0e,0xa9 == cv.sdotsp.sci.h t3, t4, -32
0x7b,0xe5,0x35,0xaa == cv.sdotsp.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0xab == cv.sdotsp.sci.h s0, s1, -1
0xfb,0x72,0x03,0xa8 == cv.sdotsp.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0xa9 == cv.sdotsp.sci.b t3, t4, -32
0x7b,0xf5,0x35,0xaa == cv.sdotsp.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0xab == cv.sdotsp.sci.b s0, s1, -1
0xfb,0x02,0x03,0xb8 == cv.extract.h t0, t1, 0
0x7b,0x8e,0x0e,0xb9 == cv.extract.h t3, t4, 32
0x7b,0x85,0x35,0xba == cv.extract.h a0, a1, 7
0x7b,0x84,0xf4,0xbb == cv.extract.h s0, s1, 63
0xfb,0x12,0x03,0xb8 == cv.extract.b t0, t1, 0
0x7b,0x9e,0x0e,0xb9 == cv.extract.b t3, t4, 32
0x7b,0x95,0x35,0xba == cv.extract.b a0, a1, 7
0x7b,0x94,0xf4,0xbb == cv.extract.b s0, s1, 63
0xfb,0x22,0x03,0xb8 == cv.extractu.h t0, t1, 0
0x7b,0xae,0x0e,0xb9 == cv.extractu.h t3, t4, 32
0x7b,0xa5,0x35,0xba == cv.extractu.h a0, a1, 7
0x7b,0xa4,0xf4,0xbb == cv.extractu.h s0, s1, 63
0xfb,0x32,0x03,0xb8 == cv.extractu.b t0, t1, 0
0x7b,0xbe,0x0e,0xb9 == cv.extractu.b t3, t4, 32
0x7b,0xb5,0x35,0xba == cv.extractu.b a0, a1, 7
0x7b,0xb4,0xf4,0xbb == cv.extractu.b s0, s1, 63
0xfb,0x42,0x03,0xb8 == cv.insert.h t0, t1, 0
0x7b,0xce,0x0e,0xb9 == cv.insert.h t3, t4, 32
0x7b,0xc5,0x35,0xba == cv.insert.h a0, a1, 7
0x7b,0xc4,0xf4,0xbb == cv.insert.h s0, s1, 63
0xfb,0x52,0x03,0xb8 == cv.insert.b t0, t1, 0
0x7b,0xde,0x0e,0xb9 == cv.insert.b t3, t4, 32
0x7b,0xd5,0x35,0xba == cv.insert.b a0, a1, 7
0x7b,0xd4,0xf4,0xbb == cv.insert.b s0, s1, 63
0xfb,0x02,0x73,0xc0 == cv.shuffle.h t0, t1, t2
0x7b,0x8e,0xee,0xc1 == cv.shuffle.h t3, t4, t5
0x7b,0x85,0xc5,0xc0 == cv.shuffle.h a0, a1, a2
0x7b,0x84,0x24,0xc1 == cv.shuffle.h s0, s1, s2
0xfb,0x12,0x73,0xc0 == cv.shuffle.b t0, t1, t2
0x7b,0x9e,0xee,0xc1 == cv.shuffle.b t3, t4, t5
0x7b,0x95,0xc5,0xc0 == cv.shuffle.b a0, a1, a2
0x7b,0x94,0x24,0xc1 == cv.shuffle.b s0, s1, s2
0xfb,0x62,0x03,0xc0 == cv.shuffle.sci.h t0, t1, 0
0x7b,0xee,0x0e,0xc1 == cv.shuffle.sci.h t3, t4, 32
0x7b,0xe5,0x35,0xc2 == cv.shuffle.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0xc3 == cv.shuffle.sci.h s0, s1, 63
0xfb,0x72,0x03,0xc0 == cv.shufflei0.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0xc1 == cv.shufflei0.sci.b t3, t4, 32
0x7b,0xf5,0x35,0xc2 == cv.shufflei0.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0xc3 == cv.shufflei0.sci.b s0, s1, 63
0xfb,0x72,0x03,0xc8 == cv.shufflei1.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0xc9 == cv.shufflei1.sci.b t3, t4, 32
0x7b,0xf5,0x35,0xca == cv.shufflei1.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0xcb == cv.shufflei1.sci.b s0, s1, 63
0xfb,0x72,0x03,0xd0 == cv.shufflei2.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0xd1 == cv.shufflei2.sci.b t3, t4, 32
0x7b,0xf5,0x35,0xd2 == cv.shufflei2.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0xd3 == cv.shufflei2.sci.b s0, s1, 63
0xfb,0x72,0x03,0xd8 == cv.shufflei3.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0xd9 == cv.shufflei3.sci.b t3, t4, 32
0x7b,0xf5,0x35,0xda == cv.shufflei3.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0xdb == cv.shufflei3.sci.b s0, s1, 63
0xfb,0x02,0x73,0xe0 == cv.shuffle2.h t0, t1, t2
0x7b,0x8e,0xee,0xe1 == cv.shuffle2.h t3, t4, t5
0x7b,0x85,0xc5,0xe0 == cv.shuffle2.h a0, a1, a2
0x7b,0x84,0x24,0xe1 == cv.shuffle2.h s0, s1, s2
0xfb,0x12,0x73,0xe0 == cv.shuffle2.b t0, t1, t2
0x7b,0x9e,0xee,0xe1 == cv.shuffle2.b t3, t4, t5
0x7b,0x95,0xc5,0xe0 == cv.shuffle2.b a0, a1, a2
0x7b,0x94,0x24,0xe1 == cv.shuffle2.b s0, s1, s2
0xfb,0x02,0x73,0xf0 == cv.pack t0, t1, t2
0x7b,0x8e,0xee,0xf1 == cv.pack t3, t4, t5
0x7b,0x85,0xc5,0xf0 == cv.pack a0, a1, a2
0x7b,0x84,0x24,0xf1 == cv.pack s0, s1, s2
0xfb,0x02,0x73,0xf2 == cv.pack.h t0, t1, t2
0x7b,0x8e,0xee,0xf3 == cv.pack.h t3, t4, t5
0x7b,0x85,0xc5,0xf2 == cv.pack.h a0, a1, a2
0x7b,0x84,0x24,0xf3 == cv.pack.h s0, s1, s2
0xfb,0x12,0x73,0xfa == cv.packhi.b t0, t1, t2
0x7b,0x9e,0xee,0xfb == cv.packhi.b t3, t4, t5
0x7b,0x95,0xc5,0xfa == cv.packhi.b a0, a1, a2
0x7b,0x94,0x24,0xfb == cv.packhi.b s0, s1, s2
0xfb,0x12,0x73,0xf8 == cv.packlo.b t0, t1, t2
0x7b,0x9e,0xee,0xf9 == cv.packlo.b t3, t4, t5
0x7b,0x95,0xc5,0xf8 == cv.packlo.b a0, a1, a2
0x7b,0x94,0x24,0xf9 == cv.packlo.b s0, s1, s2
0xfb,0x02,0x73,0x04 == cv.cmpeq.h t0, t1, t2
0x7b,0x8e,0xee,0x05 == cv.cmpeq.h t3, t4, t5
0x7b,0x85,0xc5,0x04 == cv.cmpeq.h a0, a1, a2
0x7b,0x84,0x24,0x05 == cv.cmpeq.h s0, s1, s2
0xfb,0x12,0x73,0x04 == cv.cmpeq.b t0, t1, t2
0x7b,0x9e,0xee,0x05 == cv.cmpeq.b t3, t4, t5
0x7b,0x95,0xc5,0x04 == cv.cmpeq.b a0, a1, a2
0x7b,0x94,0x24,0x05 == cv.cmpeq.b s0, s1, s2
0xfb,0x42,0x73,0x04 == cv.cmpeq.sc.h t0, t1, t2
0x7b,0xce,0xee,0x05 == cv.cmpeq.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x04 == cv.cmpeq.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x05 == cv.cmpeq.sc.h s0, s1, s2
0xfb,0x52,0x73,0x04 == cv.cmpeq.sc.b t0, t1, t2
0x7b,0xde,0xee,0x05 == cv.cmpeq.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x04 == cv.cmpeq.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x05 == cv.cmpeq.sc.b s0, s1, s2
0xfb,0x62,0x03,0x04 == cv.cmpeq.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x05 == cv.cmpeq.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x06 == cv.cmpeq.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x07 == cv.cmpeq.sci.h s0, s1, -1
0xfb,0x72,0x03,0x04 == cv.cmpeq.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x05 == cv.cmpeq.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x06 == cv.cmpeq.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x07 == cv.cmpeq.sci.b s0, s1, -1
0xfb,0x02,0x73,0x0c == cv.cmpne.h t0, t1, t2
0x7b,0x8e,0xee,0x0d == cv.cmpne.h t3, t4, t5
0x7b,0x85,0xc5,0x0c == cv.cmpne.h a0, a1, a2
0x7b,0x84,0x24,0x0d == cv.cmpne.h s0, s1, s2
0xfb,0x12,0x73,0x0c == cv.cmpne.b t0, t1, t2
0x7b,0x9e,0xee,0x0d == cv.cmpne.b t3, t4, t5
0x7b,0x95,0xc5,0x0c == cv.cmpne.b a0, a1, a2
0x7b,0x94,0x24,0x0d == cv.cmpne.b s0, s1, s2
0xfb,0x42,0x73,0x0c == cv.cmpne.sc.h t0, t1, t2
0x7b,0xce,0xee,0x0d == cv.cmpne.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x0c == cv.cmpne.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x0d == cv.cmpne.sc.h s0, s1, s2
0xfb,0x52,0x73,0x0c == cv.cmpne.sc.b t0, t1, t2
0x7b,0xde,0xee,0x0d == cv.cmpne.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x0c == cv.cmpne.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x0d == cv.cmpne.sc.b s0, s1, s2
0xfb,0x62,0x03,0x0c == cv.cmpne.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x0d == cv.cmpne.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x0e == cv.cmpne.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x0f == cv.cmpne.sci.h s0, s1, -1
0xfb,0x72,0x03,0x0c == cv.cmpne.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x0d == cv.cmpne.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x0e == cv.cmpne.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x0f == cv.cmpne.sci.b s0, s1, -1
0xfb,0x02,0x73,0x14 == cv.cmpgt.h t0, t1, t2
0x7b,0x8e,0xee,0x15 == cv.cmpgt.h t3, t4, t5
0x7b,0x85,0xc5,0x14 == cv.cmpgt.h a0, a1, a2
0x7b,0x84,0x24,0x15 == cv.cmpgt.h s0, s1, s2
0xfb,0x12,0x73,0x14 == cv.cmpgt.b t0, t1, t2
0x7b,0x9e,0xee,0x15 == cv.cmpgt.b t3, t4, t5
0x7b,0x95,0xc5,0x14 == cv.cmpgt.b a0, a1, a2
0x7b,0x94,0x24,0x15 == cv.cmpgt.b s0, s1, s2
0xfb,0x42,0x73,0x14 == cv.cmpgt.sc.h t0, t1, t2
0x7b,0xce,0xee,0x15 == cv.cmpgt.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x14 == cv.cmpgt.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x15 == cv.cmpgt.sc.h s0, s1, s2
0xfb,0x52,0x73,0x14 == cv.cmpgt.sc.b t0, t1, t2
0x7b,0xde,0xee,0x15 == cv.cmpgt.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x14 == cv.cmpgt.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x15 == cv.cmpgt.sc.b s0, s1, s2
0xfb,0x62,0x03,0x14 == cv.cmpgt.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x15 == cv.cmpgt.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x16 == cv.cmpgt.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x17 == cv.cmpgt.sci.h s0, s1, -1
0xfb,0x72,0x03,0x14 == cv.cmpgt.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x15 == cv.cmpgt.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x16 == cv.cmpgt.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x17 == cv.cmpgt.sci.b s0, s1, -1
0xfb,0x02,0x73,0x1c == cv.cmpge.h t0, t1, t2
0x7b,0x8e,0xee,0x1d == cv.cmpge.h t3, t4, t5
0x7b,0x85,0xc5,0x1c == cv.cmpge.h a0, a1, a2
0x7b,0x84,0x24,0x1d == cv.cmpge.h s0, s1, s2
0xfb,0x12,0x73,0x1c == cv.cmpge.b t0, t1, t2
0x7b,0x9e,0xee,0x1d == cv.cmpge.b t3, t4, t5
0x7b,0x95,0xc5,0x1c == cv.cmpge.b a0, a1, a2
0x7b,0x94,0x24,0x1d == cv.cmpge.b s0, s1, s2
0xfb,0x42,0x73,0x1c == cv.cmpge.sc.h t0, t1, t2
0x7b,0xce,0xee,0x1d == cv.cmpge.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x1c == cv.cmpge.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x1d == cv.cmpge.sc.h s0, s1, s2
0xfb,0x52,0x73,0x1c == cv.cmpge.sc.b t0, t1, t2
0x7b,0xde,0xee,0x1d == cv.cmpge.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x1c == cv.cmpge.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x1d == cv.cmpge.sc.b s0, s1, s2
0xfb,0x62,0x03,0x1c == cv.cmpge.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x1d == cv.cmpge.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x1e == cv.cmpge.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x1f == cv.cmpge.sci.h s0, s1, -1
0xfb,0x72,0x03,0x1c == cv.cmpge.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x1d == cv.cmpge.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x1e == cv.cmpge.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x1f == cv.cmpge.sci.b s0, s1, -1
0xfb,0x02,0x73,0x24 == cv.cmplt.h t0, t1, t2
0x7b,0x8e,0xee,0x25 == cv.cmplt.h t3, t4, t5
0x7b,0x85,0xc5,0x24 == cv.cmplt.h a0, a1, a2
0x7b,0x84,0x24,0x25 == cv.cmplt.h s0, s1, s2
0xfb,0x12,0x73,0x24 == cv.cmplt.b t0, t1, t2
0x7b,0x9e,0xee,0x25 == cv.cmplt.b t3, t4, t5
0x7b,0x95,0xc5,0x24 == cv.cmplt.b a0, a1, a2
0x7b,0x94,0x24,0x25 == cv.cmplt.b s0, s1, s2
0xfb,0x42,0x73,0x24 == cv.cmplt.sc.h t0, t1, t2
0x7b,0xce,0xee,0x25 == cv.cmplt.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x24 == cv.cmplt.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x25 == cv.cmplt.sc.h s0, s1, s2
0xfb,0x52,0x73,0x24 == cv.cmplt.sc.b t0, t1, t2
0x7b,0xde,0xee,0x25 == cv.cmplt.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x24 == cv.cmplt.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x25 == cv.cmplt.sc.b s0, s1, s2
0xfb,0x62,0x03,0x24 == cv.cmplt.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x25 == cv.cmplt.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x26 == cv.cmplt.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x27 == cv.cmplt.sci.h s0, s1, -1
0xfb,0x72,0x03,0x24 == cv.cmplt.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x25 == cv.cmplt.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x26 == cv.cmplt.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x27 == cv.cmplt.sci.b s0, s1, -1
0xfb,0x02,0x73,0x2c == cv.cmple.h t0, t1, t2
0x7b,0x8e,0xee,0x2d == cv.cmple.h t3, t4, t5
0x7b,0x85,0xc5,0x2c == cv.cmple.h a0, a1, a2
0x7b,0x84,0x24,0x2d == cv.cmple.h s0, s1, s2
0xfb,0x12,0x73,0x2c == cv.cmple.b t0, t1, t2
0x7b,0x9e,0xee,0x2d == cv.cmple.b t3, t4, t5
0x7b,0x95,0xc5,0x2c == cv.cmple.b a0, a1, a2
0x7b,0x94,0x24,0x2d == cv.cmple.b s0, s1, s2
0xfb,0x42,0x73,0x2c == cv.cmple.sc.h t0, t1, t2
0x7b,0xce,0xee,0x2d == cv.cmple.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x2c == cv.cmple.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x2d == cv.cmple.sc.h s0, s1, s2
0xfb,0x52,0x73,0x2c == cv.cmple.sc.b t0, t1, t2
0x7b,0xde,0xee,0x2d == cv.cmple.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x2c == cv.cmple.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x2d == cv.cmple.sc.b s0, s1, s2
0xfb,0x62,0x03,0x2c == cv.cmple.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x2d == cv.cmple.sci.h t3, t4, -32
0x7b,0xe5,0x35,0x2e == cv.cmple.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x2f == cv.cmple.sci.h s0, s1, -1
0xfb,0x72,0x03,0x2c == cv.cmple.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x2d == cv.cmple.sci.b t3, t4, -32
0x7b,0xf5,0x35,0x2e == cv.cmple.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x2f == cv.cmple.sci.b s0, s1, -1
0xfb,0x02,0x73,0x34 == cv.cmpgtu.h t0, t1, t2
0x7b,0x8e,0xee,0x35 == cv.cmpgtu.h t3, t4, t5
0x7b,0x85,0xc5,0x34 == cv.cmpgtu.h a0, a1, a2
0x7b,0x84,0x24,0x35 == cv.cmpgtu.h s0, s1, s2
0xfb,0x12,0x73,0x34 == cv.cmpgtu.b t0, t1, t2
0x7b,0x9e,0xee,0x35 == cv.cmpgtu.b t3, t4, t5
0x7b,0x95,0xc5,0x34 == cv.cmpgtu.b a0, a1, a2
0x7b,0x94,0x24,0x35 == cv.cmpgtu.b s0, s1, s2
0xfb,0x42,0x73,0x34 == cv.cmpgtu.sc.h t0, t1, t2
0x7b,0xce,0xee,0x35 == cv.cmpgtu.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x34 == cv.cmpgtu.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x35 == cv.cmpgtu.sc.h s0, s1, s2
0xfb,0x52,0x73,0x34 == cv.cmpgtu.sc.b t0, t1, t2
0x7b,0xde,0xee,0x35 == cv.cmpgtu.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x34 == cv.cmpgtu.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x35 == cv.cmpgtu.sc.b s0, s1, s2
0xfb,0x62,0x03,0x34 == cv.cmpgtu.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x35 == cv.cmpgtu.sci.h t3, t4, 32
0x7b,0xe5,0x35,0x36 == cv.cmpgtu.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x37 == cv.cmpgtu.sci.h s0, s1, 63
0xfb,0x72,0x03,0x34 == cv.cmpgtu.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x35 == cv.cmpgtu.sci.b t3, t4, 32
0x7b,0xf5,0x35,0x36 == cv.cmpgtu.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x37 == cv.cmpgtu.sci.b s0, s1, 63
0xfb,0x02,0x73,0x3c == cv.cmpgeu.h t0, t1, t2
0x7b,0x8e,0xee,0x3d == cv.cmpgeu.h t3, t4, t5
0x7b,0x85,0xc5,0x3c == cv.cmpgeu.h a0, a1, a2
0x7b,0x84,0x24,0x3d == cv.cmpgeu.h s0, s1, s2
0xfb,0x12,0x73,0x3c == cv.cmpgeu.b t0, t1, t2
0x7b,0x9e,0xee,0x3d == cv.cmpgeu.b t3, t4, t5
0x7b,0x95,0xc5,0x3c == cv.cmpgeu.b a0, a1, a2
0x7b,0x94,0x24,0x3d == cv.cmpgeu.b s0, s1, s2
0xfb,0x42,0x73,0x3c == cv.cmpgeu.sc.h t0, t1, t2
0x7b,0xce,0xee,0x3d == cv.cmpgeu.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x3c == cv.cmpgeu.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x3d == cv.cmpgeu.sc.h s0, s1, s2
0xfb,0x52,0x73,0x3c == cv.cmpgeu.sc.b t0, t1, t2
0x7b,0xde,0xee,0x3d == cv.cmpgeu.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x3c == cv.cmpgeu.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x3d == cv.cmpgeu.sc.b s0, s1, s2
0xfb,0x62,0x03,0x3c == cv.cmpgeu.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x3d == cv.cmpgeu.sci.h t3, t4, 32
0x7b,0xe5,0x35,0x3e == cv.cmpgeu.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x3f == cv.cmpgeu.sci.h s0, s1, 63
0xfb,0x72,0x03,0x3c == cv.cmpgeu.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x3d == cv.cmpgeu.sci.b t3, t4, 32
0x7b,0xf5,0x35,0x3e == cv.cmpgeu.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x3f == cv.cmpgeu.sci.b s0, s1, 63
0xfb,0x02,0x73,0x44 == cv.cmpltu.h t0, t1, t2
0x7b,0x8e,0xee,0x45 == cv.cmpltu.h t3, t4, t5
0x7b,0x85,0xc5,0x44 == cv.cmpltu.h a0, a1, a2
0x7b,0x84,0x24,0x45 == cv.cmpltu.h s0, s1, s2
0xfb,0x12,0x73,0x44 == cv.cmpltu.b t0, t1, t2
0x7b,0x9e,0xee,0x45 == cv.cmpltu.b t3, t4, t5
0x7b,0x95,0xc5,0x44 == cv.cmpltu.b a0, a1, a2
0x7b,0x94,0x24,0x45 == cv.cmpltu.b s0, s1, s2
0xfb,0x42,0x73,0x44 == cv.cmpltu.sc.h t0, t1, t2
0x7b,0xce,0xee,0x45 == cv.cmpltu.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x44 == cv.cmpltu.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x45 == cv.cmpltu.sc.h s0, s1, s2
0xfb,0x52,0x73,0x44 == cv.cmpltu.sc.b t0, t1, t2
0x7b,0xde,0xee,0x45 == cv.cmpltu.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x44 == cv.cmpltu.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x45 == cv.cmpltu.sc.b s0, s1, s2
0xfb,0x62,0x03,0x44 == cv.cmpltu.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x45 == cv.cmpltu.sci.h t3, t4, 32
0x7b,0xe5,0x35,0x46 == cv.cmpltu.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x47 == cv.cmpltu.sci.h s0, s1, 63
0xfb,0x72,0x03,0x44 == cv.cmpltu.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x45 == cv.cmpltu.sci.b t3, t4, 32
0x7b,0xf5,0x35,0x46 == cv.cmpltu.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x47 == cv.cmpltu.sci.b s0, s1, 63
0xfb,0x02,0x73,0x4c == cv.cmpleu.h t0, t1, t2
0x7b,0x8e,0xee,0x4d == cv.cmpleu.h t3, t4, t5
0x7b,0x85,0xc5,0x4c == cv.cmpleu.h a0, a1, a2
0x7b,0x84,0x24,0x4d == cv.cmpleu.h s0, s1, s2
0xfb,0x12,0x73,0x4c == cv.cmpleu.b t0, t1, t2
0x7b,0x9e,0xee,0x4d == cv.cmpleu.b t3, t4, t5
0x7b,0x95,0xc5,0x4c == cv.cmpleu.b a0, a1, a2
0x7b,0x94,0x24,0x4d == cv.cmpleu.b s0, s1, s2
0xfb,0x42,0x73,0x4c == cv.cmpleu.sc.h t0, t1, t2
0x7b,0xce,0xee,0x4d == cv.cmpleu.sc.h t3, t4, t5
0x7b,0xc5,0xc5,0x4c == cv.cmpleu.sc.h a0, a1, a2
0x7b,0xc4,0x24,0x4d == cv.cmpleu.sc.h s0, s1, s2
0xfb,0x52,0x73,0x4c == cv.cmpleu.sc.b t0, t1, t2
0x7b,0xde,0xee,0x4d == cv.cmpleu.sc.b t3, t4, t5
0x7b,0xd5,0xc5,0x4c == cv.cmpleu.sc.b a0, a1, a2
0x7b,0xd4,0x24,0x4d == cv.cmpleu.sc.b s0, s1, s2
0xfb,0x62,0x03,0x4c == cv.cmpleu.sci.h t0, t1, 0
0x7b,0xee,0x0e,0x4d == cv.cmpleu.sci.h t3, t4, 32
0x7b,0xe5,0x35,0x4e == cv.cmpleu.sci.h a0, a1, 7
0x7b,0xe4,0xf4,0x4f == cv.cmpleu.sci.h s0, s1, 63
0xfb,0x72,0x03,0x4c == cv.cmpleu.sci.b t0, t1, 0
0x7b,0xfe,0x0e,0x4d == cv.cmpleu.sci.b t3, t4, 32
0x7b,0xf5,0x35,0x4e == cv.cmpleu.sci.b a0, a1, 7
0x7b,0xf4,0xf4,0x4f == cv.cmpleu.sci.b s0, s1, 63
0xfb,0x02,0x73,0x54 == cv.cplxmul.r t0, t1, t2
0x7b,0x8e,0xee,0x55 == cv.cplxmul.r t3, t4, t5
0x7b,0x85,0xc5,0x54 == cv.cplxmul.r a0, a1, a2
0x7b,0x84,0x24,0x55 == cv.cplxmul.r s0, s1, s2
0xfb,0x02,0x73,0x56 == cv.cplxmul.i t0, t1, t2
0x7b,0x8e,0xee,0x57 == cv.cplxmul.i t3, t4, t5
0x7b,0x85,0xc5,0x56 == cv.cplxmul.i a0, a1, a2
0x7b,0x84,0x24,0x57 == cv.cplxmul.i s0, s1, s2
0xfb,0x22,0x73,0x54 == cv.cplxmul.r.div2 t0, t1, t2
0x7b,0xae,0xee,0x55 == cv.cplxmul.r.div2 t3, t4, t5
0x7b,0xa5,0xc5,0x54 == cv.cplxmul.r.div2 a0, a1, a2
0x7b,0xa4,0x24,0x55 == cv.cplxmul.r.div2 s0, s1, s2
0xfb,0x22,0x73,0x56 == cv.cplxmul.i.div2 t0, t1, t2
0x7b,0xae,0xee,0x57 == cv.cplxmul.i.div2 t3, t4, t5
0x7b,0xa5,0xc5,0x56 == cv.cplxmul.i.div2 a0, a1, a2
0x7b,0xa4,0x24,0x57 == cv.cplxmul.i.div2 s0, s1, s2
0xfb,0x42,0x73,0x54 == cv.cplxmul.r.div4 t0, t1, t2
0x7b,0xce,0xee,0x55 == cv.cplxmul.r.div4 t3, t4, t5
0x7b,0xc5,0xc5,0x54 == cv.cplxmul.r.div4 a0, a1, a2
0x7b,0xc4,0x24,0x55 == cv.cplxmul.r.div4 s0, s1, s2
0xfb,0x42,0x73,0x56 == cv.cplxmul.i.div4 t0, t1, t2
0x7b,0xce,0xee,0x57 == cv.cplxmul.i.div4 t3, t4, t5
0x7b,0xc5,0xc5,0x56 == cv.cplxmul.i.div4 a0, a1, a2
0x7b,0xc4,0x24,0x57 == cv.cplxmul.i.div4 s0, s1, s2
0xfb,0x62,0x73,0x54 == cv.cplxmul.r.div8 t0, t1, t2
0x7b,0xee,0xee,0x55 == cv.cplxmul.r.div8 t3, t4, t5
0x7b,0xe5,0xc5,0x54 == cv.cplxmul.r.div8 a0, a1, a2
0x7b,0xe4,0x24,0x55 == cv.cplxmul.r.div8 s0, s1, s2
0xfb,0x62,0x73,0x56 == cv.cplxmul.i.div8 t0, t1, t2
0x7b,0xee,0xee,0x57 == cv.cplxmul.i.div8 t3, t4, t5
0x7b,0xe5,0xc5,0x56 == cv.cplxmul.i.div8 a0, a1, a2
0x7b,0xe4,0x24,0x57 == cv.cplxmul.i.div8 s0, s1, s2
0xfb,0x02,0x03,0x5c == cv.cplxconj t0, t1
0x7b,0x8e,0x0e,0x5c == cv.cplxconj t3, t4
0x7b,0x85,0x05,0x5c == cv.cplxconj a0, a1
0x7b,0x84,0x04,0x5c == cv.cplxconj s0, s1
0xfb,0x02,0x73,0x64 == cv.subrotmj t0, t1, t2
0x7b,0x8e,0xee,0x65 == cv.subrotmj t3, t4, t5
0x7b,0x85,0xc5,0x64 == cv.subrotmj a0, a1, a2
0x7b,0x84,0x24,0x65 == cv.subrotmj s0, s1, s2
0xfb,0x22,0x73,0x64 == cv.subrotmj.div2 t0, t1, t2
0x7b,0xae,0xee,0x65 == cv.subrotmj.div2 t3, t4, t5
0x7b,0xa5,0xc5,0x64 == cv.subrotmj.div2 a0, a1, a2
0x7b,0xa4,0x24,0x65 == cv.subrotmj.div2 s0, s1, s2
0xfb,0x42,0x73,0x64 == cv.subrotmj.div4 t0, t1, t2
0x7b,0xce,0xee,0x65 == cv.subrotmj.div4 t3, t4, t5
0x7b,0xc5,0xc5,0x64 == cv.subrotmj.div4 a0, a1, a2
0x7b,0xc4,0x24,0x65 == cv.subrotmj.div4 s0, s1, s2
0xfb,0x62,0x73,0x64 == cv.subrotmj.div8 t0, t1, t2
0x7b,0xee,0xee,0x65 == cv.subrotmj.div8 t3, t4, t5
0x7b,0xe5,0xc5,0x64 == cv.subrotmj.div8 a0, a1, a2
0x7b,0xe4,0x24,0x65 == cv.subrotmj.div8 s0, s1, s2
0xfb,0x22,0x73,0x6c == cv.add.div2 t0, t1, t2
0x7b,0xae,0xee,0x6d == cv.add.div2 t3, t4, t5
0x7b,0xa5,0xc5,0x6c == cv.add.div2 a0, a1, a2
0x7b,0xa4,0x24,0x6d == cv.add.div2 s0, s1, s2
0xfb,0x42,0x73,0x6c == cv.add.div4 t0, t1, t2
0x7b,0xce,0xee,0x6d == cv.add.div4 t3, t4, t5
0x7b,0xc5,0xc5,0x6c == cv.add.div4 a0, a1, a2
0x7b,0xc4,0x24,0x6d == cv.add.div4 s0, s1, s2
0xfb,0x62,0x73,0x6c == cv.add.div8 t0, t1, t2
0x7b,0xee,0xee,0x6d == cv.add.div8 t3, t4, t5
0x7b,0xe5,0xc5,0x6c == cv.add.div8 a0, a1, a2
0x7b,0xe4,0x24,0x6d == cv.add.div8 s0, s1, s2
0xfb,0x22,0x73,0x74 == cv.sub.div2 t0, t1, t2
0x7b,0xae,0xee,0x75 == cv.sub.div2 t3, t4, t5
0x7b,0xa5,0xc5,0x74 == cv.sub.div2 a0, a1, a2
0x7b,0xa4,0x24,0x75 == cv.sub.div2 s0, s1, s2
0xfb,0x42,0x73,0x74 == cv.sub.div4 t0, t1, t2
0x7b,0xce,0xee,0x75 == cv.sub.div4 t3, t4, t5
0x7b,0xc5,0xc5,0x74 == cv.sub.div4 a0, a1, a2
0x7b,0xc4,0x24,0x75 == cv.sub.div4 s0, s1, s2
0xfb,0x62,0x73,0x74 == cv.sub.div8 t0, t1, t2
0x7b,0xee,0xee,0x75 == cv.sub.div8 t3, t4, t5
0x7b,0xe5,0xc5,0x74 == cv.sub.div8 a0, a1, a2
0x7b,0xe4,0x24,0x75 == cv.sub.div8 s0, s1, s2

View file

@ -0,0 +1,5 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_XTHEADBA", None
0x8b,0x12,0x73,0x00 == th.addsl t0, t1, t2, 0
0x8b,0x12,0x73,0x02 == th.addsl t0, t1, t2, 1
0x8b,0x12,0x73,0x04 == th.addsl t0, t1, t2, 2
0x8b,0x12,0x73,0x06 == th.addsl t0, t1, t2, 3

View file

@ -0,0 +1,15 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_XTHEADVDOT", None
0x0b,0x64,0x4a,0x88 == th.vmaqau.vv v8, v20, v4, v0.t
0x0b,0x64,0x4a,0x8a == th.vmaqau.vv v8, v20, v4
0x0b,0x64,0x45,0x8c == th.vmaqau.vx v8, a0, v4, v0.t
0x0b,0x64,0x45,0x8e == th.vmaqau.vx v8, a0, v4
0x0b,0x64,0x4a,0x80 == th.vmaqa.vv v8, v20, v4, v0.t
0x0b,0x64,0x4a,0x82 == th.vmaqa.vv v8, v20, v4
0x0b,0x64,0x45,0x84 == th.vmaqa.vx v8, a0, v4, v0.t
0x0b,0x64,0x45,0x86 == th.vmaqa.vx v8, a0, v4
0x0b,0x64,0x4a,0x90 == th.vmaqasu.vv v8, v20, v4, v0.t
0x0b,0x64,0x4a,0x92 == th.vmaqasu.vv v8, v20, v4
0x0b,0x64,0x45,0x94 == th.vmaqasu.vx v8, a0, v4, v0.t
0x0b,0x64,0x45,0x96 == th.vmaqasu.vx v8, a0, v4
0x0b,0x64,0x45,0x9c == th.vmaqaus.vx v8, a0, v4, v0.t
0x0b,0x64,0x45,0x9e == th.vmaqaus.vx v8, a0, v4

View file

@ -0,0 +1,5 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64", None
0x7b,0x60,0x00,0x00 == vt.maskc zero, zero, zero
0x7b,0x70,0x00,0x00 == vt.maskcn zero, zero, zero
0xfb,0x60,0x31,0x00 == vt.maskc ra, sp, gp
0xfb,0x70,0x31,0x00 == vt.maskcn ra, sp, gp

View file

@ -0,0 +1,3 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32", None
0x73,0x00,0xd0,0x00 == wrs.nto
0x73,0x00,0xd0,0x01 == wrs.sto

View file

@ -0,0 +1,60 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x04,0x4a,0x00 == vadd.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x02 == vadd.vv v8, v4, v20
0x57,0x44,0x45,0x00 == vadd.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x02 == vadd.vx v8, v4, a0
0x57,0xb4,0x47,0x00 == vadd.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x02 == vadd.vi v8, v4, 15
0x57,0x24,0x4a,0xc0 == vwaddu.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0xc2 == vwaddu.vv v8, v4, v20
0x57,0x64,0x45,0xc0 == vwaddu.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0xc2 == vwaddu.vx v8, v4, a0
0x57,0x24,0x4a,0xc4 == vwadd.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0xc6 == vwadd.vv v8, v4, v20
0x57,0x64,0x45,0xc4 == vwadd.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0xc6 == vwadd.vx v8, v4, a0
0x57,0x24,0x4a,0xd0 == vwaddu.wv v8, v4, v20, v0.t
0x57,0x24,0x4a,0xd2 == vwaddu.wv v8, v4, v20
0x57,0x64,0x45,0xd0 == vwaddu.wx v8, v4, a0, v0.t
0x57,0x64,0x45,0xd2 == vwaddu.wx v8, v4, a0
0x57,0x24,0x4a,0xd4 == vwadd.wv v8, v4, v20, v0.t
0x57,0x24,0x4a,0xd6 == vwadd.wv v8, v4, v20
0x57,0x64,0x45,0xd4 == vwadd.wx v8, v4, a0, v0.t
0x57,0x64,0x45,0xd6 == vwadd.wx v8, v4, a0
0x57,0x04,0x4a,0x40 == vadc.vvm v8, v4, v20, v0
0x57,0x02,0x4a,0x40 == vadc.vvm v4, v4, v20, v0
0x57,0x04,0x44,0x40 == vadc.vvm v8, v4, v8, v0
0x57,0x44,0x45,0x40 == vadc.vxm v8, v4, a0, v0
0x57,0xb4,0x47,0x40 == vadc.vim v8, v4, 15, v0
0x57,0x04,0x4a,0x44 == vmadc.vvm v8, v4, v20, v0
0x57,0x02,0x4a,0x44 == vmadc.vvm v4, v4, v20, v0
0x57,0x04,0x44,0x44 == vmadc.vvm v8, v4, v8, v0
0x57,0x44,0x45,0x44 == vmadc.vxm v8, v4, a0, v0
0x57,0xb4,0x47,0x44 == vmadc.vim v8, v4, 15, v0
0x57,0x04,0x4a,0x46 == vmadc.vv v8, v4, v20
0x57,0x44,0x45,0x46 == vmadc.vx v8, v4, a0
0x57,0xb4,0x47,0x46 == vmadc.vi v8, v4, 15
0x57,0x04,0x4a,0x80 == vsaddu.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x82 == vsaddu.vv v8, v4, v20
0x57,0x44,0x45,0x80 == vsaddu.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x82 == vsaddu.vx v8, v4, a0
0x57,0xb4,0x47,0x80 == vsaddu.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x82 == vsaddu.vi v8, v4, 15
0x57,0x04,0x4a,0x84 == vsadd.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x86 == vsadd.vv v8, v4, v20
0x57,0x44,0x45,0x84 == vsadd.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x86 == vsadd.vx v8, v4, a0
0x57,0xb4,0x47,0x84 == vsadd.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x86 == vsadd.vi v8, v4, 15
0x57,0x24,0x4a,0x24 == vaadd.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0x26 == vaadd.vv v8, v4, v20
0x57,0x64,0x45,0x24 == vaadd.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x26 == vaadd.vx v8, v4, a0
0x57,0x24,0x4a,0x20 == vaaddu.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0x22 == vaaddu.vv v8, v4, v20
0x57,0x64,0x45,0x20 == vaaddu.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x22 == vaaddu.vx v8, v4, a0
0x57,0x64,0x40,0xc4 == vwcvt.x.x.v v8, v4, v0.t
0x57,0x64,0x40,0xc6 == vwcvt.x.x.v v8, v4
0x57,0x64,0x40,0xc0 == vwcvtu.x.x.v v8, v4, v0.t
0x57,0x64,0x40,0xc2 == vwcvtu.x.x.v v8, v4

View file

@ -0,0 +1,7 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x04,0x4a,0x24 == vand.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x26 == vand.vv v8, v4, v20
0x57,0x44,0x45,0x24 == vand.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x26 == vand.vx v8, v4, a0
0x57,0xb4,0x47,0x24 == vand.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x26 == vand.vi v8, v4, 15

View file

@ -0,0 +1,13 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x04,0x4a,0xb8 == vnclipu.wv v8, v4, v20, v0.t
0x57,0x04,0x4a,0xba == vnclipu.wv v8, v4, v20
0x57,0x44,0x45,0xb8 == vnclipu.wx v8, v4, a0, v0.t
0x57,0x44,0x45,0xba == vnclipu.wx v8, v4, a0
0x57,0xb4,0x4f,0xb8 == vnclipu.wi v8, v4, 31, v0.t
0x57,0xb4,0x4f,0xba == vnclipu.wi v8, v4, 31
0x57,0x04,0x4a,0xbc == vnclip.wv v8, v4, v20, v0.t
0x57,0x04,0x4a,0xbe == vnclip.wv v8, v4, v20
0x57,0x44,0x45,0xbc == vnclip.wx v8, v4, a0, v0.t
0x57,0x44,0x45,0xbe == vnclip.wx v8, v4, a0
0x57,0xb4,0x4f,0xbc == vnclip.wi v8, v4, 31, v0.t
0x57,0xb4,0x4f,0xbe == vnclip.wi v8, v4, 31

View file

@ -0,0 +1,58 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x00,0x4a,0x6c == vmslt.vv v0, v4, v20, v0.t
0x57,0x04,0x4a,0x60 == vmseq.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x62 == vmseq.vv v8, v4, v20
0x57,0x44,0x45,0x60 == vmseq.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x62 == vmseq.vx v8, v4, a0
0x57,0xb4,0x47,0x60 == vmseq.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x62 == vmseq.vi v8, v4, 15
0x57,0x04,0x4a,0x64 == vmsne.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x66 == vmsne.vv v8, v4, v20
0x57,0x44,0x45,0x64 == vmsne.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x66 == vmsne.vx v8, v4, a0
0x57,0xb4,0x47,0x64 == vmsne.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x66 == vmsne.vi v8, v4, 15
0x57,0x04,0x4a,0x68 == vmsltu.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x6a == vmsltu.vv v8, v4, v20
0x57,0x44,0x45,0x68 == vmsltu.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x6a == vmsltu.vx v8, v4, a0
0x57,0x04,0x4a,0x6c == vmslt.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x6e == vmslt.vv v8, v4, v20
0x57,0x44,0x45,0x6c == vmslt.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x6e == vmslt.vx v8, v4, a0
0x57,0x04,0x4a,0x70 == vmsleu.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x72 == vmsleu.vv v8, v4, v20
0x57,0x44,0x45,0x70 == vmsleu.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x72 == vmsleu.vx v8, v4, a0
0x57,0xb4,0x47,0x70 == vmsleu.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x72 == vmsleu.vi v8, v4, 15
0x57,0x04,0x4a,0x74 == vmsle.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x76 == vmsle.vv v8, v4, v20
0x57,0x44,0x45,0x74 == vmsle.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x76 == vmsle.vx v8, v4, a0
0x57,0xb4,0x47,0x74 == vmsle.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x76 == vmsle.vi v8, v4, 15
0x57,0x44,0x45,0x78 == vmsgtu.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x7a == vmsgtu.vx v8, v4, a0
0x57,0xb4,0x47,0x78 == vmsgtu.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x7a == vmsgtu.vi v8, v4, 15
0x57,0x44,0x45,0x7c == vmsgt.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x7e == vmsgt.vx v8, v4, a0
0x57,0xb4,0x47,0x7c == vmsgt.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x7e == vmsgt.vi v8, v4, 15
0x57,0x04,0x42,0x64 == vmsne.vv v8, v4, v4, v0.t
0x57,0x04,0x42,0x66 == vmsne.vv v8, v4, v4
0x57,0x04,0x42,0x60 == vmseq.vv v8, v4, v4, v0.t
0x57,0x04,0x42,0x62 == vmseq.vv v8, v4, v4
0x57,0x24,0x84,0x76 == vmnot.m v8, v8
0x57,0x40,0x45,0x6e == vmslt.vx v0, v4, a0
0x57,0x20,0x00,0x76 == vmnot.m v0, v0
0x57,0x24,0x80,0x6e == vmxor.mm v8, v8, v0
0x57,0x41,0x45,0x6a == vmsltu.vx v2, v4, a0
0x57,0x20,0x01,0x62 == vmandn.mm v0, v0, v2
0x57,0x41,0x45,0x6e == vmslt.vx v2, v4, a0
0x57,0x21,0x01,0x62 == vmandn.mm v2, v0, v2
0xd7,0x24,0x90,0x62 == vmandn.mm v9, v9, v0
0xd7,0xa4,0x24,0x6a == vmor.mm v9, v2, v9
0x57,0x24,0x80,0x62 == vmandn.mm v8, v8, v0
0x57,0x24,0x24,0x6a == vmor.mm v8, v2, v8

View file

@ -0,0 +1,2 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_C", None
0xfd,0x2f == jal 2046

View file

@ -0,0 +1,5 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_C"|"CS_MODE_RISCV_D", None
0x06,0x20 == fld ft0, 64(sp)
0x82,0xa0 == fsd ft0, 64(sp)
0x60,0x3c == fld fs0, 248(s0)
0x60,0xbc == fsd fs0, 248(s0)

View file

@ -0,0 +1,5 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_C"|"CS_MODE_RISCV_F", None
0x76,0x70 == flw ft0, 124(sp)
0x82,0xfe == fsw ft0, 124(sp)
0x60,0x7c == flw fs0, 124(s0)
0x60,0xfc == fsw fs0, 124(s0)

View file

@ -0,0 +1,30 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_C", None
0x2e,0x85 == mv a0, a1
0xe0,0x1f == addi s0, sp, 1020
0xe0,0x5f == lw s0, 124(a5)
0xe0,0xdf == sw s0, 124(a5)
0x01,0x00 == nop
0x81,0x10 == addi ra, ra, -32
0x85,0x50 == li ra, -31
0x39,0x71 == addi sp, sp, -64
0xfd,0x61 == lui gp, 31
0x7d,0x80 == srli s0, s0, 31
0x7d,0x84 == srai s0, s0, 31
0x7d,0x88 == andi s0, s0, 31
0x1d,0x8c == sub s0, s0, a5
0x3d,0x8c == xor s0, s0, a5
0x5d,0x8c == or s0, s0, a5
0x45,0x8c == or s0, s0, s1
0x7d,0x8c == and s0, s0, a5
0x01,0xb0 == j -2048
0x01,0xd0 == beqz s0, -256
0x7d,0xec == bnez s0, 254
0x7e,0x04 == slli s0, s0, 31
0xfe,0x50 == lw ra, 252(sp)
0x82,0x80 == ret
0x92,0x80 == mv ra, tp
0x02,0x90 == ebreak
0x02,0x94 == jalr s0
0x3e,0x94 == add s0, s0, a5
0x82,0xdf == sw zero, 252(sp)
0x00,0x00 == unimp

View file

@ -0,0 +1,8 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_C", None
0xe0,0x7f == ld s0, 248(a5)
0xa0,0xe3 == sd s0, 64(a5)
0x7d,0x22 == addiw tp, tp, 31
0x1d,0x9c == subw s0, s0, a5
0x3d,0x9c == addw s0, s0, a5
0xee,0x70 == ld ra, 248(sp)
0xa2,0xe0 == sd s0, 64(sp)

View file

@ -0,0 +1,3 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_EXPERIMENTAL_ZICFISS", None
0x81,0x62 == c.sspopchk t0
0x81,0x60 == c.sspush ra

View file

@ -0,0 +1,44 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x14,0x40,0x48 == vfcvt.xu.f.v v8, v4, v0.t
0x57,0x14,0x40,0x4a == vfcvt.xu.f.v v8, v4
0x57,0x94,0x40,0x48 == vfcvt.x.f.v v8, v4, v0.t
0x57,0x94,0x40,0x4a == vfcvt.x.f.v v8, v4
0x57,0x14,0x41,0x48 == vfcvt.f.xu.v v8, v4, v0.t
0x57,0x14,0x41,0x4a == vfcvt.f.xu.v v8, v4
0x57,0x94,0x41,0x48 == vfcvt.f.x.v v8, v4, v0.t
0x57,0x94,0x41,0x4a == vfcvt.f.x.v v8, v4
0x57,0x14,0x43,0x48 == vfcvt.rtz.xu.f.v v8, v4, v0.t
0x57,0x14,0x43,0x4a == vfcvt.rtz.xu.f.v v8, v4
0x57,0x94,0x43,0x48 == vfcvt.rtz.x.f.v v8, v4, v0.t
0x57,0x94,0x43,0x4a == vfcvt.rtz.x.f.v v8, v4
0x57,0x14,0x44,0x48 == vfwcvt.xu.f.v v8, v4, v0.t
0x57,0x14,0x44,0x4a == vfwcvt.xu.f.v v8, v4
0x57,0x94,0x44,0x48 == vfwcvt.x.f.v v8, v4, v0.t
0x57,0x94,0x44,0x4a == vfwcvt.x.f.v v8, v4
0x57,0x14,0x45,0x48 == vfwcvt.f.xu.v v8, v4, v0.t
0x57,0x14,0x45,0x4a == vfwcvt.f.xu.v v8, v4
0x57,0x94,0x45,0x48 == vfwcvt.f.x.v v8, v4, v0.t
0x57,0x94,0x45,0x4a == vfwcvt.f.x.v v8, v4
0x57,0x14,0x46,0x48 == vfwcvt.f.f.v v8, v4, v0.t
0x57,0x14,0x46,0x4a == vfwcvt.f.f.v v8, v4
0x57,0x14,0x47,0x48 == vfwcvt.rtz.xu.f.v v8, v4, v0.t
0x57,0x14,0x47,0x4a == vfwcvt.rtz.xu.f.v v8, v4
0x57,0x94,0x47,0x48 == vfwcvt.rtz.x.f.v v8, v4, v0.t
0x57,0x94,0x47,0x4a == vfwcvt.rtz.x.f.v v8, v4
0x57,0x14,0x48,0x48 == vfncvt.xu.f.w v8, v4, v0.t
0x57,0x12,0x48,0x48 == vfncvt.xu.f.w v4, v4, v0.t
0x57,0x14,0x48,0x4a == vfncvt.xu.f.w v8, v4
0x57,0x94,0x48,0x48 == vfncvt.x.f.w v8, v4, v0.t
0x57,0x94,0x48,0x4a == vfncvt.x.f.w v8, v4
0x57,0x14,0x49,0x48 == vfncvt.f.xu.w v8, v4, v0.t
0x57,0x14,0x49,0x4a == vfncvt.f.xu.w v8, v4
0x57,0x94,0x49,0x48 == vfncvt.f.x.w v8, v4, v0.t
0x57,0x94,0x49,0x4a == vfncvt.f.x.w v8, v4
0x57,0x14,0x4a,0x48 == vfncvt.f.f.w v8, v4, v0.t
0x57,0x14,0x4a,0x4a == vfncvt.f.f.w v8, v4
0x57,0x94,0x4a,0x48 == vfncvt.rod.f.f.w v8, v4, v0.t
0x57,0x94,0x4a,0x4a == vfncvt.rod.f.f.w v8, v4
0x57,0x14,0x4b,0x48 == vfncvt.rtz.xu.f.w v8, v4, v0.t
0x57,0x14,0x4b,0x4a == vfncvt.rtz.xu.f.w v8, v4
0x57,0x94,0x4b,0x48 == vfncvt.rtz.x.f.w v8, v4, v0.t
0x57,0x94,0x4b,0x4a == vfncvt.rtz.x.f.w v8, v4

View file

@ -0,0 +1,2 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32", None
0x73,0x00,0x20,0x7b == dret

View file

@ -0,0 +1,4 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32", None
0x73,0x10,0x30,0x14 == csrrw zero, stval, zero
0x73,0x10,0x30,0x34 == csrrw zero, mtval, zero
0x73,0x10,0x00,0x18 == csrrw zero, satp, zero

View file

@ -0,0 +1,17 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x24,0x4a,0x80 == vdivu.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0x82 == vdivu.vv v8, v4, v20
0x57,0x64,0x45,0x80 == vdivu.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x82 == vdivu.vx v8, v4, a0
0x57,0x24,0x4a,0x84 == vdiv.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0x86 == vdiv.vv v8, v4, v20
0x57,0x64,0x45,0x84 == vdiv.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x86 == vdiv.vx v8, v4, a0
0x57,0x24,0x4a,0x88 == vremu.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0x8a == vremu.vv v8, v4, v20
0x57,0x64,0x45,0x88 == vremu.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x8a == vremu.vx v8, v4, a0
0x57,0x24,0x4a,0x8c == vrem.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0x8e == vrem.vv v8, v4, v20
0x57,0x64,0x45,0x8c == vrem.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x8e == vrem.vx v8, v4, a0

View file

@ -0,0 +1,13 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x24,0x43,0x48 == vzext.vf2 v8, v4, v0.t
0x57,0x24,0x43,0x4a == vzext.vf2 v8, v4
0x57,0xa4,0x43,0x48 == vsext.vf2 v8, v4, v0.t
0x57,0xa4,0x43,0x4a == vsext.vf2 v8, v4
0x57,0x24,0x42,0x48 == vzext.vf4 v8, v4, v0.t
0x57,0x24,0x42,0x4a == vzext.vf4 v8, v4
0x57,0xa4,0x42,0x48 == vsext.vf4 v8, v4, v0.t
0x57,0xa4,0x42,0x4a == vsext.vf4 v8, v4
0x57,0x24,0x41,0x48 == vzext.vf8 v8, v4, v0.t
0x57,0x24,0x41,0x4a == vzext.vf8 v8, v4
0x57,0xa4,0x41,0x48 == vsext.vf8 v8, v4, v0.t
0x57,0xa4,0x41,0x4a == vsext.vf8 v8, v4

View file

@ -0,0 +1,13 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x14,0x4a,0x00 == vfadd.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0x02 == vfadd.vv v8, v4, v20
0x57,0x54,0x45,0x00 == vfadd.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x02 == vfadd.vf v8, v4, fa0
0x57,0x14,0x4a,0xc0 == vfwadd.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0xc2 == vfwadd.vv v8, v4, v20
0x57,0x54,0x45,0xc0 == vfwadd.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0xc2 == vfwadd.vf v8, v4, fa0
0x57,0x14,0x4a,0xd0 == vfwadd.wv v8, v4, v20, v0.t
0x57,0x14,0x4a,0xd2 == vfwadd.wv v8, v4, v20
0x57,0x54,0x45,0xd0 == vfwadd.wf v8, v4, fa0, v0.t
0x57,0x54,0x45,0xd2 == vfwadd.wf v8, v4, fa0

View file

@ -0,0 +1,22 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x14,0x4a,0x60 == vmfeq.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0x62 == vmfeq.vv v8, v4, v20
0x57,0x54,0x45,0x60 == vmfeq.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x62 == vmfeq.vf v8, v4, fa0
0x57,0x14,0x4a,0x70 == vmfne.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0x72 == vmfne.vv v8, v4, v20
0x57,0x54,0x45,0x70 == vmfne.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x72 == vmfne.vf v8, v4, fa0
0x57,0x14,0x4a,0x6c == vmflt.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0x6e == vmflt.vv v8, v4, v20
0x57,0x54,0x45,0x6c == vmflt.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x6e == vmflt.vf v8, v4, fa0
0x57,0x14,0x4a,0x64 == vmfle.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0x66 == vmfle.vv v8, v4, v20
0x57,0x54,0x45,0x64 == vmfle.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x66 == vmfle.vf v8, v4, fa0
0x57,0x54,0x45,0x74 == vmfgt.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x76 == vmfgt.vf v8, v4, fa0
0x57,0x54,0x45,0x7c == vmfge.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x7e == vmfge.vf v8, v4, fa0
0x57,0x10,0x4a,0x60 == vmfeq.vv v0, v4, v20, v0.t

View file

@ -0,0 +1,7 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x14,0x4a,0x80 == vfdiv.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0x82 == vfdiv.vv v8, v4, v20
0x57,0x54,0x45,0x80 == vfdiv.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x82 == vfdiv.vf v8, v4, fa0
0x57,0x54,0x45,0x84 == vfrdiv.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x86 == vfrdiv.vf v8, v4, fa0

View file

@ -0,0 +1,2 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32"|"CS_MODE_RISCV_C", None
0x01,0x00 == nop

View file

@ -0,0 +1,2 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32", None
0x13,0x00,0x00,0x00 == addi zero, zero, 0

View file

@ -0,0 +1,49 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x14,0x4a,0xb0 == vfmacc.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xb2 == vfmacc.vv v8, v20, v4
0x57,0x54,0x45,0xb0 == vfmacc.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xb2 == vfmacc.vf v8, fa0, v4
0x57,0x14,0x4a,0xb4 == vfnmacc.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xb6 == vfnmacc.vv v8, v20, v4
0x57,0x54,0x45,0xb4 == vfnmacc.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xb6 == vfnmacc.vf v8, fa0, v4
0x57,0x14,0x4a,0xb8 == vfmsac.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xba == vfmsac.vv v8, v20, v4
0x57,0x54,0x45,0xb8 == vfmsac.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xba == vfmsac.vf v8, fa0, v4
0x57,0x14,0x4a,0xbc == vfnmsac.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xbe == vfnmsac.vv v8, v20, v4
0x57,0x54,0x45,0xbc == vfnmsac.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xbe == vfnmsac.vf v8, fa0, v4
0x57,0x14,0x4a,0xa0 == vfmadd.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xa2 == vfmadd.vv v8, v20, v4
0x57,0x54,0x45,0xa0 == vfmadd.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xa2 == vfmadd.vf v8, fa0, v4
0x57,0x14,0x4a,0xa4 == vfnmadd.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xa6 == vfnmadd.vv v8, v20, v4
0x57,0x54,0x45,0xa4 == vfnmadd.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xa6 == vfnmadd.vf v8, fa0, v4
0x57,0x14,0x4a,0xa8 == vfmsub.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xaa == vfmsub.vv v8, v20, v4
0x57,0x54,0x45,0xa8 == vfmsub.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xaa == vfmsub.vf v8, fa0, v4
0x57,0x14,0x4a,0xac == vfnmsub.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xae == vfnmsub.vv v8, v20, v4
0x57,0x54,0x45,0xac == vfnmsub.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xae == vfnmsub.vf v8, fa0, v4
0x57,0x14,0x4a,0xf0 == vfwmacc.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xf2 == vfwmacc.vv v8, v20, v4
0x57,0x54,0x45,0xf0 == vfwmacc.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xf2 == vfwmacc.vf v8, fa0, v4
0x57,0x14,0x4a,0xf4 == vfwnmacc.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xf6 == vfwnmacc.vv v8, v20, v4
0x57,0x54,0x45,0xf4 == vfwnmacc.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xf6 == vfwnmacc.vf v8, fa0, v4
0x57,0x14,0x4a,0xf8 == vfwmsac.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xfa == vfwmsac.vv v8, v20, v4
0x57,0x54,0x45,0xf8 == vfwmsac.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xfa == vfwmsac.vf v8, fa0, v4
0x57,0x14,0x4a,0xfc == vfwnmsac.vv v8, v20, v4, v0.t
0x57,0x14,0x4a,0xfe == vfwnmsac.vv v8, v20, v4
0x57,0x54,0x45,0xfc == vfwnmsac.vf v8, fa0, v4, v0.t
0x57,0x54,0x45,0xfe == vfwnmsac.vf v8, fa0, v4

View file

@ -0,0 +1,9 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x14,0x4a,0x10 == vfmin.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0x12 == vfmin.vv v8, v4, v20
0x57,0x54,0x45,0x10 == vfmin.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x12 == vfmin.vf v8, v4, fa0
0x57,0x14,0x4a,0x18 == vfmax.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0x1a == vfmax.vv v8, v4, v20
0x57,0x54,0x45,0x18 == vfmax.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x1a == vfmax.vf v8, v4, fa0

View file

@ -0,0 +1,9 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x14,0x4a,0x90 == vfmul.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0x92 == vfmul.vv v8, v4, v20
0x57,0x54,0x45,0x90 == vfmul.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x92 == vfmul.vf v8, v4, fa0
0x57,0x14,0x4a,0xe0 == vfwmul.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0xe2 == vfwmul.vv v8, v4, v20
0x57,0x54,0x45,0xe0 == vfwmul.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0xe2 == vfwmul.vf v8, v4, fa0

View file

@ -0,0 +1,4 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x54,0x05,0x5e == vfmv.v.f v8, fa0
0x57,0x15,0x40,0x42 == vfmv.f.s fa0, v4
0x57,0x54,0x05,0x42 == vfmv.s.f v8, fa0

View file

@ -0,0 +1,14 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x14,0x40,0x4c == vfsqrt.v v8, v4, v0.t
0x57,0x14,0x40,0x4e == vfsqrt.v v8, v4
0x57,0x14,0x42,0x4c == vfrsqrt7.v v8, v4, v0.t
0x57,0x14,0x42,0x4e == vfrsqrt7.v v8, v4
0x57,0x94,0x42,0x4c == vfrec7.v v8, v4, v0.t
0x57,0x94,0x42,0x4e == vfrec7.v v8, v4
0x57,0x14,0x48,0x4c == vfclass.v v8, v4, v0.t
0x57,0x14,0x48,0x4e == vfclass.v v8, v4
0x57,0x54,0x45,0x5c == vfmerge.vfm v8, v4, fa0, v0
0x57,0x54,0x45,0x38 == vfslide1up.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x3a == vfslide1up.vf v8, v4, fa0
0x57,0x54,0x45,0x3c == vfslide1down.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x3e == vfslide1down.vf v8, v4, fa0

View file

@ -0,0 +1,14 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x14,0x4a,0x0c == vfredosum.vs v8, v4, v20, v0.t
0x57,0x14,0x4a,0x0e == vfredosum.vs v8, v4, v20
0x57,0x14,0x4a,0x04 == vfredusum.vs v8, v4, v20, v0.t
0x57,0x14,0x4a,0x06 == vfredusum.vs v8, v4, v20
0x57,0x14,0x4a,0x1c == vfredmax.vs v8, v4, v20, v0.t
0x57,0x14,0x4a,0x1e == vfredmax.vs v8, v4, v20
0x57,0x14,0x4a,0x14 == vfredmin.vs v8, v4, v20, v0.t
0x57,0x14,0x4a,0x16 == vfredmin.vs v8, v4, v20
0x57,0x14,0x4a,0xcc == vfwredosum.vs v8, v4, v20, v0.t
0x57,0x14,0x4a,0xce == vfwredosum.vs v8, v4, v20
0x57,0x14,0x4a,0xc4 == vfwredusum.vs v8, v4, v20, v0.t
0x57,0x14,0x4a,0xc6 == vfwredusum.vs v8, v4, v20
0x57,0x10,0x4a,0x0c == vfredosum.vs v0, v4, v20, v0.t

View file

@ -0,0 +1,15 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V"|"CS_MODE_RISCV_F", None
0x57,0x14,0x4a,0x08 == vfsub.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0x0a == vfsub.vv v8, v4, v20
0x57,0x54,0x45,0x08 == vfsub.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x0a == vfsub.vf v8, v4, fa0
0x57,0x54,0x45,0x9c == vfrsub.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0x9e == vfrsub.vf v8, v4, fa0
0x57,0x14,0x4a,0xc8 == vfwsub.vv v8, v4, v20, v0.t
0x57,0x14,0x4a,0xca == vfwsub.vv v8, v4, v20
0x57,0x54,0x45,0xc8 == vfwsub.vf v8, v4, fa0, v0.t
0x57,0x54,0x45,0xca == vfwsub.vf v8, v4, fa0
0x57,0x14,0x4a,0xd8 == vfwsub.wv v8, v4, v20, v0.t
0x57,0x14,0x4a,0xda == vfwsub.wv v8, v4, v20
0x57,0x54,0x45,0xd8 == vfwsub.wf v8, v4, fa0, v0.t
0x57,0x54,0x45,0xda == vfwsub.wf v8, v4, fa0

View file

@ -0,0 +1,75 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32", None
0x73,0x23,0x00,0x60 == csrrs t1, hstatus, zero
0xf3,0x23,0x00,0x60 == csrrs t2, hstatus, zero
0x73,0x23,0x20,0x60 == csrrs t1, hedeleg, zero
0xf3,0x23,0x20,0x60 == csrrs t2, hedeleg, zero
0x73,0x23,0x30,0x60 == csrrs t1, hideleg, zero
0xf3,0x23,0x30,0x60 == csrrs t2, hideleg, zero
0x73,0x23,0x40,0x60 == csrrs t1, hie, zero
0xf3,0x23,0x40,0x60 == csrrs t2, hie, zero
0x73,0x23,0x60,0x60 == csrrs t1, hcounteren, zero
0xf3,0x23,0x60,0x60 == csrrs t2, hcounteren, zero
0x73,0x23,0x70,0x60 == csrrs t1, hgeie, zero
0xf3,0x23,0x70,0x60 == csrrs t2, hgeie, zero
0x73,0x23,0x30,0x64 == csrrs t1, htval, zero
0xf3,0x23,0x30,0x64 == csrrs t2, htval, zero
0x73,0x23,0x40,0x64 == csrrs t1, hip, zero
0xf3,0x23,0x40,0x64 == csrrs t2, hip, zero
0x73,0x23,0x50,0x64 == csrrs t1, hvip, zero
0xf3,0x23,0x50,0x64 == csrrs t2, hvip, zero
0x73,0x23,0xa0,0x64 == csrrs t1, htinst, zero
0xf3,0x23,0xa0,0x64 == csrrs t2, htinst, zero
0x73,0x23,0x20,0xe1 == csrrs t1, hgeip, zero
0xf3,0x23,0x20,0xe1 == csrrs t2, hgeip, zero
0x73,0x23,0xa0,0x60 == csrrs t1, henvcfg, zero
0xf3,0x23,0xa0,0x60 == csrrs t2, henvcfg, zero
0x73,0x23,0x00,0x68 == csrrs t1, hgatp, zero
0xf3,0x23,0x00,0x68 == csrrs t2, hgatp, zero
0x73,0x23,0x80,0x6a == csrrs t1, hcontext, zero
0xf3,0x23,0x80,0x6a == csrrs t2, hcontext, zero
0x73,0x23,0x50,0x60 == csrrs t1, htimedelta, zero
0xf3,0x23,0x50,0x60 == csrrs t2, htimedelta, zero
0x73,0x23,0x00,0x20 == csrrs t1, vsstatus, zero
0xf3,0x23,0x00,0x20 == csrrs t2, vsstatus, zero
0x73,0x23,0x40,0x20 == csrrs t1, vsie, zero
0xf3,0x23,0x40,0x20 == csrrs t2, vsie, zero
0x73,0x23,0x50,0x20 == csrrs t1, vstvec, zero
0xf3,0x23,0x50,0x20 == csrrs t2, vstvec, zero
0x73,0x23,0x00,0x24 == csrrs t1, vsscratch, zero
0xf3,0x23,0x00,0x24 == csrrs t2, vsscratch, zero
0x73,0x23,0x10,0x24 == csrrs t1, vsepc, zero
0xf3,0x23,0x10,0x24 == csrrs t2, vsepc, zero
0x73,0x23,0x20,0x24 == csrrs t1, vscause, zero
0xf3,0x23,0x20,0x24 == csrrs t2, vscause, zero
0x73,0x23,0x30,0x24 == csrrs t1, vstval, zero
0xf3,0x23,0x30,0x24 == csrrs t2, vstval, zero
0x73,0x23,0x40,0x24 == csrrs t1, vsip, zero
0xf3,0x23,0x40,0x24 == csrrs t2, vsip, zero
0x73,0x23,0xd0,0x24 == csrrs t1, vstimecmp, zero
0xf3,0x23,0xd0,0x24 == csrrs t2, vstimecmp, zero
0x73,0x23,0x00,0x28 == csrrs t1, vsatp, zero
0xf3,0x23,0x00,0x28 == csrrs t2, vsatp, zero
0x73,0x23,0xc0,0x60 == csrrs t1, hstateen0, zero
0xf3,0x23,0xc0,0x60 == csrrs t2, hstateen0, zero
0x73,0x23,0xd0,0x60 == csrrs t1, hstateen1, zero
0xf3,0x23,0xd0,0x60 == csrrs t2, hstateen1, zero
0x73,0x23,0xe0,0x60 == csrrs t1, hstateen2, zero
0xf3,0x23,0xe0,0x60 == csrrs t2, hstateen2, zero
0x73,0x23,0xf0,0x60 == csrrs t1, hstateen3, zero
0xf3,0x23,0xf0,0x60 == csrrs t2, hstateen3, zero
0x73,0x23,0x80,0x60 == csrrs t1, hvien, zero
0xf3,0x23,0x80,0x60 == csrrs t2, hvien, zero
0x73,0x23,0x90,0x60 == csrrs t1, hvictl, zero
0xf3,0x23,0x90,0x60 == csrrs t2, hvictl, zero
0x73,0x23,0x60,0x64 == csrrs t1, hviprio1, zero
0xf3,0x23,0x60,0x64 == csrrs t2, hviprio1, zero
0x73,0x23,0x70,0x64 == csrrs t1, hviprio2, zero
0xf3,0x23,0x70,0x64 == csrrs t2, hviprio2, zero
0x73,0x23,0x00,0x25 == csrrs t1, vsiselect, zero
0xf3,0x23,0x00,0x25 == csrrs t2, vsiselect, zero
0x73,0x23,0x10,0x25 == csrrs t1, vsireg, zero
0xf3,0x23,0x10,0x25 == csrrs t2, vsireg, zero
0x73,0x23,0xc0,0x25 == csrrs t1, vstopei, zero
0xf3,0x23,0xc0,0x25 == csrrs t2, vstopei, zero
0x73,0x23,0x00,0xeb == csrrs t1, vstopi, zero
0xf3,0x23,0x00,0xeb == csrrs t2, vstopi, zero

View file

@ -0,0 +1,59 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x07,0x00,0xb5,0x02 == vlm.v v0, (a0)
0x07,0x04,0xb5,0x02 == vlm.v v8, (a0)
0x07,0x04,0x05,0x00 == vle8.v v8, (a0), v0.t
0x07,0x04,0x05,0x02 == vle8.v v8, (a0)
0x07,0x54,0x05,0x00 == vle16.v v8, (a0), v0.t
0x07,0x54,0x05,0x02 == vle16.v v8, (a0)
0x07,0x64,0x05,0x00 == vle32.v v8, (a0), v0.t
0x07,0x64,0x05,0x02 == vle32.v v8, (a0)
0x07,0x74,0x05,0x00 == vle64.v v8, (a0), v0.t
0x07,0x74,0x05,0x02 == vle64.v v8, (a0)
0x07,0x04,0x05,0x01 == vle8ff.v v8, (a0), v0.t
0x07,0x04,0x05,0x03 == vle8ff.v v8, (a0)
0x07,0x54,0x05,0x01 == vle16ff.v v8, (a0), v0.t
0x07,0x54,0x05,0x03 == vle16ff.v v8, (a0)
0x07,0x64,0x05,0x01 == vle32ff.v v8, (a0), v0.t
0x07,0x64,0x05,0x03 == vle32ff.v v8, (a0)
0x07,0x74,0x05,0x01 == vle64ff.v v8, (a0), v0.t
0x07,0x74,0x05,0x03 == vle64ff.v v8, (a0)
0x07,0x04,0xb5,0x08 == vlse8.v v8, (a0), a1, v0.t
0x07,0x04,0xb5,0x0a == vlse8.v v8, (a0), a1
0x07,0x54,0xb5,0x08 == vlse16.v v8, (a0), a1, v0.t
0x07,0x54,0xb5,0x0a == vlse16.v v8, (a0), a1
0x07,0x64,0xb5,0x08 == vlse32.v v8, (a0), a1, v0.t
0x07,0x64,0xb5,0x0a == vlse32.v v8, (a0), a1
0x07,0x74,0xb5,0x08 == vlse64.v v8, (a0), a1, v0.t
0x07,0x74,0xb5,0x0a == vlse64.v v8, (a0), a1
0x07,0x04,0x45,0x04 == vluxei8.v v8, (a0), v4, v0.t
0x07,0x04,0x45,0x06 == vluxei8.v v8, (a0), v4
0x07,0x54,0x45,0x04 == vluxei16.v v8, (a0), v4, v0.t
0x07,0x54,0x45,0x06 == vluxei16.v v8, (a0), v4
0x07,0x64,0x45,0x04 == vluxei32.v v8, (a0), v4, v0.t
0x07,0x64,0x45,0x06 == vluxei32.v v8, (a0), v4
0x07,0x74,0x45,0x04 == vluxei64.v v8, (a0), v4, v0.t
0x07,0x74,0x45,0x06 == vluxei64.v v8, (a0), v4
0x07,0x04,0x45,0x0c == vloxei8.v v8, (a0), v4, v0.t
0x07,0x04,0x45,0x0e == vloxei8.v v8, (a0), v4
0x07,0x54,0x45,0x0c == vloxei16.v v8, (a0), v4, v0.t
0x07,0x54,0x45,0x0e == vloxei16.v v8, (a0), v4
0x07,0x64,0x45,0x0c == vloxei32.v v8, (a0), v4, v0.t
0x07,0x64,0x45,0x0e == vloxei32.v v8, (a0), v4
0x07,0x74,0x45,0x0c == vloxei64.v v8, (a0), v4, v0.t
0x07,0x74,0x45,0x0e == vloxei64.v v8, (a0), v4
0x07,0x04,0x85,0x02 == vl1re8.v v8, (a0)
0x07,0x54,0x85,0x02 == vl1re16.v v8, (a0)
0x07,0x64,0x85,0x02 == vl1re32.v v8, (a0)
0x07,0x74,0x85,0x02 == vl1re64.v v8, (a0)
0x07,0x04,0x85,0x22 == vl2re8.v v8, (a0)
0x07,0x54,0x85,0x22 == vl2re16.v v8, (a0)
0x07,0x64,0x85,0x22 == vl2re32.v v8, (a0)
0x07,0x74,0x85,0x22 == vl2re64.v v8, (a0)
0x07,0x04,0x85,0x62 == vl4re8.v v8, (a0)
0x07,0x54,0x85,0x62 == vl4re16.v v8, (a0)
0x07,0x64,0x85,0x62 == vl4re32.v v8, (a0)
0x07,0x74,0x85,0x62 == vl4re64.v v8, (a0)
0x07,0x04,0x85,0xe2 == vl8re8.v v8, (a0)
0x07,0x54,0x85,0xe2 == vl8re16.v v8, (a0)
0x07,0x64,0x85,0xe2 == vl8re32.v v8, (a0)
0x07,0x74,0x85,0xe2 == vl8re64.v v8, (a0)

View file

@ -0,0 +1,31 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x24,0x4a,0xb4 == vmacc.vv v8, v20, v4, v0.t
0x57,0x24,0x4a,0xb6 == vmacc.vv v8, v20, v4
0x57,0x64,0x45,0xb4 == vmacc.vx v8, a0, v4, v0.t
0x57,0x64,0x45,0xb6 == vmacc.vx v8, a0, v4
0x57,0x24,0x4a,0xbc == vnmsac.vv v8, v20, v4, v0.t
0x57,0x24,0x4a,0xbe == vnmsac.vv v8, v20, v4
0x57,0x64,0x45,0xbc == vnmsac.vx v8, a0, v4, v0.t
0x57,0x64,0x45,0xbe == vnmsac.vx v8, a0, v4
0x57,0x24,0x4a,0xa4 == vmadd.vv v8, v20, v4, v0.t
0x57,0x24,0x4a,0xa6 == vmadd.vv v8, v20, v4
0x57,0x64,0x45,0xa4 == vmadd.vx v8, a0, v4, v0.t
0x57,0x64,0x45,0xa6 == vmadd.vx v8, a0, v4
0x57,0x24,0x4a,0xac == vnmsub.vv v8, v20, v4, v0.t
0x57,0x24,0x4a,0xae == vnmsub.vv v8, v20, v4
0x57,0x64,0x45,0xac == vnmsub.vx v8, a0, v4, v0.t
0x57,0x64,0x45,0xae == vnmsub.vx v8, a0, v4
0x57,0x24,0x4a,0xf0 == vwmaccu.vv v8, v20, v4, v0.t
0x57,0x24,0x4a,0xf2 == vwmaccu.vv v8, v20, v4
0x57,0x64,0x45,0xf0 == vwmaccu.vx v8, a0, v4, v0.t
0x57,0x64,0x45,0xf2 == vwmaccu.vx v8, a0, v4
0x57,0x24,0x4a,0xf4 == vwmacc.vv v8, v20, v4, v0.t
0x57,0x24,0x4a,0xf6 == vwmacc.vv v8, v20, v4
0x57,0x64,0x45,0xf4 == vwmacc.vx v8, a0, v4, v0.t
0x57,0x64,0x45,0xf6 == vwmacc.vx v8, a0, v4
0x57,0x24,0x4a,0xfc == vwmaccsu.vv v8, v20, v4, v0.t
0x57,0x24,0x4a,0xfe == vwmaccsu.vv v8, v20, v4
0x57,0x64,0x45,0xfc == vwmaccsu.vx v8, a0, v4, v0.t
0x57,0x64,0x45,0xfe == vwmaccsu.vx v8, a0, v4
0x57,0x64,0x45,0xf8 == vwmaccus.vx v8, a0, v4, v0.t
0x57,0x64,0x45,0xfa == vwmaccus.vx v8, a0, v4

View file

@ -0,0 +1,347 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32", None
0x73,0x23,0x10,0xf1 == csrrs t1, mvendorid, zero
0xf3,0x23,0x10,0xf1 == csrrs t2, mvendorid, zero
0x73,0x23,0x20,0xf1 == csrrs t1, marchid, zero
0xf3,0x23,0x20,0xf1 == csrrs t2, marchid, zero
0x73,0x23,0x30,0xf1 == csrrs t1, mimpid, zero
0xf3,0x23,0x30,0xf1 == csrrs t2, mimpid, zero
0x73,0x23,0x40,0xf1 == csrrs t1, mhartid, zero
0xf3,0x23,0x40,0xf1 == csrrs t2, mhartid, zero
0x73,0x23,0x50,0xf1 == csrrs t1, mconfigptr, zero
0xf3,0x23,0x50,0xf1 == csrrs t2, mconfigptr, zero
0x73,0x23,0x00,0x30 == csrrs t1, mstatus, zero
0xf3,0x23,0x00,0x30 == csrrs t2, mstatus, zero
0x73,0x23,0x10,0x30 == csrrs t1, misa, zero
0xf3,0x23,0x10,0x30 == csrrs t2, misa, zero
0x73,0x23,0x20,0x30 == csrrs t1, medeleg, zero
0xf3,0x23,0x20,0x30 == csrrs t2, medeleg, zero
0x73,0x23,0x30,0x30 == csrrs t1, mideleg, zero
0xf3,0x23,0x30,0x30 == csrrs t2, mideleg, zero
0x73,0x23,0x40,0x30 == csrrs t1, mie, zero
0xf3,0x23,0x40,0x30 == csrrs t2, mie, zero
0x73,0x23,0x50,0x30 == csrrs t1, mtvec, zero
0xf3,0x23,0x50,0x30 == csrrs t2, mtvec, zero
0x73,0x23,0x60,0x30 == csrrs t1, mcounteren, zero
0xf3,0x23,0x60,0x30 == csrrs t2, mcounteren, zero
0x73,0x23,0x00,0x34 == csrrs t1, mscratch, zero
0xf3,0x23,0x00,0x34 == csrrs t2, mscratch, zero
0x73,0x23,0x10,0x34 == csrrs t1, mepc, zero
0xf3,0x23,0x10,0x34 == csrrs t2, mepc, zero
0x73,0x23,0x20,0x34 == csrrs t1, mcause, zero
0xf3,0x23,0x20,0x34 == csrrs t2, mcause, zero
0x73,0x23,0x30,0x34 == csrrs t1, mtval, zero
0xf3,0x23,0x30,0x34 == csrrs t2, mtval, zero
0x73,0x23,0x40,0x34 == csrrs t1, mip, zero
0xf3,0x23,0x40,0x34 == csrrs t2, mip, zero
0x73,0x23,0xa0,0x34 == csrrs t1, mtinst, zero
0xf3,0x23,0xa0,0x34 == csrrs t2, mtinst, zero
0x73,0x23,0xb0,0x34 == csrrs t1, mtval2, zero
0xf3,0x23,0xb0,0x34 == csrrs t2, mtval2, zero
0x73,0x23,0xa0,0x30 == csrrs t1, menvcfg, zero
0xf3,0x23,0xa0,0x30 == csrrs t2, menvcfg, zero
0x73,0x23,0x70,0x74 == csrrs t1, mseccfg, zero
0xf3,0x23,0x70,0x74 == csrrs t2, mseccfg, zero
0x73,0x23,0x00,0x3a == csrrs t1, pmpcfg0, zero
0xf3,0x23,0x00,0x3a == csrrs t2, pmpcfg0, zero
0x73,0x23,0x20,0x3a == csrrs t1, pmpcfg2, zero
0xf3,0x23,0x20,0x3a == csrrs t2, pmpcfg2, zero
0x73,0x23,0x40,0x3a == csrrs t1, pmpcfg4, zero
0xf3,0x23,0x40,0x3a == csrrs t2, pmpcfg4, zero
0x73,0x23,0x60,0x3a == csrrs t1, pmpcfg6, zero
0xf3,0x23,0x60,0x3a == csrrs t2, pmpcfg6, zero
0x73,0x23,0x80,0x3a == csrrs t1, pmpcfg8, zero
0xf3,0x23,0x80,0x3a == csrrs t2, pmpcfg8, zero
0x73,0x23,0xa0,0x3a == csrrs t1, pmpcfg10, zero
0xf3,0x23,0xa0,0x3a == csrrs t2, pmpcfg10, zero
0x73,0x23,0xc0,0x3a == csrrs t1, pmpcfg12, zero
0xf3,0x23,0xc0,0x3a == csrrs t2, pmpcfg12, zero
0x73,0x23,0xe0,0x3a == csrrs t1, pmpcfg14, zero
0xf3,0x23,0xe0,0x3a == csrrs t2, pmpcfg14, zero
0x73,0x23,0x00,0x3b == csrrs t1, pmpaddr0, zero
0xf3,0x23,0x00,0x3b == csrrs t2, pmpaddr0, zero
0x73,0x23,0x10,0x3b == csrrs t1, pmpaddr1, zero
0xf3,0x23,0x10,0x3b == csrrs t2, pmpaddr1, zero
0x73,0x23,0x20,0x3b == csrrs t1, pmpaddr2, zero
0xf3,0x23,0x20,0x3b == csrrs t2, pmpaddr2, zero
0x73,0x23,0x30,0x3b == csrrs t1, pmpaddr3, zero
0xf3,0x23,0x30,0x3b == csrrs t2, pmpaddr3, zero
0x73,0x23,0x40,0x3b == csrrs t1, pmpaddr4, zero
0xf3,0x23,0x40,0x3b == csrrs t2, pmpaddr4, zero
0x73,0x23,0x50,0x3b == csrrs t1, pmpaddr5, zero
0xf3,0x23,0x50,0x3b == csrrs t2, pmpaddr5, zero
0x73,0x23,0x60,0x3b == csrrs t1, pmpaddr6, zero
0xf3,0x23,0x60,0x3b == csrrs t2, pmpaddr6, zero
0x73,0x23,0x70,0x3b == csrrs t1, pmpaddr7, zero
0xf3,0x23,0x70,0x3b == csrrs t2, pmpaddr7, zero
0x73,0x23,0x80,0x3b == csrrs t1, pmpaddr8, zero
0xf3,0x23,0x80,0x3b == csrrs t2, pmpaddr8, zero
0x73,0x23,0x90,0x3b == csrrs t1, pmpaddr9, zero
0xf3,0x23,0x90,0x3b == csrrs t2, pmpaddr9, zero
0x73,0x23,0xa0,0x3b == csrrs t1, pmpaddr10, zero
0xf3,0x23,0xa0,0x3b == csrrs t2, pmpaddr10, zero
0x73,0x23,0xb0,0x3b == csrrs t1, pmpaddr11, zero
0xf3,0x23,0xb0,0x3b == csrrs t2, pmpaddr11, zero
0x73,0x23,0xc0,0x3b == csrrs t1, pmpaddr12, zero
0xf3,0x23,0xc0,0x3b == csrrs t2, pmpaddr12, zero
0x73,0x23,0xd0,0x3b == csrrs t1, pmpaddr13, zero
0xf3,0x23,0xd0,0x3b == csrrs t2, pmpaddr13, zero
0x73,0x23,0xe0,0x3b == csrrs t1, pmpaddr14, zero
0xf3,0x23,0xe0,0x3b == csrrs t2, pmpaddr14, zero
0x73,0x23,0xf0,0x3b == csrrs t1, pmpaddr15, zero
0xf3,0x23,0xf0,0x3b == csrrs t2, pmpaddr15, zero
0x73,0x23,0x00,0x3c == csrrs t1, pmpaddr16, zero
0xf3,0x23,0x00,0x3c == csrrs t2, pmpaddr16, zero
0x73,0x23,0x10,0x3c == csrrs t1, pmpaddr17, zero
0xf3,0x23,0x10,0x3c == csrrs t2, pmpaddr17, zero
0x73,0x23,0x20,0x3c == csrrs t1, pmpaddr18, zero
0xf3,0x23,0x20,0x3c == csrrs t2, pmpaddr18, zero
0x73,0x23,0x30,0x3c == csrrs t1, pmpaddr19, zero
0xf3,0x23,0x30,0x3c == csrrs t2, pmpaddr19, zero
0x73,0x23,0x40,0x3c == csrrs t1, pmpaddr20, zero
0xf3,0x23,0x40,0x3c == csrrs t2, pmpaddr20, zero
0x73,0x23,0x50,0x3c == csrrs t1, pmpaddr21, zero
0xf3,0x23,0x50,0x3c == csrrs t2, pmpaddr21, zero
0x73,0x23,0x60,0x3c == csrrs t1, pmpaddr22, zero
0xf3,0x23,0x60,0x3c == csrrs t2, pmpaddr22, zero
0x73,0x23,0x70,0x3c == csrrs t1, pmpaddr23, zero
0xf3,0x23,0x70,0x3c == csrrs t2, pmpaddr23, zero
0x73,0x23,0x80,0x3c == csrrs t1, pmpaddr24, zero
0xf3,0x23,0x80,0x3c == csrrs t2, pmpaddr24, zero
0x73,0x23,0x90,0x3c == csrrs t1, pmpaddr25, zero
0xf3,0x23,0x90,0x3c == csrrs t2, pmpaddr25, zero
0x73,0x23,0xa0,0x3c == csrrs t1, pmpaddr26, zero
0xf3,0x23,0xa0,0x3c == csrrs t2, pmpaddr26, zero
0x73,0x23,0xb0,0x3c == csrrs t1, pmpaddr27, zero
0xf3,0x23,0xb0,0x3c == csrrs t2, pmpaddr27, zero
0x73,0x23,0xc0,0x3c == csrrs t1, pmpaddr28, zero
0xf3,0x23,0xc0,0x3c == csrrs t2, pmpaddr28, zero
0x73,0x23,0xd0,0x3c == csrrs t1, pmpaddr29, zero
0xf3,0x23,0xd0,0x3c == csrrs t2, pmpaddr29, zero
0x73,0x23,0xe0,0x3c == csrrs t1, pmpaddr30, zero
0xf3,0x23,0xe0,0x3c == csrrs t2, pmpaddr30, zero
0x73,0x23,0xf0,0x3c == csrrs t1, pmpaddr31, zero
0xf3,0x23,0xf0,0x3c == csrrs t2, pmpaddr31, zero
0x73,0x23,0x00,0x3d == csrrs t1, pmpaddr32, zero
0xf3,0x23,0x00,0x3d == csrrs t2, pmpaddr32, zero
0x73,0x23,0x10,0x3d == csrrs t1, pmpaddr33, zero
0xf3,0x23,0x10,0x3d == csrrs t2, pmpaddr33, zero
0x73,0x23,0x20,0x3d == csrrs t1, pmpaddr34, zero
0xf3,0x23,0x20,0x3d == csrrs t2, pmpaddr34, zero
0x73,0x23,0x30,0x3d == csrrs t1, pmpaddr35, zero
0xf3,0x23,0x30,0x3d == csrrs t2, pmpaddr35, zero
0x73,0x23,0x40,0x3d == csrrs t1, pmpaddr36, zero
0xf3,0x23,0x40,0x3d == csrrs t2, pmpaddr36, zero
0x73,0x23,0x50,0x3d == csrrs t1, pmpaddr37, zero
0xf3,0x23,0x50,0x3d == csrrs t2, pmpaddr37, zero
0x73,0x23,0x60,0x3d == csrrs t1, pmpaddr38, zero
0xf3,0x23,0x60,0x3d == csrrs t2, pmpaddr38, zero
0x73,0x23,0x70,0x3d == csrrs t1, pmpaddr39, zero
0xf3,0x23,0x70,0x3d == csrrs t2, pmpaddr39, zero
0x73,0x23,0x80,0x3d == csrrs t1, pmpaddr40, zero
0xf3,0x23,0x80,0x3d == csrrs t2, pmpaddr40, zero
0x73,0x23,0x90,0x3d == csrrs t1, pmpaddr41, zero
0xf3,0x23,0x90,0x3d == csrrs t2, pmpaddr41, zero
0x73,0x23,0xa0,0x3d == csrrs t1, pmpaddr42, zero
0xf3,0x23,0xa0,0x3d == csrrs t2, pmpaddr42, zero
0x73,0x23,0xb0,0x3d == csrrs t1, pmpaddr43, zero
0xf3,0x23,0xb0,0x3d == csrrs t2, pmpaddr43, zero
0x73,0x23,0xc0,0x3d == csrrs t1, pmpaddr44, zero
0xf3,0x23,0xc0,0x3d == csrrs t2, pmpaddr44, zero
0x73,0x23,0xd0,0x3d == csrrs t1, pmpaddr45, zero
0xf3,0x23,0xd0,0x3d == csrrs t2, pmpaddr45, zero
0x73,0x23,0xe0,0x3d == csrrs t1, pmpaddr46, zero
0xf3,0x23,0xe0,0x3d == csrrs t2, pmpaddr46, zero
0x73,0x23,0xf0,0x3d == csrrs t1, pmpaddr47, zero
0xf3,0x23,0xf0,0x3d == csrrs t2, pmpaddr47, zero
0x73,0x23,0x00,0x3e == csrrs t1, pmpaddr48, zero
0xf3,0x23,0x00,0x3e == csrrs t2, pmpaddr48, zero
0x73,0x23,0x10,0x3e == csrrs t1, pmpaddr49, zero
0xf3,0x23,0x10,0x3e == csrrs t2, pmpaddr49, zero
0x73,0x23,0x20,0x3e == csrrs t1, pmpaddr50, zero
0xf3,0x23,0x20,0x3e == csrrs t2, pmpaddr50, zero
0x73,0x23,0x30,0x3e == csrrs t1, pmpaddr51, zero
0xf3,0x23,0x30,0x3e == csrrs t2, pmpaddr51, zero
0x73,0x23,0x40,0x3e == csrrs t1, pmpaddr52, zero
0xf3,0x23,0x40,0x3e == csrrs t2, pmpaddr52, zero
0x73,0x23,0x50,0x3e == csrrs t1, pmpaddr53, zero
0xf3,0x23,0x50,0x3e == csrrs t2, pmpaddr53, zero
0x73,0x23,0x60,0x3e == csrrs t1, pmpaddr54, zero
0xf3,0x23,0x60,0x3e == csrrs t2, pmpaddr54, zero
0x73,0x23,0x70,0x3e == csrrs t1, pmpaddr55, zero
0xf3,0x23,0x70,0x3e == csrrs t2, pmpaddr55, zero
0x73,0x23,0x80,0x3e == csrrs t1, pmpaddr56, zero
0xf3,0x23,0x80,0x3e == csrrs t2, pmpaddr56, zero
0x73,0x23,0x90,0x3e == csrrs t1, pmpaddr57, zero
0xf3,0x23,0x90,0x3e == csrrs t2, pmpaddr57, zero
0x73,0x23,0xa0,0x3e == csrrs t1, pmpaddr58, zero
0xf3,0x23,0xa0,0x3e == csrrs t2, pmpaddr58, zero
0x73,0x23,0xb0,0x3e == csrrs t1, pmpaddr59, zero
0xf3,0x23,0xb0,0x3e == csrrs t2, pmpaddr59, zero
0x73,0x23,0xc0,0x3e == csrrs t1, pmpaddr60, zero
0xf3,0x23,0xc0,0x3e == csrrs t2, pmpaddr60, zero
0x73,0x23,0xd0,0x3e == csrrs t1, pmpaddr61, zero
0xf3,0x23,0xd0,0x3e == csrrs t2, pmpaddr61, zero
0x73,0x23,0xe0,0x3e == csrrs t1, pmpaddr62, zero
0xf3,0x23,0xe0,0x3e == csrrs t2, pmpaddr62, zero
0x73,0x23,0xf0,0x3e == csrrs t1, pmpaddr63, zero
0xf3,0x23,0xf0,0x3e == csrrs t2, pmpaddr63, zero
0x73,0x23,0x00,0xb0 == csrrs t1, mcycle, zero
0xf3,0x23,0x00,0xb0 == csrrs t2, mcycle, zero
0x73,0x23,0x20,0xb0 == csrrs t1, minstret, zero
0xf3,0x23,0x20,0xb0 == csrrs t2, minstret, zero
0x73,0x23,0x00,0x7a == csrrs t1, tselect, zero
0xf3,0x23,0x00,0x7a == csrrs t2, tselect, zero
0x73,0x23,0x10,0x7a == csrrs t1, tdata1, zero
0xf3,0x23,0x10,0x7a == csrrs t2, tdata1, zero
0x73,0x23,0x20,0x7a == csrrs t1, tdata2, zero
0xf3,0x23,0x20,0x7a == csrrs t2, tdata2, zero
0x73,0x23,0x30,0x7a == csrrs t1, tdata3, zero
0xf3,0x23,0x30,0x7a == csrrs t2, tdata3, zero
0x73,0x23,0x80,0x7a == csrrs t1, mcontext, zero
0xf3,0x23,0x80,0x7a == csrrs t2, mcontext, zero
0x73,0x23,0x00,0x7b == csrrs t1, dcsr, zero
0xf3,0x23,0x00,0x7b == csrrs t2, dcsr, zero
0x73,0x23,0x10,0x7b == csrrs t1, dpc, zero
0xf3,0x23,0x10,0x7b == csrrs t2, dpc, zero
0x73,0x23,0x20,0x7b == csrrs t1, dscratch0, zero
0xf3,0x23,0x20,0x7b == csrrs t2, dscratch0, zero
0x73,0x23,0x30,0x7b == csrrs t1, dscratch1, zero
0xf3,0x23,0x30,0x7b == csrrs t2, dscratch1, zero
0x73,0x23,0x30,0xb0 == csrrs t1, mhpmcounter3, zero
0xf3,0x23,0x30,0xb0 == csrrs t2, mhpmcounter3, zero
0x73,0x23,0x40,0xb0 == csrrs t1, mhpmcounter4, zero
0xf3,0x23,0x40,0xb0 == csrrs t2, mhpmcounter4, zero
0x73,0x23,0x50,0xb0 == csrrs t1, mhpmcounter5, zero
0xf3,0x23,0x50,0xb0 == csrrs t2, mhpmcounter5, zero
0x73,0x23,0x60,0xb0 == csrrs t1, mhpmcounter6, zero
0xf3,0x23,0x60,0xb0 == csrrs t2, mhpmcounter6, zero
0x73,0x23,0x70,0xb0 == csrrs t1, mhpmcounter7, zero
0xf3,0x23,0x70,0xb0 == csrrs t2, mhpmcounter7, zero
0x73,0x23,0x80,0xb0 == csrrs t1, mhpmcounter8, zero
0xf3,0x23,0x80,0xb0 == csrrs t2, mhpmcounter8, zero
0x73,0x23,0x90,0xb0 == csrrs t1, mhpmcounter9, zero
0xf3,0x23,0x90,0xb0 == csrrs t2, mhpmcounter9, zero
0x73,0x23,0xa0,0xb0 == csrrs t1, mhpmcounter10, zero
0xf3,0x23,0xa0,0xb0 == csrrs t2, mhpmcounter10, zero
0x73,0x23,0xb0,0xb0 == csrrs t1, mhpmcounter11, zero
0xf3,0x23,0xb0,0xb0 == csrrs t2, mhpmcounter11, zero
0x73,0x23,0xc0,0xb0 == csrrs t1, mhpmcounter12, zero
0xf3,0x23,0xc0,0xb0 == csrrs t2, mhpmcounter12, zero
0x73,0x23,0xd0,0xb0 == csrrs t1, mhpmcounter13, zero
0xf3,0x23,0xd0,0xb0 == csrrs t2, mhpmcounter13, zero
0x73,0x23,0xe0,0xb0 == csrrs t1, mhpmcounter14, zero
0xf3,0x23,0xe0,0xb0 == csrrs t2, mhpmcounter14, zero
0x73,0x23,0xf0,0xb0 == csrrs t1, mhpmcounter15, zero
0xf3,0x23,0xf0,0xb0 == csrrs t2, mhpmcounter15, zero
0x73,0x23,0x00,0xb1 == csrrs t1, mhpmcounter16, zero
0xf3,0x23,0x00,0xb1 == csrrs t2, mhpmcounter16, zero
0x73,0x23,0x10,0xb1 == csrrs t1, mhpmcounter17, zero
0xf3,0x23,0x10,0xb1 == csrrs t2, mhpmcounter17, zero
0x73,0x23,0x20,0xb1 == csrrs t1, mhpmcounter18, zero
0xf3,0x23,0x20,0xb1 == csrrs t2, mhpmcounter18, zero
0x73,0x23,0x30,0xb1 == csrrs t1, mhpmcounter19, zero
0xf3,0x23,0x30,0xb1 == csrrs t2, mhpmcounter19, zero
0x73,0x23,0x40,0xb1 == csrrs t1, mhpmcounter20, zero
0xf3,0x23,0x40,0xb1 == csrrs t2, mhpmcounter20, zero
0x73,0x23,0x50,0xb1 == csrrs t1, mhpmcounter21, zero
0xf3,0x23,0x50,0xb1 == csrrs t2, mhpmcounter21, zero
0x73,0x23,0x60,0xb1 == csrrs t1, mhpmcounter22, zero
0xf3,0x23,0x60,0xb1 == csrrs t2, mhpmcounter22, zero
0x73,0x23,0x70,0xb1 == csrrs t1, mhpmcounter23, zero
0xf3,0x23,0x70,0xb1 == csrrs t2, mhpmcounter23, zero
0x73,0x23,0x80,0xb1 == csrrs t1, mhpmcounter24, zero
0xf3,0x23,0x80,0xb1 == csrrs t2, mhpmcounter24, zero
0x73,0x23,0x90,0xb1 == csrrs t1, mhpmcounter25, zero
0xf3,0x23,0x90,0xb1 == csrrs t2, mhpmcounter25, zero
0x73,0x23,0xa0,0xb1 == csrrs t1, mhpmcounter26, zero
0xf3,0x23,0xa0,0xb1 == csrrs t2, mhpmcounter26, zero
0x73,0x23,0xb0,0xb1 == csrrs t1, mhpmcounter27, zero
0xf3,0x23,0xb0,0xb1 == csrrs t2, mhpmcounter27, zero
0x73,0x23,0xc0,0xb1 == csrrs t1, mhpmcounter28, zero
0xf3,0x23,0xc0,0xb1 == csrrs t2, mhpmcounter28, zero
0x73,0x23,0xd0,0xb1 == csrrs t1, mhpmcounter29, zero
0xf3,0x23,0xd0,0xb1 == csrrs t2, mhpmcounter29, zero
0x73,0x23,0xe0,0xb1 == csrrs t1, mhpmcounter30, zero
0xf3,0x23,0xe0,0xb1 == csrrs t2, mhpmcounter30, zero
0x73,0x23,0xf0,0xb1 == csrrs t1, mhpmcounter31, zero
0xf3,0x23,0xf0,0xb1 == csrrs t2, mhpmcounter31, zero
0x73,0x23,0x00,0x32 == csrrs t1, mcountinhibit, zero
0xf3,0x23,0x00,0x32 == csrrs t2, mcountinhibit, zero
0x73,0x23,0x30,0x32 == csrrs t1, mhpmevent3, zero
0xf3,0x23,0x30,0x32 == csrrs t2, mhpmevent3, zero
0x73,0x23,0x40,0x32 == csrrs t1, mhpmevent4, zero
0xf3,0x23,0x40,0x32 == csrrs t2, mhpmevent4, zero
0x73,0x23,0x50,0x32 == csrrs t1, mhpmevent5, zero
0xf3,0x23,0x50,0x32 == csrrs t2, mhpmevent5, zero
0x73,0x23,0x60,0x32 == csrrs t1, mhpmevent6, zero
0xf3,0x23,0x60,0x32 == csrrs t2, mhpmevent6, zero
0x73,0x23,0x70,0x32 == csrrs t1, mhpmevent7, zero
0xf3,0x23,0x70,0x32 == csrrs t2, mhpmevent7, zero
0x73,0x23,0x80,0x32 == csrrs t1, mhpmevent8, zero
0xf3,0x23,0x80,0x32 == csrrs t2, mhpmevent8, zero
0x73,0x23,0x90,0x32 == csrrs t1, mhpmevent9, zero
0xf3,0x23,0x90,0x32 == csrrs t2, mhpmevent9, zero
0x73,0x23,0xa0,0x32 == csrrs t1, mhpmevent10, zero
0xf3,0x23,0xa0,0x32 == csrrs t2, mhpmevent10, zero
0x73,0x23,0xb0,0x32 == csrrs t1, mhpmevent11, zero
0xf3,0x23,0xb0,0x32 == csrrs t2, mhpmevent11, zero
0x73,0x23,0xc0,0x32 == csrrs t1, mhpmevent12, zero
0xf3,0x23,0xc0,0x32 == csrrs t2, mhpmevent12, zero
0x73,0x23,0xd0,0x32 == csrrs t1, mhpmevent13, zero
0xf3,0x23,0xd0,0x32 == csrrs t2, mhpmevent13, zero
0x73,0x23,0xe0,0x32 == csrrs t1, mhpmevent14, zero
0xf3,0x23,0xe0,0x32 == csrrs t2, mhpmevent14, zero
0x73,0x23,0xf0,0x32 == csrrs t1, mhpmevent15, zero
0xf3,0x23,0xf0,0x32 == csrrs t2, mhpmevent15, zero
0x73,0x23,0x00,0x33 == csrrs t1, mhpmevent16, zero
0xf3,0x23,0x00,0x33 == csrrs t2, mhpmevent16, zero
0x73,0x23,0x10,0x33 == csrrs t1, mhpmevent17, zero
0xf3,0x23,0x10,0x33 == csrrs t2, mhpmevent17, zero
0x73,0x23,0x20,0x33 == csrrs t1, mhpmevent18, zero
0xf3,0x23,0x20,0x33 == csrrs t2, mhpmevent18, zero
0x73,0x23,0x30,0x33 == csrrs t1, mhpmevent19, zero
0xf3,0x23,0x30,0x33 == csrrs t2, mhpmevent19, zero
0x73,0x23,0x40,0x33 == csrrs t1, mhpmevent20, zero
0xf3,0x23,0x40,0x33 == csrrs t2, mhpmevent20, zero
0x73,0x23,0x50,0x33 == csrrs t1, mhpmevent21, zero
0xf3,0x23,0x50,0x33 == csrrs t2, mhpmevent21, zero
0x73,0x23,0x60,0x33 == csrrs t1, mhpmevent22, zero
0xf3,0x23,0x60,0x33 == csrrs t2, mhpmevent22, zero
0x73,0x23,0x70,0x33 == csrrs t1, mhpmevent23, zero
0xf3,0x23,0x70,0x33 == csrrs t2, mhpmevent23, zero
0x73,0x23,0x80,0x33 == csrrs t1, mhpmevent24, zero
0xf3,0x23,0x80,0x33 == csrrs t2, mhpmevent24, zero
0x73,0x23,0x90,0x33 == csrrs t1, mhpmevent25, zero
0xf3,0x23,0x90,0x33 == csrrs t2, mhpmevent25, zero
0x73,0x23,0xa0,0x33 == csrrs t1, mhpmevent26, zero
0xf3,0x23,0xa0,0x33 == csrrs t2, mhpmevent26, zero
0x73,0x23,0xb0,0x33 == csrrs t1, mhpmevent27, zero
0xf3,0x23,0xb0,0x33 == csrrs t2, mhpmevent27, zero
0x73,0x23,0xc0,0x33 == csrrs t1, mhpmevent28, zero
0xf3,0x23,0xc0,0x33 == csrrs t2, mhpmevent28, zero
0x73,0x23,0xd0,0x33 == csrrs t1, mhpmevent29, zero
0xf3,0x23,0xd0,0x33 == csrrs t2, mhpmevent29, zero
0x73,0x23,0xe0,0x33 == csrrs t1, mhpmevent30, zero
0xf3,0x23,0xe0,0x33 == csrrs t2, mhpmevent30, zero
0x73,0x23,0xf0,0x33 == csrrs t1, mhpmevent31, zero
0xf3,0x23,0xf0,0x33 == csrrs t2, mhpmevent31, zero
0x73,0x23,0xc0,0x30 == csrrs t1, mstateen0, zero
0xf3,0x23,0xc0,0x30 == csrrs t2, mstateen0, zero
0x73,0x23,0xd0,0x30 == csrrs t1, mstateen1, zero
0xf3,0x23,0xd0,0x30 == csrrs t2, mstateen1, zero
0x73,0x23,0xe0,0x30 == csrrs t1, mstateen2, zero
0xf3,0x23,0xe0,0x30 == csrrs t2, mstateen2, zero
0x73,0x23,0xf0,0x30 == csrrs t1, mstateen3, zero
0xf3,0x23,0xf0,0x30 == csrrs t2, mstateen3, zero
0x73,0x23,0x00,0x35 == csrrs t1, miselect, zero
0xf3,0x23,0x00,0x35 == csrrs t2, miselect, zero
0x73,0x23,0x10,0x35 == csrrs t1, mireg, zero
0xf3,0x23,0x10,0x35 == csrrs t2, mireg, zero
0x73,0x23,0xc0,0x35 == csrrs t1, mtopei, zero
0xf3,0x23,0xc0,0x35 == csrrs t2, mtopei, zero
0x73,0x23,0x00,0xfb == csrrs t1, mtopi, zero
0xf3,0x23,0x00,0xfb == csrrs t2, mtopi, zero
0x73,0x23,0x80,0x30 == csrrs t1, mvien, zero
0xf3,0x23,0x80,0x30 == csrrs t2, mvien, zero
0x73,0x23,0x90,0x30 == csrrs t1, mvip, zero
0xf3,0x23,0x90,0x30 == csrrs t2, mvip, zero

View file

@ -0,0 +1,27 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x24,0x4a,0x66 == vmand.mm v8, v4, v20
0x57,0x24,0x4a,0x76 == vmnand.mm v8, v4, v20
0x57,0x24,0x4a,0x62 == vmandn.mm v8, v4, v20
0x57,0x24,0x4a,0x6e == vmxor.mm v8, v4, v20
0x57,0x24,0x4a,0x6a == vmor.mm v8, v4, v20
0x57,0x24,0x4a,0x7a == vmnor.mm v8, v4, v20
0x57,0x24,0x4a,0x72 == vmorn.mm v8, v4, v20
0x57,0x24,0x4a,0x7e == vmxnor.mm v8, v4, v20
0x57,0x26,0x48,0x40 == vcpop.m a2, v4, v0.t
0x57,0x26,0x48,0x42 == vcpop.m a2, v4
0x57,0xa6,0x48,0x40 == vfirst.m a2, v4, v0.t
0x57,0xa6,0x48,0x42 == vfirst.m a2, v4
0x57,0xa4,0x40,0x50 == vmsbf.m v8, v4, v0.t
0x57,0xa4,0x40,0x52 == vmsbf.m v8, v4
0x57,0xa4,0x41,0x50 == vmsif.m v8, v4, v0.t
0x57,0xa4,0x41,0x52 == vmsif.m v8, v4
0x57,0x24,0x41,0x50 == vmsof.m v8, v4, v0.t
0x57,0x24,0x41,0x52 == vmsof.m v8, v4
0x57,0x24,0x48,0x50 == viota.m v8, v4, v0.t
0x57,0x24,0x48,0x52 == viota.m v8, v4
0x57,0xa4,0x08,0x50 == vid.v v8, v0.t
0x57,0xa4,0x08,0x52 == vid.v v8
0x57,0x24,0x42,0x66 == vmmv.m v8, v4
0x57,0x24,0x84,0x6e == vmclr.m v8
0x57,0x24,0x84,0x7e == vmset.m v8
0x57,0x24,0x42,0x76 == vmnot.m v8, v4

View file

@ -0,0 +1,17 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x04,0x4a,0x10 == vminu.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x12 == vminu.vv v8, v4, v20
0x57,0x44,0x45,0x10 == vminu.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x12 == vminu.vx v8, v4, a0
0x57,0x04,0x4a,0x14 == vmin.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x16 == vmin.vv v8, v4, v20
0x57,0x44,0x45,0x14 == vmin.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x16 == vmin.vx v8, v4, a0
0x57,0x04,0x4a,0x18 == vmaxu.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x1a == vmaxu.vv v8, v4, v20
0x57,0x44,0x45,0x18 == vmaxu.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x1a == vmaxu.vx v8, v4, a0
0x57,0x04,0x4a,0x1c == vmax.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x1e == vmax.vv v8, v4, v20
0x57,0x44,0x45,0x1c == vmax.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x1e == vmax.vx v8, v4, a0

View file

@ -0,0 +1,33 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x24,0x4a,0x94 == vmul.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0x96 == vmul.vv v8, v4, v20
0x57,0x64,0x45,0x94 == vmul.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x96 == vmul.vx v8, v4, a0
0x57,0x24,0x4a,0x9c == vmulh.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0x9e == vmulh.vv v8, v4, v20
0x57,0x64,0x45,0x9c == vmulh.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x9e == vmulh.vx v8, v4, a0
0x57,0x24,0x4a,0x90 == vmulhu.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0x92 == vmulhu.vv v8, v4, v20
0x57,0x64,0x45,0x90 == vmulhu.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x92 == vmulhu.vx v8, v4, a0
0x57,0x24,0x4a,0x98 == vmulhsu.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0x9a == vmulhsu.vv v8, v4, v20
0x57,0x64,0x45,0x98 == vmulhsu.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x9a == vmulhsu.vx v8, v4, a0
0x57,0x24,0x4a,0xec == vwmul.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0xee == vwmul.vv v8, v4, v20
0x57,0x64,0x45,0xec == vwmul.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0xee == vwmul.vx v8, v4, a0
0x57,0x24,0x4a,0xe0 == vwmulu.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0xe2 == vwmulu.vv v8, v4, v20
0x57,0x64,0x45,0xe0 == vwmulu.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0xe2 == vwmulu.vx v8, v4, a0
0x57,0x24,0x4a,0xe8 == vwmulsu.vv v8, v4, v20, v0.t
0x57,0x24,0x4a,0xea == vwmulsu.vv v8, v4, v20
0x57,0x64,0x45,0xe8 == vwmulsu.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0xea == vwmulsu.vx v8, v4, a0
0x57,0x04,0x4a,0x9c == vsmul.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x9e == vsmul.vv v8, v4, v20
0x57,0x44,0x45,0x9c == vsmul.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x9e == vsmul.vx v8, v4, a0

View file

@ -0,0 +1,10 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x04,0x0a,0x5e == vmv.v.v v8, v20
0x57,0x44,0x05,0x5e == vmv.v.x v8, a0
0x57,0xb4,0x07,0x5e == vmv.v.i v8, 15
0x57,0x26,0x40,0x42 == vmv.x.s a2, v4
0x57,0x64,0x05,0x42 == vmv.s.x v8, a0
0x57,0x34,0x40,0x9e == vmv1r.v v8, v4
0x57,0xb4,0x40,0x9e == vmv2r.v v8, v4
0x57,0xb4,0x41,0x9e == vmv4r.v v8, v4
0x57,0xb4,0x83,0x9f == vmv8r.v v8, v24

View file

@ -0,0 +1,10 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32", None
0x13,0x85,0x05,0x00 == mv a0, a1
0x13,0x04,0xc1,0x3f == addi s0, sp, 1020
0x2e,0x85 == mv a0, a1
0xe0,0x1f == addi s0, sp, 1020
0x07,0x20,0xc5,0x00 == flw ft0, 12(a0)
0x33,0x87,0x80,0x02 == mul a4, ra, s0
0xaf,0x22,0x03,0x10 == lr.w t0, (t1)
0xb3,0x22,0x73,0x20 == sh1add t0, t1, t2
0x08,0x61 == flw fa0, 0(a0)

View file

@ -0,0 +1,5 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV32", None
0x13,0x85,0x05,0x00 == mv a0, a1
0x13,0x04,0xc1,0x3f == addi s0, sp, 1020
0x2e,0x85 == mv a0, a1
0xe0,0x1f == addi s0, sp, 1020

View file

@ -0,0 +1,7 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x04,0x4a,0x28 == vor.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x2a == vor.vv v8, v4, v20
0x57,0x44,0x45,0x28 == vor.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x2a == vor.vx v8, v4, a0
0x57,0xb4,0x47,0x28 == vor.vi v8, v4, 15, v0.t
0x57,0xb4,0x47,0x2a == vor.vi v8, v4, 15

View file

@ -0,0 +1,25 @@
# CS_ARCH_RISCV, "CS_MODE_RISCV64"|"CS_MODE_RISCV_V", None
0x57,0x04,0x4a,0x5c == vmerge.vvm v8, v4, v20, v0
0x57,0x44,0x45,0x5c == vmerge.vxm v8, v4, a0, v0
0x57,0xb4,0x47,0x5c == vmerge.vim v8, v4, 15, v0
0x57,0x44,0x45,0x38 == vslideup.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x3a == vslideup.vx v8, v4, a0
0x57,0xb4,0x4f,0x38 == vslideup.vi v8, v4, 31, v0.t
0x57,0xb4,0x4f,0x3a == vslideup.vi v8, v4, 31
0x57,0x44,0x45,0x3c == vslidedown.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x3e == vslidedown.vx v8, v4, a0
0x57,0xb4,0x4f,0x3c == vslidedown.vi v8, v4, 31, v0.t
0x57,0xb4,0x4f,0x3e == vslidedown.vi v8, v4, 31
0x57,0x64,0x45,0x38 == vslide1up.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x3a == vslide1up.vx v8, v4, a0
0x57,0x64,0x45,0x3c == vslide1down.vx v8, v4, a0, v0.t
0x57,0x64,0x45,0x3e == vslide1down.vx v8, v4, a0
0x57,0x04,0x4a,0x30 == vrgather.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x32 == vrgather.vv v8, v4, v20
0x57,0x44,0x45,0x30 == vrgather.vx v8, v4, a0, v0.t
0x57,0x44,0x45,0x32 == vrgather.vx v8, v4, a0
0x57,0xb4,0x4f,0x30 == vrgather.vi v8, v4, 31, v0.t
0x57,0xb4,0x4f,0x32 == vrgather.vi v8, v4, 31
0x57,0x04,0x4a,0x38 == vrgatherei16.vv v8, v4, v20, v0.t
0x57,0x04,0x4a,0x3a == vrgatherei16.vv v8, v4, v20
0x57,0x24,0x4a,0x5e == vcompress.vm v8, v4, v20

Some files were not shown because too many files have changed in this diff Show more