From 9edd2d8d81595389114b35651f45ca797115b5c8 Mon Sep 17 00:00:00 2001 From: Zenithal Date: Tue, 3 May 2022 14:40:17 +0800 Subject: [PATCH 1/4] Instructions: sync from riscv-opcodes --- src/main/scala/rocket/Instructions.scala | 1936 ++++++++------------ src/main/scala/rocket/Instructions32.scala | 44 + 2 files changed, 783 insertions(+), 1197 deletions(-) create mode 100644 src/main/scala/rocket/Instructions32.scala diff --git a/src/main/scala/rocket/Instructions.scala b/src/main/scala/rocket/Instructions.scala index 7d22a3b5e46..07621f9a6b3 100644 --- a/src/main/scala/rocket/Instructions.scala +++ b/src/main/scala/rocket/Instructions.scala @@ -5,1274 +5,816 @@ package freechips.rocketchip.rocket import chisel3.util._ +/* make EXTENSIONS="rv_* rv64*" inst.chisel */ + /* Automatically generated by parse_opcodes */ object Instructions { - def SLLI_RV32 = BitPat("b0000000??????????001?????0010011") - def SRLI_RV32 = BitPat("b0000000??????????101?????0010011") - def SRAI_RV32 = BitPat("b0100000??????????101?????0010011") - def FRFLAGS = BitPat("b00000000000100000010?????1110011") - def FSFLAGS = BitPat("b000000000001?????001?????1110011") - def FSFLAGSI = BitPat("b000000000001?????101?????1110011") - def FRRM = BitPat("b00000000001000000010?????1110011") - def FSRM = BitPat("b000000000010?????001?????1110011") - def FSRMI = BitPat("b000000000010?????101?????1110011") - def FSCSR = BitPat("b000000000011?????001?????1110011") - def FRCSR = BitPat("b00000000001100000010?????1110011") - def RDCYCLE = BitPat("b11000000000000000010?????1110011") - def RDTIME = BitPat("b11000000000100000010?????1110011") - def RDINSTRET = BitPat("b11000000001000000010?????1110011") - def RDCYCLEH = BitPat("b11001000000000000010?????1110011") - def RDTIMEH = BitPat("b11001000000100000010?????1110011") - def RDINSTRETH = BitPat("b11001000001000000010?????1110011") - def SCALL = BitPat("b00000000000000000000000001110011") - def SBREAK = BitPat("b00000000000100000000000001110011") - def FMV_X_S = BitPat("b111000000000?????000?????1010011") - def FMV_S_X = BitPat("b111100000000?????000?????1010011") - def FENCE_TSO = BitPat("b100000110011?????000?????0001111") - def PAUSE = BitPat("b00000001000000000000000000001111") - def BEQ = BitPat("b?????????????????000?????1100011") - def BNE = BitPat("b?????????????????001?????1100011") - def BLT = BitPat("b?????????????????100?????1100011") - def BGE = BitPat("b?????????????????101?????1100011") - def BLTU = BitPat("b?????????????????110?????1100011") - def BGEU = BitPat("b?????????????????111?????1100011") - def JALR = BitPat("b?????????????????000?????1100111") - def JAL = BitPat("b?????????????????????????1101111") - def LUI = BitPat("b?????????????????????????0110111") - def AUIPC = BitPat("b?????????????????????????0010111") - def ADDI = BitPat("b?????????????????000?????0010011") - def SLTI = BitPat("b?????????????????010?????0010011") - def SLTIU = BitPat("b?????????????????011?????0010011") - def XORI = BitPat("b?????????????????100?????0010011") - def ORI = BitPat("b?????????????????110?????0010011") - def ANDI = BitPat("b?????????????????111?????0010011") def ADD = BitPat("b0000000??????????000?????0110011") - def SUB = BitPat("b0100000??????????000?????0110011") - def SLL = BitPat("b0000000??????????001?????0110011") - def SLT = BitPat("b0000000??????????010?????0110011") - def SLTU = BitPat("b0000000??????????011?????0110011") - def XOR = BitPat("b0000000??????????100?????0110011") - def SRL = BitPat("b0000000??????????101?????0110011") - def SRA = BitPat("b0100000??????????101?????0110011") - def OR = BitPat("b0000000??????????110?????0110011") - def AND = BitPat("b0000000??????????111?????0110011") - def LB = BitPat("b?????????????????000?????0000011") - def LH = BitPat("b?????????????????001?????0000011") - def LW = BitPat("b?????????????????010?????0000011") - def LBU = BitPat("b?????????????????100?????0000011") - def LHU = BitPat("b?????????????????101?????0000011") - def SB = BitPat("b?????????????????000?????0100011") - def SH = BitPat("b?????????????????001?????0100011") - def SW = BitPat("b?????????????????010?????0100011") - def FENCE = BitPat("b?????????????????000?????0001111") - def FENCE_I = BitPat("b?????????????????001?????0001111") + def ADD_UW = BitPat("b0000100??????????000?????0111011") + def ADDI = BitPat("b?????????????????000?????0010011") def ADDIW = BitPat("b?????????????????000?????0011011") - def SLLIW = BitPat("b0000000??????????001?????0011011") - def SRLIW = BitPat("b0000000??????????101?????0011011") - def SRAIW = BitPat("b0100000??????????101?????0011011") def ADDW = BitPat("b0000000??????????000?????0111011") - def SUBW = BitPat("b0100000??????????000?????0111011") - def SLLW = BitPat("b0000000??????????001?????0111011") - def SRLW = BitPat("b0000000??????????101?????0111011") - def SRAW = BitPat("b0100000??????????101?????0111011") - def LD = BitPat("b?????????????????011?????0000011") - def LWU = BitPat("b?????????????????110?????0000011") - def SD = BitPat("b?????????????????011?????0100011") - def SLLI = BitPat("b000000???????????001?????0010011") - def SRLI = BitPat("b000000???????????101?????0010011") - def SRAI = BitPat("b010000???????????101?????0010011") - def MUL = BitPat("b0000001??????????000?????0110011") - def MULH = BitPat("b0000001??????????001?????0110011") - def MULHSU = BitPat("b0000001??????????010?????0110011") - def MULHU = BitPat("b0000001??????????011?????0110011") - def DIV = BitPat("b0000001??????????100?????0110011") - def DIVU = BitPat("b0000001??????????101?????0110011") - def REM = BitPat("b0000001??????????110?????0110011") - def REMU = BitPat("b0000001??????????111?????0110011") - def MULW = BitPat("b0000001??????????000?????0111011") - def DIVW = BitPat("b0000001??????????100?????0111011") - def DIVUW = BitPat("b0000001??????????101?????0111011") - def REMW = BitPat("b0000001??????????110?????0111011") - def REMUW = BitPat("b0000001??????????111?????0111011") + def AES64DS = BitPat("b0011101??????????000?????0110011") + def AES64DSM = BitPat("b0011111??????????000?????0110011") + def AES64ES = BitPat("b0011001??????????000?????0110011") + def AES64ESM = BitPat("b0011011??????????000?????0110011") + def AES64IM = BitPat("b001100000000?????001?????0010011") + def AES64KS1I = BitPat("b00110001?????????001?????0010011") + def AES64KS2 = BitPat("b0111111??????????000?????0110011") + def AMOADD_D = BitPat("b00000????????????011?????0101111") def AMOADD_W = BitPat("b00000????????????010?????0101111") - def AMOXOR_W = BitPat("b00100????????????010?????0101111") - def AMOOR_W = BitPat("b01000????????????010?????0101111") + def AMOAND_D = BitPat("b01100????????????011?????0101111") def AMOAND_W = BitPat("b01100????????????010?????0101111") - def AMOMIN_W = BitPat("b10000????????????010?????0101111") + def AMOMAX_D = BitPat("b10100????????????011?????0101111") def AMOMAX_W = BitPat("b10100????????????010?????0101111") - def AMOMINU_W = BitPat("b11000????????????010?????0101111") + def AMOMAXU_D = BitPat("b11100????????????011?????0101111") def AMOMAXU_W = BitPat("b11100????????????010?????0101111") - def AMOSWAP_W = BitPat("b00001????????????010?????0101111") - def LR_W = BitPat("b00010??00000?????010?????0101111") - def SC_W = BitPat("b00011????????????010?????0101111") - def AMOADD_D = BitPat("b00000????????????011?????0101111") - def AMOXOR_D = BitPat("b00100????????????011?????0101111") - def AMOOR_D = BitPat("b01000????????????011?????0101111") - def AMOAND_D = BitPat("b01100????????????011?????0101111") def AMOMIN_D = BitPat("b10000????????????011?????0101111") - def AMOMAX_D = BitPat("b10100????????????011?????0101111") + def AMOMIN_W = BitPat("b10000????????????010?????0101111") def AMOMINU_D = BitPat("b11000????????????011?????0101111") - def AMOMAXU_D = BitPat("b11100????????????011?????0101111") + def AMOMINU_W = BitPat("b11000????????????010?????0101111") + def AMOOR_D = BitPat("b01000????????????011?????0101111") + def AMOOR_W = BitPat("b01000????????????010?????0101111") def AMOSWAP_D = BitPat("b00001????????????011?????0101111") - def LR_D = BitPat("b00010??00000?????011?????0101111") - def SC_D = BitPat("b00011????????????011?????0101111") - def HFENCE_VVMA = BitPat("b0010001??????????000000001110011") - def HFENCE_GVMA = BitPat("b0110001??????????000000001110011") - def HLV_B = BitPat("b011000000000?????100?????1110011") - def HLV_BU = BitPat("b011000000001?????100?????1110011") - def HLV_H = BitPat("b011001000000?????100?????1110011") - def HLV_HU = BitPat("b011001000001?????100?????1110011") - def HLVX_HU = BitPat("b011001000011?????100?????1110011") - def HLV_W = BitPat("b011010000000?????100?????1110011") - def HLVX_WU = BitPat("b011010000011?????100?????1110011") - def HSV_B = BitPat("b0110001??????????100000001110011") - def HSV_H = BitPat("b0110011??????????100000001110011") - def HSV_W = BitPat("b0110101??????????100000001110011") - def HLV_WU = BitPat("b011010000001?????100?????1110011") - def HLV_D = BitPat("b011011000000?????100?????1110011") - def HSV_D = BitPat("b0110111??????????100000001110011") + def AMOSWAP_W = BitPat("b00001????????????010?????0101111") + def AMOXOR_D = BitPat("b00100????????????011?????0101111") + def AMOXOR_W = BitPat("b00100????????????010?????0101111") + def AND = BitPat("b0000000??????????111?????0110011") + def ANDI = BitPat("b?????????????????111?????0010011") + def ANDN = BitPat("b0100000??????????111?????0110011") + def AUIPC = BitPat("b?????????????????????????0010111") + def BCLR = BitPat("b0100100??????????001?????0110011") + def BCLRI = BitPat("b010010???????????001?????0010011") + def BEQ = BitPat("b?????????????????000?????1100011") + def BEXT = BitPat("b0100100??????????101?????0110011") + def BEXTI = BitPat("b010010???????????101?????0010011") + def BGE = BitPat("b?????????????????101?????1100011") + def BGEU = BitPat("b?????????????????111?????1100011") + def BINV = BitPat("b0110100??????????001?????0110011") + def BINVI = BitPat("b011010???????????001?????0010011") + def BLT = BitPat("b?????????????????100?????1100011") + def BLTU = BitPat("b?????????????????110?????1100011") + def BNE = BitPat("b?????????????????001?????1100011") + def BREV8 = BitPat("b011010000111?????101?????0010011") + def BSET = BitPat("b0010100??????????001?????0110011") + def BSETI = BitPat("b001010???????????001?????0010011") + def C_ADD = BitPat("b????????????????1001??????????10") + def C_ADDI = BitPat("b????????????????000???????????01") + def C_ADDI16SP = BitPat("b????????????????011?00010?????01") + def C_ADDI4SPN = BitPat("b????????????????000???????????00") + def C_ADDIW = BitPat("b????????????????001???????????01") + def C_ADDW = BitPat("b????????????????100111???01???01") + def C_AND = BitPat("b????????????????100011???11???01") + def C_ANDI = BitPat("b????????????????100?10????????01") + def C_BEQZ = BitPat("b????????????????110???????????01") + def C_BNEZ = BitPat("b????????????????111???????????01") + def C_EBREAK = BitPat("b????????????????1001000000000010") + def C_FLD = BitPat("b????????????????001???????????00") + def C_FLDSP = BitPat("b????????????????001???????????10") + def C_FSD = BitPat("b????????????????101???????????00") + def C_FSDSP = BitPat("b????????????????101???????????10") + def C_J = BitPat("b????????????????101???????????01") + def C_JALR = BitPat("b????????????????1001?????0000010") + def C_JR = BitPat("b????????????????1000?????0000010") + def C_LD = BitPat("b????????????????011???????????00") + def C_LDSP = BitPat("b????????????????011???????????10") + def C_LI = BitPat("b????????????????010???????????01") + def C_LUI = BitPat("b????????????????011???????????01") + def C_LW = BitPat("b????????????????010???????????00") + def C_LWSP = BitPat("b????????????????010???????????10") + def C_MV = BitPat("b????????????????1000??????????10") + def C_NOP = BitPat("b????????????????000?00000?????01") + def C_OR = BitPat("b????????????????100011???10???01") + def C_SD = BitPat("b????????????????111???????????00") + def C_SDSP = BitPat("b????????????????111???????????10") + def C_SLLI = BitPat("b????????????????000???????????10") + def C_SRAI = BitPat("b????????????????100?01????????01") + def C_SRLI = BitPat("b????????????????100?00????????01") + def C_SUB = BitPat("b????????????????100011???00???01") + def C_SUBW = BitPat("b????????????????100111???00???01") + def C_SW = BitPat("b????????????????110???????????00") + def C_SWSP = BitPat("b????????????????110???????????10") + def C_XOR = BitPat("b????????????????100011???01???01") + def CBO_CLEAN = BitPat("b000000000001?????010000000001111") + def CBO_FLUSH = BitPat("b000000000010?????010000000001111") + def CBO_INVAL = BitPat("b000000000000?????010000000001111") + def CBO_ZERO = BitPat("b000000000100?????010000000001111") + def CLMUL = BitPat("b0000101??????????001?????0110011") + def CLMULH = BitPat("b0000101??????????011?????0110011") + def CLMULR = BitPat("b0000101??????????010?????0110011") + def CLZ = BitPat("b011000000000?????001?????0010011") + def CLZW = BitPat("b011000000000?????001?????0011011") + def CPOP = BitPat("b011000000010?????001?????0010011") + def CPOPW = BitPat("b011000000010?????001?????0011011") + def CSRRC = BitPat("b?????????????????011?????1110011") + def CSRRCI = BitPat("b?????????????????111?????1110011") + def CSRRS = BitPat("b?????????????????010?????1110011") + def CSRRSI = BitPat("b?????????????????110?????1110011") + def CSRRW = BitPat("b?????????????????001?????1110011") + def CSRRWI = BitPat("b?????????????????101?????1110011") + def CTZ = BitPat("b011000000001?????001?????0010011") + def CTZW = BitPat("b011000000001?????001?????0011011") + def DIV = BitPat("b0000001??????????100?????0110011") + def DIVU = BitPat("b0000001??????????101?????0110011") + def DIVUW = BitPat("b0000001??????????101?????0111011") + def DIVW = BitPat("b0000001??????????100?????0111011") + def DRET = BitPat("b01111011001000000000000001110011") + def EBREAK = BitPat("b00000000000100000000000001110011") + def ECALL = BitPat("b00000000000000000000000001110011") + def FADD_D = BitPat("b0000001??????????????????1010011") + def FADD_H = BitPat("b0000010??????????????????1010011") + def FADD_Q = BitPat("b0000011??????????????????1010011") def FADD_S = BitPat("b0000000??????????????????1010011") - def FSUB_S = BitPat("b0000100??????????????????1010011") - def FMUL_S = BitPat("b0001000??????????????????1010011") - def FDIV_S = BitPat("b0001100??????????????????1010011") - def FSGNJ_S = BitPat("b0010000??????????000?????1010011") - def FSGNJN_S = BitPat("b0010000??????????001?????1010011") - def FSGNJX_S = BitPat("b0010000??????????010?????1010011") - def FMIN_S = BitPat("b0010100??????????000?????1010011") - def FMAX_S = BitPat("b0010100??????????001?????1010011") - def FSQRT_S = BitPat("b010110000000?????????????1010011") - def FLE_S = BitPat("b1010000??????????000?????1010011") - def FLT_S = BitPat("b1010000??????????001?????1010011") - def FEQ_S = BitPat("b1010000??????????010?????1010011") - def FCVT_W_S = BitPat("b110000000000?????????????1010011") - def FCVT_WU_S = BitPat("b110000000001?????????????1010011") - def FMV_X_W = BitPat("b111000000000?????000?????1010011") + def FCLASS_D = BitPat("b111000100000?????001?????1010011") + def FCLASS_H = BitPat("b111001000000?????001?????1010011") + def FCLASS_Q = BitPat("b111001100000?????001?????1010011") def FCLASS_S = BitPat("b111000000000?????001?????1010011") - def FCVT_S_W = BitPat("b110100000000?????????????1010011") - def FCVT_S_WU = BitPat("b110100000001?????????????1010011") - def FMV_W_X = BitPat("b111100000000?????000?????1010011") - def FLW = BitPat("b?????????????????010?????0000111") - def FSW = BitPat("b?????????????????010?????0100111") - def FMADD_S = BitPat("b?????00??????????????????1000011") - def FMSUB_S = BitPat("b?????00??????????????????1000111") - def FNMSUB_S = BitPat("b?????00??????????????????1001011") - def FNMADD_S = BitPat("b?????00??????????????????1001111") + def FCVT_D_H = BitPat("b010000100010?????????????1010011") + def FCVT_D_L = BitPat("b110100100010?????????????1010011") + def FCVT_D_LU = BitPat("b110100100011?????????????1010011") + def FCVT_D_Q = BitPat("b010000100011?????????????1010011") + def FCVT_D_S = BitPat("b010000100000?????????????1010011") + def FCVT_D_W = BitPat("b110100100000?????????????1010011") + def FCVT_D_WU = BitPat("b110100100001?????????????1010011") + def FCVT_H_D = BitPat("b010001000001?????????????1010011") + def FCVT_H_L = BitPat("b110101000010?????????????1010011") + def FCVT_H_LU = BitPat("b110101000011?????????????1010011") + def FCVT_H_Q = BitPat("b010001000011?????????????1010011") + def FCVT_H_S = BitPat("b010001000000?????????????1010011") + def FCVT_H_W = BitPat("b110101000000?????????????1010011") + def FCVT_H_WU = BitPat("b110101000001?????????????1010011") + def FCVT_L_D = BitPat("b110000100010?????????????1010011") + def FCVT_L_H = BitPat("b110001000010?????????????1010011") + def FCVT_L_Q = BitPat("b110001100010?????????????1010011") def FCVT_L_S = BitPat("b110000000010?????????????1010011") + def FCVT_LU_D = BitPat("b110000100011?????????????1010011") + def FCVT_LU_H = BitPat("b110001000011?????????????1010011") + def FCVT_LU_Q = BitPat("b110001100011?????????????1010011") def FCVT_LU_S = BitPat("b110000000011?????????????1010011") + def FCVT_Q_D = BitPat("b010001100001?????????????1010011") + def FCVT_Q_H = BitPat("b010001100010?????????????1010011") + def FCVT_Q_L = BitPat("b110101100010?????????????1010011") + def FCVT_Q_LU = BitPat("b110101100011?????????????1010011") + def FCVT_Q_S = BitPat("b010001100000?????????????1010011") + def FCVT_Q_W = BitPat("b110101100000?????????????1010011") + def FCVT_Q_WU = BitPat("b110101100001?????????????1010011") + def FCVT_S_D = BitPat("b010000000001?????????????1010011") + def FCVT_S_H = BitPat("b010000000010?????????????1010011") def FCVT_S_L = BitPat("b110100000010?????????????1010011") def FCVT_S_LU = BitPat("b110100000011?????????????1010011") - def FADD_D = BitPat("b0000001??????????????????1010011") - def FSUB_D = BitPat("b0000101??????????????????1010011") - def FMUL_D = BitPat("b0001001??????????????????1010011") - def FDIV_D = BitPat("b0001101??????????????????1010011") - def FSGNJ_D = BitPat("b0010001??????????000?????1010011") - def FSGNJN_D = BitPat("b0010001??????????001?????1010011") - def FSGNJX_D = BitPat("b0010001??????????010?????1010011") - def FMIN_D = BitPat("b0010101??????????000?????1010011") - def FMAX_D = BitPat("b0010101??????????001?????1010011") - def FCVT_S_D = BitPat("b010000000001?????????????1010011") - def FCVT_D_S = BitPat("b010000100000?????????????1010011") - def FSQRT_D = BitPat("b010110100000?????????????1010011") - def FLE_D = BitPat("b1010001??????????000?????1010011") - def FLT_D = BitPat("b1010001??????????001?????1010011") - def FEQ_D = BitPat("b1010001??????????010?????1010011") + def FCVT_S_Q = BitPat("b010000000011?????????????1010011") + def FCVT_S_W = BitPat("b110100000000?????????????1010011") + def FCVT_S_WU = BitPat("b110100000001?????????????1010011") def FCVT_W_D = BitPat("b110000100000?????????????1010011") + def FCVT_W_H = BitPat("b110001000000?????????????1010011") + def FCVT_W_Q = BitPat("b110001100000?????????????1010011") + def FCVT_W_S = BitPat("b110000000000?????????????1010011") def FCVT_WU_D = BitPat("b110000100001?????????????1010011") - def FCLASS_D = BitPat("b111000100000?????001?????1010011") - def FCVT_D_W = BitPat("b110100100000?????????????1010011") - def FCVT_D_WU = BitPat("b110100100001?????????????1010011") - def FLD = BitPat("b?????????????????011?????0000111") - def FSD = BitPat("b?????????????????011?????0100111") - def FMADD_D = BitPat("b?????01??????????????????1000011") - def FMSUB_D = BitPat("b?????01??????????????????1000111") - def FNMSUB_D = BitPat("b?????01??????????????????1001011") - def FNMADD_D = BitPat("b?????01??????????????????1001111") - def FCVT_L_D = BitPat("b110000100010?????????????1010011") - def FCVT_LU_D = BitPat("b110000100011?????????????1010011") - def FMV_X_D = BitPat("b111000100000?????000?????1010011") - def FCVT_D_L = BitPat("b110100100010?????????????1010011") - def FCVT_D_LU = BitPat("b110100100011?????????????1010011") - def FMV_D_X = BitPat("b111100100000?????000?????1010011") - def FADD_Q = BitPat("b0000011??????????????????1010011") - def FSUB_Q = BitPat("b0000111??????????????????1010011") - def FMUL_Q = BitPat("b0001011??????????????????1010011") + def FCVT_WU_H = BitPat("b110001000001?????????????1010011") + def FCVT_WU_Q = BitPat("b110001100001?????????????1010011") + def FCVT_WU_S = BitPat("b110000000001?????????????1010011") + def FDIV_D = BitPat("b0001101??????????????????1010011") + def FDIV_H = BitPat("b0001110??????????????????1010011") def FDIV_Q = BitPat("b0001111??????????????????1010011") - def FSGNJ_Q = BitPat("b0010011??????????000?????1010011") - def FSGNJN_Q = BitPat("b0010011??????????001?????1010011") - def FSGNJX_Q = BitPat("b0010011??????????010?????1010011") - def FMIN_Q = BitPat("b0010111??????????000?????1010011") - def FMAX_Q = BitPat("b0010111??????????001?????1010011") - def FCVT_S_Q = BitPat("b010000000011?????????????1010011") - def FCVT_Q_S = BitPat("b010001100000?????????????1010011") - def FCVT_D_Q = BitPat("b010000100011?????????????1010011") - def FCVT_Q_D = BitPat("b010001100001?????????????1010011") - def FSQRT_Q = BitPat("b010111100000?????????????1010011") - def FLE_Q = BitPat("b1010011??????????000?????1010011") - def FLT_Q = BitPat("b1010011??????????001?????1010011") + def FDIV_S = BitPat("b0001100??????????????????1010011") + def FENCE = BitPat("b?????????????????000?????0001111") + def FENCE_I = BitPat("b?????????????????001?????0001111") + def FEQ_D = BitPat("b1010001??????????010?????1010011") + def FEQ_H = BitPat("b1010010??????????010?????1010011") def FEQ_Q = BitPat("b1010011??????????010?????1010011") - def FCVT_W_Q = BitPat("b110001100000?????????????1010011") - def FCVT_WU_Q = BitPat("b110001100001?????????????1010011") - def FCLASS_Q = BitPat("b111001100000?????001?????1010011") - def FCVT_Q_W = BitPat("b110101100000?????????????1010011") - def FCVT_Q_WU = BitPat("b110101100001?????????????1010011") + def FEQ_S = BitPat("b1010000??????????010?????1010011") + def FLD = BitPat("b?????????????????011?????0000111") + def FLE_D = BitPat("b1010001??????????000?????1010011") + def FLE_H = BitPat("b1010010??????????000?????1010011") + def FLE_Q = BitPat("b1010011??????????000?????1010011") + def FLE_S = BitPat("b1010000??????????000?????1010011") + def FLH = BitPat("b?????????????????001?????0000111") def FLQ = BitPat("b?????????????????100?????0000111") - def FSQ = BitPat("b?????????????????100?????0100111") + def FLT_D = BitPat("b1010001??????????001?????1010011") + def FLT_H = BitPat("b1010010??????????001?????1010011") + def FLT_Q = BitPat("b1010011??????????001?????1010011") + def FLT_S = BitPat("b1010000??????????001?????1010011") + def FLW = BitPat("b?????????????????010?????0000111") + def FMADD_D = BitPat("b?????01??????????????????1000011") + def FMADD_H = BitPat("b?????10??????????????????1000011") def FMADD_Q = BitPat("b?????11??????????????????1000011") + def FMADD_S = BitPat("b?????00??????????????????1000011") + def FMAX_D = BitPat("b0010101??????????001?????1010011") + def FMAX_H = BitPat("b0010110??????????001?????1010011") + def FMAX_Q = BitPat("b0010111??????????001?????1010011") + def FMAX_S = BitPat("b0010100??????????001?????1010011") + def FMIN_D = BitPat("b0010101??????????000?????1010011") + def FMIN_H = BitPat("b0010110??????????000?????1010011") + def FMIN_Q = BitPat("b0010111??????????000?????1010011") + def FMIN_S = BitPat("b0010100??????????000?????1010011") + def FMSUB_D = BitPat("b?????01??????????????????1000111") + def FMSUB_H = BitPat("b?????10??????????????????1000111") def FMSUB_Q = BitPat("b?????11??????????????????1000111") - def FNMSUB_Q = BitPat("b?????11??????????????????1001011") - def FNMADD_Q = BitPat("b?????11??????????????????1001111") - def FCVT_L_Q = BitPat("b110001100010?????????????1010011") - def FCVT_LU_Q = BitPat("b110001100011?????????????1010011") - def FCVT_Q_L = BitPat("b110101100010?????????????1010011") - def FCVT_Q_LU = BitPat("b110101100011?????????????1010011") - def SLO = BitPat("b0010000??????????001?????0110011") - def SRO = BitPat("b0010000??????????101?????0110011") - def GORC = BitPat("b0010100??????????101?????0110011") - def GREV = BitPat("b0110100??????????101?????0110011") - def SLOI = BitPat("b001000???????????001?????0010011") - def SROI = BitPat("b001000???????????101?????0010011") - def GORCI = BitPat("b001010???????????101?????0010011") - def GREVI = BitPat("b011010???????????101?????0010011") - def CMIX = BitPat("b?????11??????????001?????0110011") - def CMOV = BitPat("b?????11??????????101?????0110011") - def FSL = BitPat("b?????10??????????001?????0110011") - def FSR = BitPat("b?????10??????????101?????0110011") - def FSRI = BitPat("b?????1???????????101?????0010011") - def CRC32_B = BitPat("b011000010000?????001?????0010011") - def CRC32_H = BitPat("b011000010001?????001?????0010011") - def CRC32_W = BitPat("b011000010010?????001?????0010011") - def CRC32C_B = BitPat("b011000011000?????001?????0010011") - def CRC32C_H = BitPat("b011000011001?????001?????0010011") - def CRC32C_W = BitPat("b011000011010?????001?????0010011") - def SHFL = BitPat("b0000100??????????001?????0110011") - def UNSHFL = BitPat("b0000100??????????101?????0110011") - def BCOMPRESS = BitPat("b0000100??????????110?????0110011") - def BDECOMPRESS = BitPat("b0100100??????????110?????0110011") - def PACKU = BitPat("b0100100??????????100?????0110011") - def BFP = BitPat("b0100100??????????111?????0110011") - def SHFLI = BitPat("b0000100??????????001?????0010011") - def UNSHFLI = BitPat("b0000100??????????101?????0010011") - def XPERM16 = BitPat("b0010100??????????110?????0110011") - def BMATFLIP = BitPat("b011000000011?????001?????0010011") - def CRC32_D = BitPat("b011000010011?????001?????0010011") - def CRC32C_D = BitPat("b011000011011?????001?????0010011") - def BMATOR = BitPat("b0000100??????????011?????0110011") - def BMATXOR = BitPat("b0100100??????????011?????0110011") - def SLOW = BitPat("b0010000??????????001?????0111011") - def SROW = BitPat("b0010000??????????101?????0111011") - def GORCW = BitPat("b0010100??????????101?????0111011") - def GREVW = BitPat("b0110100??????????101?????0111011") - def SLOIW = BitPat("b0010000??????????001?????0011011") - def SROIW = BitPat("b0010000??????????101?????0011011") - def GORCIW = BitPat("b0010100??????????101?????0011011") - def GREVIW = BitPat("b0110100??????????101?????0011011") - def FSLW = BitPat("b?????10??????????001?????0111011") - def FSRW = BitPat("b?????10??????????101?????0111011") - def FSRIW = BitPat("b?????10??????????101?????0011011") - def SHFLW = BitPat("b0000100??????????001?????0111011") - def UNSHFLW = BitPat("b0000100??????????101?????0111011") - def BCOMPRESSW = BitPat("b0000100??????????110?????0111011") - def BDECOMPRESSW = BitPat("b0100100??????????110?????0111011") - def PACKUW = BitPat("b0100100??????????100?????0111011") - def BFPW = BitPat("b0100100??????????111?????0111011") - def XPERM32 = BitPat("b0010100??????????000?????0110011") - def ECALL = BitPat("b00000000000000000000000001110011") - def EBREAK = BitPat("b00000000000100000000000001110011") - def SRET = BitPat("b00010000001000000000000001110011") - def MRET = BitPat("b00110000001000000000000001110011") - def DRET = BitPat("b01111011001000000000000001110011") - def SFENCE_VMA = BitPat("b0001001??????????000000001110011") - def WFI = BitPat("b00010000010100000000000001110011") - def CSRRW = BitPat("b?????????????????001?????1110011") - def CSRRS = BitPat("b?????????????????010?????1110011") - def CSRRC = BitPat("b?????????????????011?????1110011") - def CSRRWI = BitPat("b?????????????????101?????1110011") - def CSRRSI = BitPat("b?????????????????110?????1110011") - def CSRRCI = BitPat("b?????????????????111?????1110011") - def SINVAL_VMA = BitPat("b0001011??????????000000001110011") - def SFENCE_W_INVAL = BitPat("b00011000000000000000000001110011") - def SFENCE_INVAL_IR = BitPat("b00011000000100000000000001110011") - def HINVAL_VVMA = BitPat("b0010011??????????000000001110011") - def HINVAL_GVMA = BitPat("b0110011??????????000000001110011") - def FADD_H = BitPat("b0000010??????????????????1010011") - def FSUB_H = BitPat("b0000110??????????????????1010011") + def FMSUB_S = BitPat("b?????00??????????????????1000111") + def FMUL_D = BitPat("b0001001??????????????????1010011") def FMUL_H = BitPat("b0001010??????????????????1010011") - def FDIV_H = BitPat("b0001110??????????????????1010011") + def FMUL_Q = BitPat("b0001011??????????????????1010011") + def FMUL_S = BitPat("b0001000??????????????????1010011") + def FMV_D_X = BitPat("b111100100000?????000?????1010011") + def FMV_H_X = BitPat("b111101000000?????000?????1010011") + def FMV_W_X = BitPat("b111100000000?????000?????1010011") + def FMV_X_D = BitPat("b111000100000?????000?????1010011") + def FMV_X_H = BitPat("b111001000000?????000?????1010011") + def FMV_X_W = BitPat("b111000000000?????000?????1010011") + def FNMADD_D = BitPat("b?????01??????????????????1001111") + def FNMADD_H = BitPat("b?????10??????????????????1001111") + def FNMADD_Q = BitPat("b?????11??????????????????1001111") + def FNMADD_S = BitPat("b?????00??????????????????1001111") + def FNMSUB_D = BitPat("b?????01??????????????????1001011") + def FNMSUB_H = BitPat("b?????10??????????????????1001011") + def FNMSUB_Q = BitPat("b?????11??????????????????1001011") + def FNMSUB_S = BitPat("b?????00??????????????????1001011") + def FSD = BitPat("b?????????????????011?????0100111") + def FSGNJ_D = BitPat("b0010001??????????000?????1010011") def FSGNJ_H = BitPat("b0010010??????????000?????1010011") + def FSGNJ_Q = BitPat("b0010011??????????000?????1010011") + def FSGNJ_S = BitPat("b0010000??????????000?????1010011") + def FSGNJN_D = BitPat("b0010001??????????001?????1010011") def FSGNJN_H = BitPat("b0010010??????????001?????1010011") + def FSGNJN_Q = BitPat("b0010011??????????001?????1010011") + def FSGNJN_S = BitPat("b0010000??????????001?????1010011") + def FSGNJX_D = BitPat("b0010001??????????010?????1010011") def FSGNJX_H = BitPat("b0010010??????????010?????1010011") - def FMIN_H = BitPat("b0010110??????????000?????1010011") - def FMAX_H = BitPat("b0010110??????????001?????1010011") - def FCVT_H_S = BitPat("b010001000000?????????????1010011") - def FCVT_S_H = BitPat("b010000000010?????????????1010011") - def FSQRT_H = BitPat("b010111000000?????????????1010011") - def FLE_H = BitPat("b1010010??????????000?????1010011") - def FLT_H = BitPat("b1010010??????????001?????1010011") - def FEQ_H = BitPat("b1010010??????????010?????1010011") - def FCVT_W_H = BitPat("b110001000000?????????????1010011") - def FCVT_WU_H = BitPat("b110001000001?????????????1010011") - def FMV_X_H = BitPat("b111001000000?????000?????1010011") - def FCLASS_H = BitPat("b111001000000?????001?????1010011") - def FCVT_H_W = BitPat("b110101000000?????????????1010011") - def FCVT_H_WU = BitPat("b110101000001?????????????1010011") - def FMV_H_X = BitPat("b111101000000?????000?????1010011") - def FLH = BitPat("b?????????????????001?????0000111") + def FSGNJX_Q = BitPat("b0010011??????????010?????1010011") + def FSGNJX_S = BitPat("b0010000??????????010?????1010011") def FSH = BitPat("b?????????????????001?????0100111") - def FMADD_H = BitPat("b?????10??????????????????1000011") - def FMSUB_H = BitPat("b?????10??????????????????1000111") - def FNMSUB_H = BitPat("b?????10??????????????????1001011") - def FNMADD_H = BitPat("b?????10??????????????????1001111") - def FCVT_H_D = BitPat("b010001000001?????????????1010011") - def FCVT_D_H = BitPat("b010000100010?????????????1010011") - def FCVT_H_Q = BitPat("b010001000011?????????????1010011") - def FCVT_Q_H = BitPat("b010001100010?????????????1010011") - def FCVT_L_H = BitPat("b110001000010?????????????1010011") - def FCVT_LU_H = BitPat("b110001000011?????????????1010011") - def FCVT_H_L = BitPat("b110101000010?????????????1010011") - def FCVT_H_LU = BitPat("b110101000011?????????????1010011") - def SM4ED = BitPat("b??11000??????????000?????0110011") - def SM4KS = BitPat("b??11010??????????000?????0110011") - def SM3P0 = BitPat("b000100001000?????001?????0010011") - def SM3P1 = BitPat("b000100001001?????001?????0010011") - def SHA256SUM0 = BitPat("b000100000000?????001?????0010011") - def SHA256SUM1 = BitPat("b000100000001?????001?????0010011") - def SHA256SIG0 = BitPat("b000100000010?????001?????0010011") - def SHA256SIG1 = BitPat("b000100000011?????001?????0010011") - def AES32ESMI = BitPat("b??10011??????????000?????0110011") - def AES32ESI = BitPat("b??10001??????????000?????0110011") - def AES32DSMI = BitPat("b??10111??????????000?????0110011") - def AES32DSI = BitPat("b??10101??????????000?????0110011") - def SHA512SUM0R = BitPat("b0101000??????????000?????0110011") - def SHA512SUM1R = BitPat("b0101001??????????000?????0110011") - def SHA512SIG0L = BitPat("b0101010??????????000?????0110011") - def SHA512SIG0H = BitPat("b0101110??????????000?????0110011") - def SHA512SIG1L = BitPat("b0101011??????????000?????0110011") - def SHA512SIG1H = BitPat("b0101111??????????000?????0110011") - def AES64KS1I = BitPat("b00110001?????????001?????0010011") - def AES64IM = BitPat("b001100000000?????001?????0010011") - def AES64KS2 = BitPat("b0111111??????????000?????0110011") - def AES64ESM = BitPat("b0011011??????????000?????0110011") - def AES64ES = BitPat("b0011001??????????000?????0110011") - def AES64DSM = BitPat("b0011111??????????000?????0110011") - def AES64DS = BitPat("b0011101??????????000?????0110011") - def SHA512SUM0 = BitPat("b000100000100?????001?????0010011") - def SHA512SUM1 = BitPat("b000100000101?????001?????0010011") - def SHA512SIG0 = BitPat("b000100000110?????001?????0010011") - def SHA512SIG1 = BitPat("b000100000111?????001?????0010011") - def CBO_CLEAN = BitPat("b000000000001?????010000000001111") - def CBO_FLUSH = BitPat("b000000000010?????010000000001111") - def CBO_INVAL = BitPat("b000000000000?????010000000001111") - def CBO_ZERO = BitPat("b000000000100?????010000000001111") - def PREFETCH_I = BitPat("b???????00000?????110000000010011") - def PREFETCH_R = BitPat("b???????00001?????110000000010011") - def PREFETCH_W = BitPat("b???????00011?????110000000010011") - def SH1ADD = BitPat("b0010000??????????010?????0110011") - def SH2ADD = BitPat("b0010000??????????100?????0110011") - def SH3ADD = BitPat("b0010000??????????110?????0110011") - def ANDN = BitPat("b0100000??????????111?????0110011") - def ORN = BitPat("b0100000??????????110?????0110011") - def XNOR = BitPat("b0100000??????????100?????0110011") - def ROL = BitPat("b0110000??????????001?????0110011") - def ROR = BitPat("b0110000??????????101?????0110011") - def RORI = BitPat("b011000???????????101?????0010011") - def CLZ = BitPat("b011000000000?????001?????0010011") - def CTZ = BitPat("b011000000001?????001?????0010011") - def CPOP = BitPat("b011000000010?????001?????0010011") - def SEXT_B = BitPat("b011000000100?????001?????0010011") - def SEXT_H = BitPat("b011000000101?????001?????0010011") - def MIN = BitPat("b0000101??????????100?????0110011") - def MINU = BitPat("b0000101??????????101?????0110011") + def FSQ = BitPat("b?????????????????100?????0100111") + def FSQRT_D = BitPat("b010110100000?????????????1010011") + def FSQRT_H = BitPat("b010111000000?????????????1010011") + def FSQRT_Q = BitPat("b010111100000?????????????1010011") + def FSQRT_S = BitPat("b010110000000?????????????1010011") + def FSUB_D = BitPat("b0000101??????????????????1010011") + def FSUB_H = BitPat("b0000110??????????????????1010011") + def FSUB_Q = BitPat("b0000111??????????????????1010011") + def FSUB_S = BitPat("b0000100??????????????????1010011") + def FSW = BitPat("b?????????????????010?????0100111") + def HFENCE_GVMA = BitPat("b0110001??????????000000001110011") + def HFENCE_VVMA = BitPat("b0010001??????????000000001110011") + def HINVAL_GVMA = BitPat("b0110011??????????000000001110011") + def HINVAL_VVMA = BitPat("b0010011??????????000000001110011") + def HLV_B = BitPat("b011000000000?????100?????1110011") + def HLV_BU = BitPat("b011000000001?????100?????1110011") + def HLV_D = BitPat("b011011000000?????100?????1110011") + def HLV_H = BitPat("b011001000000?????100?????1110011") + def HLV_HU = BitPat("b011001000001?????100?????1110011") + def HLV_W = BitPat("b011010000000?????100?????1110011") + def HLV_WU = BitPat("b011010000001?????100?????1110011") + def HLVX_HU = BitPat("b011001000011?????100?????1110011") + def HLVX_WU = BitPat("b011010000011?????100?????1110011") + def HSV_B = BitPat("b0110001??????????100000001110011") + def HSV_D = BitPat("b0110111??????????100000001110011") + def HSV_H = BitPat("b0110011??????????100000001110011") + def HSV_W = BitPat("b0110101??????????100000001110011") + def JAL = BitPat("b?????????????????????????1101111") + def JALR = BitPat("b?????????????????000?????1100111") + def LB = BitPat("b?????????????????000?????0000011") + def LBU = BitPat("b?????????????????100?????0000011") + def LD = BitPat("b?????????????????011?????0000011") + def LH = BitPat("b?????????????????001?????0000011") + def LHU = BitPat("b?????????????????101?????0000011") + def LR_D = BitPat("b00010??00000?????011?????0101111") + def LR_W = BitPat("b00010??00000?????010?????0101111") + def LUI = BitPat("b?????????????????????????0110111") + def LW = BitPat("b?????????????????010?????0000011") + def LWU = BitPat("b?????????????????110?????0000011") def MAX = BitPat("b0000101??????????110?????0110011") def MAXU = BitPat("b0000101??????????111?????0110011") - def ORC_B = BitPat("b001010000111?????101?????0010011") - def REV8_RV32 = BitPat("b011010011000?????101?????0010011") - def ZEXT_H_RV32 = BitPat("b000010000000?????100?????0110011") - def CLMUL = BitPat("b0000101??????????001?????0110011") - def CLMULR = BitPat("b0000101??????????010?????0110011") - def CLMULH = BitPat("b0000101??????????011?????0110011") - def PACK = BitPat("b0000100??????????100?????0110011") - def PACKH = BitPat("b0000100??????????111?????0110011") - def BREV8 = BitPat("b011010000111?????101?????0010011") - def UNZIP = BitPat("b000010001111?????101?????0010011") - def ZIP = BitPat("b000010001111?????001?????0010011") - def XPERM4 = BitPat("b0010100??????????010?????0110011") - def XPERM8 = BitPat("b0010100??????????100?????0110011") - def BCLR = BitPat("b0100100??????????001?????0110011") - def BSET = BitPat("b0010100??????????001?????0110011") - def BINV = BitPat("b0110100??????????001?????0110011") - def BEXT = BitPat("b0100100??????????101?????0110011") - def BCLRI = BitPat("b010010???????????001?????0010011") - def BSETI = BitPat("b001010???????????001?????0010011") - def BINVI = BitPat("b011010???????????001?????0010011") - def BEXTI = BitPat("b010010???????????101?????0010011") - def SLLI_UW = BitPat("b000010???????????001?????0011011") - def ADD_UW = BitPat("b0000100??????????000?????0111011") + def MIN = BitPat("b0000101??????????100?????0110011") + def MINU = BitPat("b0000101??????????101?????0110011") + def MRET = BitPat("b00110000001000000000000001110011") + def MUL = BitPat("b0000001??????????000?????0110011") + def MULH = BitPat("b0000001??????????001?????0110011") + def MULHSU = BitPat("b0000001??????????010?????0110011") + def MULHU = BitPat("b0000001??????????011?????0110011") + def MULW = BitPat("b0000001??????????000?????0111011") + def OR = BitPat("b0000000??????????110?????0110011") + def ORC_B = BitPat("b001010000111?????101?????0010011") + def ORI = BitPat("b?????????????????110?????0010011") + def ORN = BitPat("b0100000??????????110?????0110011") + def PACK = BitPat("b0000100??????????100?????0110011") + def PACKH = BitPat("b0000100??????????111?????0110011") + def PACKW = BitPat("b0000100??????????100?????0111011") + def REM = BitPat("b0000001??????????110?????0110011") + def REMU = BitPat("b0000001??????????111?????0110011") + def REMUW = BitPat("b0000001??????????111?????0111011") + def REMW = BitPat("b0000001??????????110?????0111011") + def REV8 = BitPat("b011010111000?????101?????0010011") + def ROL = BitPat("b0110000??????????001?????0110011") + def ROLW = BitPat("b0110000??????????001?????0111011") + def ROR = BitPat("b0110000??????????101?????0110011") + def RORI = BitPat("b011000???????????101?????0010011") + def RORIW = BitPat("b0110000??????????101?????0011011") + def RORW = BitPat("b0110000??????????101?????0111011") + def SB = BitPat("b?????????????????000?????0100011") + def SC_D = BitPat("b00011????????????011?????0101111") + def SC_W = BitPat("b00011????????????010?????0101111") + def SD = BitPat("b?????????????????011?????0100011") + def SEXT_B = BitPat("b011000000100?????001?????0010011") + def SEXT_H = BitPat("b011000000101?????001?????0010011") + def SFENCE_INVAL_IR = BitPat("b00011000000100000000000001110011") + def SFENCE_VMA = BitPat("b0001001??????????000000001110011") + def SFENCE_W_INVAL = BitPat("b00011000000000000000000001110011") + def SH = BitPat("b?????????????????001?????0100011") + def SH1ADD = BitPat("b0010000??????????010?????0110011") def SH1ADD_UW = BitPat("b0010000??????????010?????0111011") + def SH2ADD = BitPat("b0010000??????????100?????0110011") def SH2ADD_UW = BitPat("b0010000??????????100?????0111011") + def SH3ADD = BitPat("b0010000??????????110?????0110011") def SH3ADD_UW = BitPat("b0010000??????????110?????0111011") - def ROLW = BitPat("b0110000??????????001?????0111011") - def RORW = BitPat("b0110000??????????101?????0111011") - def RORIW = BitPat("b0110000??????????101?????0011011") - def CLZW = BitPat("b011000000000?????001?????0011011") - def CTZW = BitPat("b011000000001?????001?????0011011") - def CPOPW = BitPat("b011000000010?????001?????0011011") - def REV8 = BitPat("b011010111000?????101?????0010011") - def ZEXT_H = BitPat("b000010000000?????100?????0111011") - def PACKW = BitPat("b0000100??????????100?????0111011") - def C_NOP = BitPat("b????????????????0000000000000001") - def C_ADDI16SP = BitPat("b????????????????011?00010?????01") - def C_JR = BitPat("b????????????????1000?????0000010") - def C_JALR = BitPat("b????????????????1001?????0000010") - def C_EBREAK = BitPat("b????????????????1001000000000010") - def C_ADDI4SPN = BitPat("b????????????????000???????????00") - def C_FLD = BitPat("b????????????????001???????????00") - def C_LW = BitPat("b????????????????010???????????00") - def C_FLW = BitPat("b????????????????011???????????00") - def C_FSD = BitPat("b????????????????101???????????00") - def C_SW = BitPat("b????????????????110???????????00") - def C_FSW = BitPat("b????????????????111???????????00") - def C_ADDI = BitPat("b????????????????000???????????01") - def C_JAL = BitPat("b????????????????001???????????01") - def C_LI = BitPat("b????????????????010???????????01") - def C_LUI = BitPat("b????????????????011???????????01") - def C_SRLI = BitPat("b????????????????100?00????????01") - def C_SRAI = BitPat("b????????????????100?01????????01") - def C_ANDI = BitPat("b????????????????100?10????????01") - def C_SUB = BitPat("b????????????????100011???00???01") - def C_XOR = BitPat("b????????????????100011???01???01") - def C_OR = BitPat("b????????????????100011???10???01") - def C_AND = BitPat("b????????????????100011???11???01") - def C_J = BitPat("b????????????????101???????????01") - def C_BEQZ = BitPat("b????????????????110???????????01") - def C_BNEZ = BitPat("b????????????????111???????????01") - def C_SLLI = BitPat("b????????????????000???????????10") - def C_FLDSP = BitPat("b????????????????001???????????10") - def C_LWSP = BitPat("b????????????????010???????????10") - def C_FLWSP = BitPat("b????????????????011???????????10") - def C_MV = BitPat("b????????????????1000??????????10") - def C_ADD = BitPat("b????????????????1001??????????10") - def C_FSDSP = BitPat("b????????????????101???????????10") - def C_SWSP = BitPat("b????????????????110???????????10") - def C_FSWSP = BitPat("b????????????????111???????????10") - def C_SRLI_RV32 = BitPat("b????????????????100000????????01") - def C_SRAI_RV32 = BitPat("b????????????????100001????????01") - def C_SLLI_RV32 = BitPat("b????????????????0000??????????10") - def C_LD = BitPat("b????????????????011???????????00") - def C_SD = BitPat("b????????????????111???????????00") - def C_SUBW = BitPat("b????????????????100111???00???01") - def C_ADDW = BitPat("b????????????????100111???01???01") - def C_ADDIW = BitPat("b????????????????001???????????01") - def C_LDSP = BitPat("b????????????????011???????????10") - def C_SDSP = BitPat("b????????????????111???????????10") - def CUSTOM0 = BitPat("b?????????????????000?????0001011") - def CUSTOM0_RS1 = BitPat("b?????????????????010?????0001011") - def CUSTOM0_RS1_RS2 = BitPat("b?????????????????011?????0001011") - def CUSTOM0_RD = BitPat("b?????????????????100?????0001011") - def CUSTOM0_RD_RS1 = BitPat("b?????????????????110?????0001011") - def CUSTOM0_RD_RS1_RS2 = BitPat("b?????????????????111?????0001011") - def CUSTOM1 = BitPat("b?????????????????000?????0101011") - def CUSTOM1_RS1 = BitPat("b?????????????????010?????0101011") - def CUSTOM1_RS1_RS2 = BitPat("b?????????????????011?????0101011") - def CUSTOM1_RD = BitPat("b?????????????????100?????0101011") - def CUSTOM1_RD_RS1 = BitPat("b?????????????????110?????0101011") - def CUSTOM1_RD_RS1_RS2 = BitPat("b?????????????????111?????0101011") - def CUSTOM2 = BitPat("b?????????????????000?????1011011") - def CUSTOM2_RS1 = BitPat("b?????????????????010?????1011011") - def CUSTOM2_RS1_RS2 = BitPat("b?????????????????011?????1011011") - def CUSTOM2_RD = BitPat("b?????????????????100?????1011011") - def CUSTOM2_RD_RS1 = BitPat("b?????????????????110?????1011011") - def CUSTOM2_RD_RS1_RS2 = BitPat("b?????????????????111?????1011011") - def CUSTOM3 = BitPat("b?????????????????000?????1111011") - def CUSTOM3_RS1 = BitPat("b?????????????????010?????1111011") - def CUSTOM3_RS1_RS2 = BitPat("b?????????????????011?????1111011") - def CUSTOM3_RD = BitPat("b?????????????????100?????1111011") - def CUSTOM3_RD_RS1 = BitPat("b?????????????????110?????1111011") - def CUSTOM3_RD_RS1_RS2 = BitPat("b?????????????????111?????1111011") - def VSETIVLI = BitPat("b11???????????????111?????1010111") - def VSETVLI = BitPat("b0????????????????111?????1010111") - def VSETVL = BitPat("b1000000??????????111?????1010111") - def VLM_V = BitPat("b000000101011?????000?????0000111") - def VSM_V = BitPat("b000000101011?????000?????0100111") - def VLE8_V = BitPat("b???000?00000?????000?????0000111") - def VLE16_V = BitPat("b???000?00000?????101?????0000111") - def VLE32_V = BitPat("b???000?00000?????110?????0000111") - def VLE64_V = BitPat("b???000?00000?????111?????0000111") - def VLE128_V = BitPat("b???100?00000?????000?????0000111") - def VLE256_V = BitPat("b???100?00000?????101?????0000111") - def VLE512_V = BitPat("b???100?00000?????110?????0000111") - def VLE1024_V = BitPat("b???100?00000?????111?????0000111") - def VSE8_V = BitPat("b???000?00000?????000?????0100111") - def VSE16_V = BitPat("b???000?00000?????101?????0100111") - def VSE32_V = BitPat("b???000?00000?????110?????0100111") - def VSE64_V = BitPat("b???000?00000?????111?????0100111") - def VSE128_V = BitPat("b???100?00000?????000?????0100111") - def VSE256_V = BitPat("b???100?00000?????101?????0100111") - def VSE512_V = BitPat("b???100?00000?????110?????0100111") - def VSE1024_V = BitPat("b???100?00000?????111?????0100111") - def VLUXEI8_V = BitPat("b???001???????????000?????0000111") - def VLUXEI16_V = BitPat("b???001???????????101?????0000111") - def VLUXEI32_V = BitPat("b???001???????????110?????0000111") - def VLUXEI64_V = BitPat("b???001???????????111?????0000111") - def VLUXEI128_V = BitPat("b???101???????????000?????0000111") - def VLUXEI256_V = BitPat("b???101???????????101?????0000111") - def VLUXEI512_V = BitPat("b???101???????????110?????0000111") - def VLUXEI1024_V = BitPat("b???101???????????111?????0000111") - def VSUXEI8_V = BitPat("b???001???????????000?????0100111") - def VSUXEI16_V = BitPat("b???001???????????101?????0100111") - def VSUXEI32_V = BitPat("b???001???????????110?????0100111") - def VSUXEI64_V = BitPat("b???001???????????111?????0100111") - def VSUXEI128_V = BitPat("b???101???????????000?????0100111") - def VSUXEI256_V = BitPat("b???101???????????101?????0100111") - def VSUXEI512_V = BitPat("b???101???????????110?????0100111") - def VSUXEI1024_V = BitPat("b???101???????????111?????0100111") - def VLSE8_V = BitPat("b???010???????????000?????0000111") - def VLSE16_V = BitPat("b???010???????????101?????0000111") - def VLSE32_V = BitPat("b???010???????????110?????0000111") - def VLSE64_V = BitPat("b???010???????????111?????0000111") - def VLSE128_V = BitPat("b???110???????????000?????0000111") - def VLSE256_V = BitPat("b???110???????????101?????0000111") - def VLSE512_V = BitPat("b???110???????????110?????0000111") - def VLSE1024_V = BitPat("b???110???????????111?????0000111") - def VSSE8_V = BitPat("b???010???????????000?????0100111") - def VSSE16_V = BitPat("b???010???????????101?????0100111") - def VSSE32_V = BitPat("b???010???????????110?????0100111") - def VSSE64_V = BitPat("b???010???????????111?????0100111") - def VSSE128_V = BitPat("b???110???????????000?????0100111") - def VSSE256_V = BitPat("b???110???????????101?????0100111") - def VSSE512_V = BitPat("b???110???????????110?????0100111") - def VSSE1024_V = BitPat("b???110???????????111?????0100111") - def VLOXEI8_V = BitPat("b???011???????????000?????0000111") - def VLOXEI16_V = BitPat("b???011???????????101?????0000111") - def VLOXEI32_V = BitPat("b???011???????????110?????0000111") - def VLOXEI64_V = BitPat("b???011???????????111?????0000111") - def VLOXEI128_V = BitPat("b???111???????????000?????0000111") - def VLOXEI256_V = BitPat("b???111???????????101?????0000111") - def VLOXEI512_V = BitPat("b???111???????????110?????0000111") - def VLOXEI1024_V = BitPat("b???111???????????111?????0000111") - def VSOXEI8_V = BitPat("b???011???????????000?????0100111") - def VSOXEI16_V = BitPat("b???011???????????101?????0100111") - def VSOXEI32_V = BitPat("b???011???????????110?????0100111") - def VSOXEI64_V = BitPat("b???011???????????111?????0100111") - def VSOXEI128_V = BitPat("b???111???????????000?????0100111") - def VSOXEI256_V = BitPat("b???111???????????101?????0100111") - def VSOXEI512_V = BitPat("b???111???????????110?????0100111") - def VSOXEI1024_V = BitPat("b???111???????????111?????0100111") - def VLE8FF_V = BitPat("b???000?10000?????000?????0000111") - def VLE16FF_V = BitPat("b???000?10000?????101?????0000111") - def VLE32FF_V = BitPat("b???000?10000?????110?????0000111") - def VLE64FF_V = BitPat("b???000?10000?????111?????0000111") - def VLE128FF_V = BitPat("b???100?10000?????000?????0000111") - def VLE256FF_V = BitPat("b???100?10000?????101?????0000111") - def VLE512FF_V = BitPat("b???100?10000?????110?????0000111") - def VLE1024FF_V = BitPat("b???100?10000?????111?????0000111") - def VL1RE8_V = BitPat("b000000101000?????000?????0000111") + def SHA256SIG0 = BitPat("b000100000010?????001?????0010011") + def SHA256SIG1 = BitPat("b000100000011?????001?????0010011") + def SHA256SUM0 = BitPat("b000100000000?????001?????0010011") + def SHA256SUM1 = BitPat("b000100000001?????001?????0010011") + def SHA512SIG0 = BitPat("b000100000110?????001?????0010011") + def SHA512SIG1 = BitPat("b000100000111?????001?????0010011") + def SHA512SUM0 = BitPat("b000100000100?????001?????0010011") + def SHA512SUM1 = BitPat("b000100000101?????001?????0010011") + def SINVAL_VMA = BitPat("b0001011??????????000000001110011") + def SLL = BitPat("b0000000??????????001?????0110011") + def SLLI = BitPat("b000000???????????001?????0010011") + def SLLI_UW = BitPat("b000010???????????001?????0011011") + def SLLIW = BitPat("b0000000??????????001?????0011011") + def SLLW = BitPat("b0000000??????????001?????0111011") + def SLT = BitPat("b0000000??????????010?????0110011") + def SLTI = BitPat("b?????????????????010?????0010011") + def SLTIU = BitPat("b?????????????????011?????0010011") + def SLTU = BitPat("b0000000??????????011?????0110011") + def SM3P0 = BitPat("b000100001000?????001?????0010011") + def SM3P1 = BitPat("b000100001001?????001?????0010011") + def SM4ED = BitPat("b??11000??????????000?????0110011") + def SM4KS = BitPat("b??11010??????????000?????0110011") + def SRA = BitPat("b0100000??????????101?????0110011") + def SRAI = BitPat("b010000???????????101?????0010011") + def SRAIW = BitPat("b0100000??????????101?????0011011") + def SRAW = BitPat("b0100000??????????101?????0111011") + def SRET = BitPat("b00010000001000000000000001110011") + def SRL = BitPat("b0000000??????????101?????0110011") + def SRLI = BitPat("b000000???????????101?????0010011") + def SRLIW = BitPat("b0000000??????????101?????0011011") + def SRLW = BitPat("b0000000??????????101?????0111011") + def SUB = BitPat("b0100000??????????000?????0110011") + def SUBW = BitPat("b0100000??????????000?????0111011") + def SW = BitPat("b?????????????????010?????0100011") + def VAADD_VV = BitPat("b001001???????????010?????1010111") + def VAADD_VX = BitPat("b001001???????????110?????1010111") + def VAADDU_VV = BitPat("b001000???????????010?????1010111") + def VAADDU_VX = BitPat("b001000???????????110?????1010111") + def VADC_VIM = BitPat("b0100000??????????011?????1010111") + def VADC_VVM = BitPat("b0100000??????????000?????1010111") + def VADC_VXM = BitPat("b0100000??????????100?????1010111") + def VADD_VI = BitPat("b000000???????????011?????1010111") + def VADD_VV = BitPat("b000000???????????000?????1010111") + def VADD_VX = BitPat("b000000???????????100?????1010111") + def VAMOADDEI16_V = BitPat("b00000????????????101?????0101111") + def VAMOADDEI32_V = BitPat("b00000????????????110?????0101111") + def VAMOADDEI64_V = BitPat("b00000????????????111?????0101111") + def VAMOADDEI8_V = BitPat("b00000????????????000?????0101111") + def VAMOANDEI16_V = BitPat("b01100????????????101?????0101111") + def VAMOANDEI32_V = BitPat("b01100????????????110?????0101111") + def VAMOANDEI64_V = BitPat("b01100????????????111?????0101111") + def VAMOANDEI8_V = BitPat("b01100????????????000?????0101111") + def VAMOMAXEI16_V = BitPat("b10100????????????101?????0101111") + def VAMOMAXEI32_V = BitPat("b10100????????????110?????0101111") + def VAMOMAXEI64_V = BitPat("b10100????????????111?????0101111") + def VAMOMAXEI8_V = BitPat("b10100????????????000?????0101111") + def VAMOMAXUEI16_V = BitPat("b11100????????????101?????0101111") + def VAMOMAXUEI32_V = BitPat("b11100????????????110?????0101111") + def VAMOMAXUEI64_V = BitPat("b11100????????????111?????0101111") + def VAMOMAXUEI8_V = BitPat("b11100????????????000?????0101111") + def VAMOMINEI16_V = BitPat("b10000????????????101?????0101111") + def VAMOMINEI32_V = BitPat("b10000????????????110?????0101111") + def VAMOMINEI64_V = BitPat("b10000????????????111?????0101111") + def VAMOMINEI8_V = BitPat("b10000????????????000?????0101111") + def VAMOMINUEI16_V = BitPat("b11000????????????101?????0101111") + def VAMOMINUEI32_V = BitPat("b11000????????????110?????0101111") + def VAMOMINUEI64_V = BitPat("b11000????????????111?????0101111") + def VAMOMINUEI8_V = BitPat("b11000????????????000?????0101111") + def VAMOOREI16_V = BitPat("b01000????????????101?????0101111") + def VAMOOREI32_V = BitPat("b01000????????????110?????0101111") + def VAMOOREI64_V = BitPat("b01000????????????111?????0101111") + def VAMOOREI8_V = BitPat("b01000????????????000?????0101111") + def VAMOSWAPEI16_V = BitPat("b00001????????????101?????0101111") + def VAMOSWAPEI32_V = BitPat("b00001????????????110?????0101111") + def VAMOSWAPEI64_V = BitPat("b00001????????????111?????0101111") + def VAMOSWAPEI8_V = BitPat("b00001????????????000?????0101111") + def VAMOXOREI16_V = BitPat("b00100????????????101?????0101111") + def VAMOXOREI32_V = BitPat("b00100????????????110?????0101111") + def VAMOXOREI64_V = BitPat("b00100????????????111?????0101111") + def VAMOXOREI8_V = BitPat("b00100????????????000?????0101111") + def VAND_VI = BitPat("b001001???????????011?????1010111") + def VAND_VV = BitPat("b001001???????????000?????1010111") + def VAND_VX = BitPat("b001001???????????100?????1010111") + def VASUB_VV = BitPat("b001011???????????010?????1010111") + def VASUB_VX = BitPat("b001011???????????110?????1010111") + def VASUBU_VV = BitPat("b001010???????????010?????1010111") + def VASUBU_VX = BitPat("b001010???????????110?????1010111") + def VCOMPRESS_VM = BitPat("b0101111??????????010?????1010111") + def VCPOP_M = BitPat("b010000??????10000010?????1010111") + def VDIV_VV = BitPat("b100001???????????010?????1010111") + def VDIV_VX = BitPat("b100001???????????110?????1010111") + def VDIVU_VV = BitPat("b100000???????????010?????1010111") + def VDIVU_VX = BitPat("b100000???????????110?????1010111") + def VFADD_VF = BitPat("b000000???????????101?????1010111") + def VFADD_VV = BitPat("b000000???????????001?????1010111") + def VFCLASS_V = BitPat("b010011??????10000001?????1010111") + def VFCVT_F_X_V = BitPat("b010010??????00011001?????1010111") + def VFCVT_F_XU_V = BitPat("b010010??????00010001?????1010111") + def VFCVT_RTZ_X_F_V = BitPat("b010010??????00111001?????1010111") + def VFCVT_RTZ_XU_F_V = BitPat("b010010??????00110001?????1010111") + def VFCVT_X_F_V = BitPat("b010010??????00001001?????1010111") + def VFCVT_XU_F_V = BitPat("b010010??????00000001?????1010111") + def VFDIV_VF = BitPat("b100000???????????101?????1010111") + def VFDIV_VV = BitPat("b100000???????????001?????1010111") + def VFIRST_M = BitPat("b010000??????10001010?????1010111") + def VFMACC_VF = BitPat("b101100???????????101?????1010111") + def VFMACC_VV = BitPat("b101100???????????001?????1010111") + def VFMADD_VF = BitPat("b101000???????????101?????1010111") + def VFMADD_VV = BitPat("b101000???????????001?????1010111") + def VFMAX_VF = BitPat("b000110???????????101?????1010111") + def VFMAX_VV = BitPat("b000110???????????001?????1010111") + def VFMERGE_VFM = BitPat("b0101110??????????101?????1010111") + def VFMIN_VF = BitPat("b000100???????????101?????1010111") + def VFMIN_VV = BitPat("b000100???????????001?????1010111") + def VFMSAC_VF = BitPat("b101110???????????101?????1010111") + def VFMSAC_VV = BitPat("b101110???????????001?????1010111") + def VFMSUB_VF = BitPat("b101010???????????101?????1010111") + def VFMSUB_VV = BitPat("b101010???????????001?????1010111") + def VFMUL_VF = BitPat("b100100???????????101?????1010111") + def VFMUL_VV = BitPat("b100100???????????001?????1010111") + def VFMV_F_S = BitPat("b0100001?????00000001?????1010111") + def VFMV_S_F = BitPat("b010000100000?????101?????1010111") + def VFMV_V_F = BitPat("b010111100000?????101?????1010111") + def VFNCVT_F_F_W = BitPat("b010010??????10100001?????1010111") + def VFNCVT_F_X_W = BitPat("b010010??????10011001?????1010111") + def VFNCVT_F_XU_W = BitPat("b010010??????10010001?????1010111") + def VFNCVT_ROD_F_F_W = BitPat("b010010??????10101001?????1010111") + def VFNCVT_RTZ_X_F_W = BitPat("b010010??????10111001?????1010111") + def VFNCVT_RTZ_XU_F_W = BitPat("b010010??????10110001?????1010111") + def VFNCVT_X_F_W = BitPat("b010010??????10001001?????1010111") + def VFNCVT_XU_F_W = BitPat("b010010??????10000001?????1010111") + def VFNMACC_VF = BitPat("b101101???????????101?????1010111") + def VFNMACC_VV = BitPat("b101101???????????001?????1010111") + def VFNMADD_VF = BitPat("b101001???????????101?????1010111") + def VFNMADD_VV = BitPat("b101001???????????001?????1010111") + def VFNMSAC_VF = BitPat("b101111???????????101?????1010111") + def VFNMSAC_VV = BitPat("b101111???????????001?????1010111") + def VFNMSUB_VF = BitPat("b101011???????????101?????1010111") + def VFNMSUB_VV = BitPat("b101011???????????001?????1010111") + def VFRDIV_VF = BitPat("b100001???????????101?????1010111") + def VFREC7_V = BitPat("b010011??????00101001?????1010111") + def VFREDMAX_VS = BitPat("b000111???????????001?????1010111") + def VFREDMIN_VS = BitPat("b000101???????????001?????1010111") + def VFREDOSUM_VS = BitPat("b000011???????????001?????1010111") + def VFREDUSUM_VS = BitPat("b000001???????????001?????1010111") + def VFRSQRT7_V = BitPat("b010011??????00100001?????1010111") + def VFRSUB_VF = BitPat("b100111???????????101?????1010111") + def VFSGNJ_VF = BitPat("b001000???????????101?????1010111") + def VFSGNJ_VV = BitPat("b001000???????????001?????1010111") + def VFSGNJN_VF = BitPat("b001001???????????101?????1010111") + def VFSGNJN_VV = BitPat("b001001???????????001?????1010111") + def VFSGNJX_VF = BitPat("b001010???????????101?????1010111") + def VFSGNJX_VV = BitPat("b001010???????????001?????1010111") + def VFSLIDE1DOWN_VF = BitPat("b001111???????????101?????1010111") + def VFSLIDE1UP_VF = BitPat("b001110???????????101?????1010111") + def VFSQRT_V = BitPat("b010011??????00000001?????1010111") + def VFSUB_VF = BitPat("b000010???????????101?????1010111") + def VFSUB_VV = BitPat("b000010???????????001?????1010111") + def VFWADD_VF = BitPat("b110000???????????101?????1010111") + def VFWADD_VV = BitPat("b110000???????????001?????1010111") + def VFWADD_WF = BitPat("b110100???????????101?????1010111") + def VFWADD_WV = BitPat("b110100???????????001?????1010111") + def VFWCVT_F_F_V = BitPat("b010010??????01100001?????1010111") + def VFWCVT_F_X_V = BitPat("b010010??????01011001?????1010111") + def VFWCVT_F_XU_V = BitPat("b010010??????01010001?????1010111") + def VFWCVT_RTZ_X_F_V = BitPat("b010010??????01111001?????1010111") + def VFWCVT_RTZ_XU_F_V = BitPat("b010010??????01110001?????1010111") + def VFWCVT_X_F_V = BitPat("b010010??????01001001?????1010111") + def VFWCVT_XU_F_V = BitPat("b010010??????01000001?????1010111") + def VFWMACC_VF = BitPat("b111100???????????101?????1010111") + def VFWMACC_VV = BitPat("b111100???????????001?????1010111") + def VFWMSAC_VF = BitPat("b111110???????????101?????1010111") + def VFWMSAC_VV = BitPat("b111110???????????001?????1010111") + def VFWMUL_VF = BitPat("b111000???????????101?????1010111") + def VFWMUL_VV = BitPat("b111000???????????001?????1010111") + def VFWNMACC_VF = BitPat("b111101???????????101?????1010111") + def VFWNMACC_VV = BitPat("b111101???????????001?????1010111") + def VFWNMSAC_VF = BitPat("b111111???????????101?????1010111") + def VFWNMSAC_VV = BitPat("b111111???????????001?????1010111") + def VFWREDOSUM_VS = BitPat("b110011???????????001?????1010111") + def VFWREDUSUM_VS = BitPat("b110001???????????001?????1010111") + def VFWSUB_VF = BitPat("b110010???????????101?????1010111") + def VFWSUB_VV = BitPat("b110010???????????001?????1010111") + def VFWSUB_WF = BitPat("b110110???????????101?????1010111") + def VFWSUB_WV = BitPat("b110110???????????001?????1010111") + def VID_V = BitPat("b010100?0000010001010?????1010111") + def VIOTA_M = BitPat("b010100??????10000010?????1010111") def VL1RE16_V = BitPat("b000000101000?????101?????0000111") def VL1RE32_V = BitPat("b000000101000?????110?????0000111") def VL1RE64_V = BitPat("b000000101000?????111?????0000111") - def VL2RE8_V = BitPat("b001000101000?????000?????0000111") + def VL1RE8_V = BitPat("b000000101000?????000?????0000111") def VL2RE16_V = BitPat("b001000101000?????101?????0000111") def VL2RE32_V = BitPat("b001000101000?????110?????0000111") def VL2RE64_V = BitPat("b001000101000?????111?????0000111") - def VL4RE8_V = BitPat("b011000101000?????000?????0000111") + def VL2RE8_V = BitPat("b001000101000?????000?????0000111") def VL4RE16_V = BitPat("b011000101000?????101?????0000111") def VL4RE32_V = BitPat("b011000101000?????110?????0000111") def VL4RE64_V = BitPat("b011000101000?????111?????0000111") - def VL8RE8_V = BitPat("b111000101000?????000?????0000111") + def VL4RE8_V = BitPat("b011000101000?????000?????0000111") def VL8RE16_V = BitPat("b111000101000?????101?????0000111") def VL8RE32_V = BitPat("b111000101000?????110?????0000111") def VL8RE64_V = BitPat("b111000101000?????111?????0000111") - def VS1R_V = BitPat("b000000101000?????000?????0100111") - def VS2R_V = BitPat("b001000101000?????000?????0100111") - def VS4R_V = BitPat("b011000101000?????000?????0100111") - def VS8R_V = BitPat("b111000101000?????000?????0100111") - def VFADD_VF = BitPat("b000000???????????101?????1010111") - def VFSUB_VF = BitPat("b000010???????????101?????1010111") - def VFMIN_VF = BitPat("b000100???????????101?????1010111") - def VFMAX_VF = BitPat("b000110???????????101?????1010111") - def VFSGNJ_VF = BitPat("b001000???????????101?????1010111") - def VFSGNJN_VF = BitPat("b001001???????????101?????1010111") - def VFSGNJX_VF = BitPat("b001010???????????101?????1010111") - def VFSLIDE1UP_VF = BitPat("b001110???????????101?????1010111") - def VFSLIDE1DOWN_VF = BitPat("b001111???????????101?????1010111") - def VFMV_S_F = BitPat("b010000100000?????101?????1010111") - def VFMERGE_VFM = BitPat("b0101110??????????101?????1010111") - def VFMV_V_F = BitPat("b010111100000?????101?????1010111") - def VMFEQ_VF = BitPat("b011000???????????101?????1010111") - def VMFLE_VF = BitPat("b011001???????????101?????1010111") - def VMFLT_VF = BitPat("b011011???????????101?????1010111") - def VMFNE_VF = BitPat("b011100???????????101?????1010111") - def VMFGT_VF = BitPat("b011101???????????101?????1010111") - def VMFGE_VF = BitPat("b011111???????????101?????1010111") - def VFDIV_VF = BitPat("b100000???????????101?????1010111") - def VFRDIV_VF = BitPat("b100001???????????101?????1010111") - def VFMUL_VF = BitPat("b100100???????????101?????1010111") - def VFRSUB_VF = BitPat("b100111???????????101?????1010111") - def VFMADD_VF = BitPat("b101000???????????101?????1010111") - def VFNMADD_VF = BitPat("b101001???????????101?????1010111") - def VFMSUB_VF = BitPat("b101010???????????101?????1010111") - def VFNMSUB_VF = BitPat("b101011???????????101?????1010111") - def VFMACC_VF = BitPat("b101100???????????101?????1010111") - def VFNMACC_VF = BitPat("b101101???????????101?????1010111") - def VFMSAC_VF = BitPat("b101110???????????101?????1010111") - def VFNMSAC_VF = BitPat("b101111???????????101?????1010111") - def VFWADD_VF = BitPat("b110000???????????101?????1010111") - def VFWSUB_VF = BitPat("b110010???????????101?????1010111") - def VFWADD_WF = BitPat("b110100???????????101?????1010111") - def VFWSUB_WF = BitPat("b110110???????????101?????1010111") - def VFWMUL_VF = BitPat("b111000???????????101?????1010111") - def VFWMACC_VF = BitPat("b111100???????????101?????1010111") - def VFWNMACC_VF = BitPat("b111101???????????101?????1010111") - def VFWMSAC_VF = BitPat("b111110???????????101?????1010111") - def VFWNMSAC_VF = BitPat("b111111???????????101?????1010111") - def VFADD_VV = BitPat("b000000???????????001?????1010111") - def VFREDUSUM_VS = BitPat("b000001???????????001?????1010111") - def VFSUB_VV = BitPat("b000010???????????001?????1010111") - def VFREDOSUM_VS = BitPat("b000011???????????001?????1010111") - def VFMIN_VV = BitPat("b000100???????????001?????1010111") - def VFREDMIN_VS = BitPat("b000101???????????001?????1010111") - def VFMAX_VV = BitPat("b000110???????????001?????1010111") - def VFREDMAX_VS = BitPat("b000111???????????001?????1010111") - def VFSGNJ_VV = BitPat("b001000???????????001?????1010111") - def VFSGNJN_VV = BitPat("b001001???????????001?????1010111") - def VFSGNJX_VV = BitPat("b001010???????????001?????1010111") - def VFMV_F_S = BitPat("b0100001?????00000001?????1010111") + def VL8RE8_V = BitPat("b111000101000?????000?????0000111") + def VLE1024_V = BitPat("b???100?00000?????111?????0000111") + def VLE1024FF_V = BitPat("b???100?10000?????111?????0000111") + def VLE128_V = BitPat("b???100?00000?????000?????0000111") + def VLE128FF_V = BitPat("b???100?10000?????000?????0000111") + def VLE16_V = BitPat("b???000?00000?????101?????0000111") + def VLE16FF_V = BitPat("b???000?10000?????101?????0000111") + def VLE256_V = BitPat("b???100?00000?????101?????0000111") + def VLE256FF_V = BitPat("b???100?10000?????101?????0000111") + def VLE32_V = BitPat("b???000?00000?????110?????0000111") + def VLE32FF_V = BitPat("b???000?10000?????110?????0000111") + def VLE512_V = BitPat("b???100?00000?????110?????0000111") + def VLE512FF_V = BitPat("b???100?10000?????110?????0000111") + def VLE64_V = BitPat("b???000?00000?????111?????0000111") + def VLE64FF_V = BitPat("b???000?10000?????111?????0000111") + def VLE8_V = BitPat("b???000?00000?????000?????0000111") + def VLE8FF_V = BitPat("b???000?10000?????000?????0000111") + def VLM_V = BitPat("b000000101011?????000?????0000111") + def VLOXEI1024_V = BitPat("b???111???????????111?????0000111") + def VLOXEI128_V = BitPat("b???111???????????000?????0000111") + def VLOXEI16_V = BitPat("b???011???????????101?????0000111") + def VLOXEI256_V = BitPat("b???111???????????101?????0000111") + def VLOXEI32_V = BitPat("b???011???????????110?????0000111") + def VLOXEI512_V = BitPat("b???111???????????110?????0000111") + def VLOXEI64_V = BitPat("b???011???????????111?????0000111") + def VLOXEI8_V = BitPat("b???011???????????000?????0000111") + def VLSE1024_V = BitPat("b???110???????????111?????0000111") + def VLSE128_V = BitPat("b???110???????????000?????0000111") + def VLSE16_V = BitPat("b???010???????????101?????0000111") + def VLSE256_V = BitPat("b???110???????????101?????0000111") + def VLSE32_V = BitPat("b???010???????????110?????0000111") + def VLSE512_V = BitPat("b???110???????????110?????0000111") + def VLSE64_V = BitPat("b???010???????????111?????0000111") + def VLSE8_V = BitPat("b???010???????????000?????0000111") + def VLUXEI1024_V = BitPat("b???101???????????111?????0000111") + def VLUXEI128_V = BitPat("b???101???????????000?????0000111") + def VLUXEI16_V = BitPat("b???001???????????101?????0000111") + def VLUXEI256_V = BitPat("b???101???????????101?????0000111") + def VLUXEI32_V = BitPat("b???001???????????110?????0000111") + def VLUXEI512_V = BitPat("b???101???????????110?????0000111") + def VLUXEI64_V = BitPat("b???001???????????111?????0000111") + def VLUXEI8_V = BitPat("b???001???????????000?????0000111") + def VMACC_VV = BitPat("b101101???????????010?????1010111") + def VMACC_VX = BitPat("b101101???????????110?????1010111") + def VMADC_VI = BitPat("b0100011??????????011?????1010111") + def VMADC_VIM = BitPat("b0100010??????????011?????1010111") + def VMADC_VV = BitPat("b0100011??????????000?????1010111") + def VMADC_VVM = BitPat("b0100010??????????000?????1010111") + def VMADC_VX = BitPat("b0100011??????????100?????1010111") + def VMADC_VXM = BitPat("b0100010??????????100?????1010111") + def VMADD_VV = BitPat("b101001???????????010?????1010111") + def VMADD_VX = BitPat("b101001???????????110?????1010111") + def VMAND_MM = BitPat("b011001???????????010?????1010111") + def VMANDN_MM = BitPat("b011000???????????010?????1010111") + def VMAX_VV = BitPat("b000111???????????000?????1010111") + def VMAX_VX = BitPat("b000111???????????100?????1010111") + def VMAXU_VV = BitPat("b000110???????????000?????1010111") + def VMAXU_VX = BitPat("b000110???????????100?????1010111") + def VMERGE_VIM = BitPat("b0101110??????????011?????1010111") + def VMERGE_VVM = BitPat("b0101110??????????000?????1010111") + def VMERGE_VXM = BitPat("b0101110??????????100?????1010111") + def VMFEQ_VF = BitPat("b011000???????????101?????1010111") def VMFEQ_VV = BitPat("b011000???????????001?????1010111") + def VMFGE_VF = BitPat("b011111???????????101?????1010111") + def VMFGT_VF = BitPat("b011101???????????101?????1010111") + def VMFLE_VF = BitPat("b011001???????????101?????1010111") def VMFLE_VV = BitPat("b011001???????????001?????1010111") + def VMFLT_VF = BitPat("b011011???????????101?????1010111") def VMFLT_VV = BitPat("b011011???????????001?????1010111") + def VMFNE_VF = BitPat("b011100???????????101?????1010111") def VMFNE_VV = BitPat("b011100???????????001?????1010111") - def VFDIV_VV = BitPat("b100000???????????001?????1010111") - def VFMUL_VV = BitPat("b100100???????????001?????1010111") - def VFMADD_VV = BitPat("b101000???????????001?????1010111") - def VFNMADD_VV = BitPat("b101001???????????001?????1010111") - def VFMSUB_VV = BitPat("b101010???????????001?????1010111") - def VFNMSUB_VV = BitPat("b101011???????????001?????1010111") - def VFMACC_VV = BitPat("b101100???????????001?????1010111") - def VFNMACC_VV = BitPat("b101101???????????001?????1010111") - def VFMSAC_VV = BitPat("b101110???????????001?????1010111") - def VFNMSAC_VV = BitPat("b101111???????????001?????1010111") - def VFCVT_XU_F_V = BitPat("b010010??????00000001?????1010111") - def VFCVT_X_F_V = BitPat("b010010??????00001001?????1010111") - def VFCVT_F_XU_V = BitPat("b010010??????00010001?????1010111") - def VFCVT_F_X_V = BitPat("b010010??????00011001?????1010111") - def VFCVT_RTZ_XU_F_V = BitPat("b010010??????00110001?????1010111") - def VFCVT_RTZ_X_F_V = BitPat("b010010??????00111001?????1010111") - def VFWCVT_XU_F_V = BitPat("b010010??????01000001?????1010111") - def VFWCVT_X_F_V = BitPat("b010010??????01001001?????1010111") - def VFWCVT_F_XU_V = BitPat("b010010??????01010001?????1010111") - def VFWCVT_F_X_V = BitPat("b010010??????01011001?????1010111") - def VFWCVT_F_F_V = BitPat("b010010??????01100001?????1010111") - def VFWCVT_RTZ_XU_F_V = BitPat("b010010??????01110001?????1010111") - def VFWCVT_RTZ_X_F_V = BitPat("b010010??????01111001?????1010111") - def VFNCVT_XU_F_W = BitPat("b010010??????10000001?????1010111") - def VFNCVT_X_F_W = BitPat("b010010??????10001001?????1010111") - def VFNCVT_F_XU_W = BitPat("b010010??????10010001?????1010111") - def VFNCVT_F_X_W = BitPat("b010010??????10011001?????1010111") - def VFNCVT_F_F_W = BitPat("b010010??????10100001?????1010111") - def VFNCVT_ROD_F_F_W = BitPat("b010010??????10101001?????1010111") - def VFNCVT_RTZ_XU_F_W = BitPat("b010010??????10110001?????1010111") - def VFNCVT_RTZ_X_F_W = BitPat("b010010??????10111001?????1010111") - def VFSQRT_V = BitPat("b010011??????00000001?????1010111") - def VFRSQRT7_V = BitPat("b010011??????00100001?????1010111") - def VFREC7_V = BitPat("b010011??????00101001?????1010111") - def VFCLASS_V = BitPat("b010011??????10000001?????1010111") - def VFWADD_VV = BitPat("b110000???????????001?????1010111") - def VFWREDUSUM_VS = BitPat("b110001???????????001?????1010111") - def VFWSUB_VV = BitPat("b110010???????????001?????1010111") - def VFWREDOSUM_VS = BitPat("b110011???????????001?????1010111") - def VFWADD_WV = BitPat("b110100???????????001?????1010111") - def VFWSUB_WV = BitPat("b110110???????????001?????1010111") - def VFWMUL_VV = BitPat("b111000???????????001?????1010111") - def VFWMACC_VV = BitPat("b111100???????????001?????1010111") - def VFWNMACC_VV = BitPat("b111101???????????001?????1010111") - def VFWMSAC_VV = BitPat("b111110???????????001?????1010111") - def VFWNMSAC_VV = BitPat("b111111???????????001?????1010111") - def VADD_VX = BitPat("b000000???????????100?????1010111") - def VSUB_VX = BitPat("b000010???????????100?????1010111") - def VRSUB_VX = BitPat("b000011???????????100?????1010111") - def VMINU_VX = BitPat("b000100???????????100?????1010111") + def VMIN_VV = BitPat("b000101???????????000?????1010111") def VMIN_VX = BitPat("b000101???????????100?????1010111") - def VMAXU_VX = BitPat("b000110???????????100?????1010111") - def VMAX_VX = BitPat("b000111???????????100?????1010111") - def VAND_VX = BitPat("b001001???????????100?????1010111") - def VOR_VX = BitPat("b001010???????????100?????1010111") - def VXOR_VX = BitPat("b001011???????????100?????1010111") - def VRGATHER_VX = BitPat("b001100???????????100?????1010111") - def VSLIDEUP_VX = BitPat("b001110???????????100?????1010111") - def VSLIDEDOWN_VX = BitPat("b001111???????????100?????1010111") - def VADC_VXM = BitPat("b0100000??????????100?????1010111") - def VMADC_VXM = BitPat("b0100010??????????100?????1010111") - def VMADC_VX = BitPat("b0100011??????????100?????1010111") - def VSBC_VXM = BitPat("b0100100??????????100?????1010111") - def VMSBC_VXM = BitPat("b0100110??????????100?????1010111") + def VMINU_VV = BitPat("b000100???????????000?????1010111") + def VMINU_VX = BitPat("b000100???????????100?????1010111") + def VMNAND_MM = BitPat("b011101???????????010?????1010111") + def VMNOR_MM = BitPat("b011110???????????010?????1010111") + def VMOR_MM = BitPat("b011010???????????010?????1010111") + def VMORN_MM = BitPat("b011100???????????010?????1010111") + def VMSBC_VV = BitPat("b0100111??????????000?????1010111") + def VMSBC_VVM = BitPat("b0100110??????????000?????1010111") def VMSBC_VX = BitPat("b0100111??????????100?????1010111") - def VMERGE_VXM = BitPat("b0101110??????????100?????1010111") - def VMV_V_X = BitPat("b010111100000?????100?????1010111") + def VMSBC_VXM = BitPat("b0100110??????????100?????1010111") + def VMSBF_M = BitPat("b010100??????00001010?????1010111") + def VMSEQ_VI = BitPat("b011000???????????011?????1010111") + def VMSEQ_VV = BitPat("b011000???????????000?????1010111") def VMSEQ_VX = BitPat("b011000???????????100?????1010111") - def VMSNE_VX = BitPat("b011001???????????100?????1010111") - def VMSLTU_VX = BitPat("b011010???????????100?????1010111") - def VMSLT_VX = BitPat("b011011???????????100?????1010111") - def VMSLEU_VX = BitPat("b011100???????????100?????1010111") - def VMSLE_VX = BitPat("b011101???????????100?????1010111") - def VMSGTU_VX = BitPat("b011110???????????100?????1010111") + def VMSGT_VI = BitPat("b011111???????????011?????1010111") def VMSGT_VX = BitPat("b011111???????????100?????1010111") - def VSADDU_VX = BitPat("b100000???????????100?????1010111") - def VSADD_VX = BitPat("b100001???????????100?????1010111") - def VSSUBU_VX = BitPat("b100010???????????100?????1010111") - def VSSUB_VX = BitPat("b100011???????????100?????1010111") - def VSLL_VX = BitPat("b100101???????????100?????1010111") - def VSMUL_VX = BitPat("b100111???????????100?????1010111") - def VSRL_VX = BitPat("b101000???????????100?????1010111") - def VSRA_VX = BitPat("b101001???????????100?????1010111") - def VSSRL_VX = BitPat("b101010???????????100?????1010111") - def VSSRA_VX = BitPat("b101011???????????100?????1010111") - def VNSRL_WX = BitPat("b101100???????????100?????1010111") - def VNSRA_WX = BitPat("b101101???????????100?????1010111") - def VNCLIPU_WX = BitPat("b101110???????????100?????1010111") + def VMSGTU_VI = BitPat("b011110???????????011?????1010111") + def VMSGTU_VX = BitPat("b011110???????????100?????1010111") + def VMSIF_M = BitPat("b010100??????00011010?????1010111") + def VMSLE_VI = BitPat("b011101???????????011?????1010111") + def VMSLE_VV = BitPat("b011101???????????000?????1010111") + def VMSLE_VX = BitPat("b011101???????????100?????1010111") + def VMSLEU_VI = BitPat("b011100???????????011?????1010111") + def VMSLEU_VV = BitPat("b011100???????????000?????1010111") + def VMSLEU_VX = BitPat("b011100???????????100?????1010111") + def VMSLT_VV = BitPat("b011011???????????000?????1010111") + def VMSLT_VX = BitPat("b011011???????????100?????1010111") + def VMSLTU_VV = BitPat("b011010???????????000?????1010111") + def VMSLTU_VX = BitPat("b011010???????????100?????1010111") + def VMSNE_VI = BitPat("b011001???????????011?????1010111") + def VMSNE_VV = BitPat("b011001???????????000?????1010111") + def VMSNE_VX = BitPat("b011001???????????100?????1010111") + def VMSOF_M = BitPat("b010100??????00010010?????1010111") + def VMUL_VV = BitPat("b100101???????????010?????1010111") + def VMUL_VX = BitPat("b100101???????????110?????1010111") + def VMULH_VV = BitPat("b100111???????????010?????1010111") + def VMULH_VX = BitPat("b100111???????????110?????1010111") + def VMULHSU_VV = BitPat("b100110???????????010?????1010111") + def VMULHSU_VX = BitPat("b100110???????????110?????1010111") + def VMULHU_VV = BitPat("b100100???????????010?????1010111") + def VMULHU_VX = BitPat("b100100???????????110?????1010111") + def VMV1R_V = BitPat("b1001111?????00000011?????1010111") + def VMV2R_V = BitPat("b1001111?????00001011?????1010111") + def VMV4R_V = BitPat("b1001111?????00011011?????1010111") + def VMV8R_V = BitPat("b1001111?????00111011?????1010111") + def VMV_S_X = BitPat("b010000100000?????110?????1010111") + def VMV_V_I = BitPat("b010111100000?????011?????1010111") + def VMV_V_V = BitPat("b010111100000?????000?????1010111") + def VMV_V_X = BitPat("b010111100000?????100?????1010111") + def VMV_X_S = BitPat("b0100001?????00000010?????1010111") + def VMXNOR_MM = BitPat("b011111???????????010?????1010111") + def VMXOR_MM = BitPat("b011011???????????010?????1010111") + def VNCLIP_WI = BitPat("b101111???????????011?????1010111") + def VNCLIP_WV = BitPat("b101111???????????000?????1010111") def VNCLIP_WX = BitPat("b101111???????????100?????1010111") - def VADD_VV = BitPat("b000000???????????000?????1010111") - def VSUB_VV = BitPat("b000010???????????000?????1010111") - def VMINU_VV = BitPat("b000100???????????000?????1010111") - def VMIN_VV = BitPat("b000101???????????000?????1010111") - def VMAXU_VV = BitPat("b000110???????????000?????1010111") - def VMAX_VV = BitPat("b000111???????????000?????1010111") - def VAND_VV = BitPat("b001001???????????000?????1010111") + def VNCLIPU_WI = BitPat("b101110???????????011?????1010111") + def VNCLIPU_WV = BitPat("b101110???????????000?????1010111") + def VNCLIPU_WX = BitPat("b101110???????????100?????1010111") + def VNMSAC_VV = BitPat("b101111???????????010?????1010111") + def VNMSAC_VX = BitPat("b101111???????????110?????1010111") + def VNMSUB_VV = BitPat("b101011???????????010?????1010111") + def VNMSUB_VX = BitPat("b101011???????????110?????1010111") + def VNSRA_WI = BitPat("b101101???????????011?????1010111") + def VNSRA_WV = BitPat("b101101???????????000?????1010111") + def VNSRA_WX = BitPat("b101101???????????100?????1010111") + def VNSRL_WI = BitPat("b101100???????????011?????1010111") + def VNSRL_WV = BitPat("b101100???????????000?????1010111") + def VNSRL_WX = BitPat("b101100???????????100?????1010111") + def VOR_VI = BitPat("b001010???????????011?????1010111") def VOR_VV = BitPat("b001010???????????000?????1010111") - def VXOR_VV = BitPat("b001011???????????000?????1010111") + def VOR_VX = BitPat("b001010???????????100?????1010111") + def VREDAND_VS = BitPat("b000001???????????010?????1010111") + def VREDMAX_VS = BitPat("b000111???????????010?????1010111") + def VREDMAXU_VS = BitPat("b000110???????????010?????1010111") + def VREDMIN_VS = BitPat("b000101???????????010?????1010111") + def VREDMINU_VS = BitPat("b000100???????????010?????1010111") + def VREDOR_VS = BitPat("b000010???????????010?????1010111") + def VREDSUM_VS = BitPat("b000000???????????010?????1010111") + def VREDXOR_VS = BitPat("b000011???????????010?????1010111") + def VREM_VV = BitPat("b100011???????????010?????1010111") + def VREM_VX = BitPat("b100011???????????110?????1010111") + def VREMU_VV = BitPat("b100010???????????010?????1010111") + def VREMU_VX = BitPat("b100010???????????110?????1010111") + def VRGATHER_VI = BitPat("b001100???????????011?????1010111") def VRGATHER_VV = BitPat("b001100???????????000?????1010111") + def VRGATHER_VX = BitPat("b001100???????????100?????1010111") def VRGATHEREI16_VV = BitPat("b001110???????????000?????1010111") - def VADC_VVM = BitPat("b0100000??????????000?????1010111") - def VMADC_VVM = BitPat("b0100010??????????000?????1010111") - def VMADC_VV = BitPat("b0100011??????????000?????1010111") - def VSBC_VVM = BitPat("b0100100??????????000?????1010111") - def VMSBC_VVM = BitPat("b0100110??????????000?????1010111") - def VMSBC_VV = BitPat("b0100111??????????000?????1010111") - def VMERGE_VVM = BitPat("b0101110??????????000?????1010111") - def VMV_V_V = BitPat("b010111100000?????000?????1010111") - def VMSEQ_VV = BitPat("b011000???????????000?????1010111") - def VMSNE_VV = BitPat("b011001???????????000?????1010111") - def VMSLTU_VV = BitPat("b011010???????????000?????1010111") - def VMSLT_VV = BitPat("b011011???????????000?????1010111") - def VMSLEU_VV = BitPat("b011100???????????000?????1010111") - def VMSLE_VV = BitPat("b011101???????????000?????1010111") - def VSADDU_VV = BitPat("b100000???????????000?????1010111") + def VRSUB_VI = BitPat("b000011???????????011?????1010111") + def VRSUB_VX = BitPat("b000011???????????100?????1010111") + def VS1R_V = BitPat("b000000101000?????000?????0100111") + def VS2R_V = BitPat("b001000101000?????000?????0100111") + def VS4R_V = BitPat("b011000101000?????000?????0100111") + def VS8R_V = BitPat("b111000101000?????000?????0100111") + def VSADD_VI = BitPat("b100001???????????011?????1010111") def VSADD_VV = BitPat("b100001???????????000?????1010111") - def VSSUBU_VV = BitPat("b100010???????????000?????1010111") - def VSSUB_VV = BitPat("b100011???????????000?????1010111") + def VSADD_VX = BitPat("b100001???????????100?????1010111") + def VSADDU_VI = BitPat("b100000???????????011?????1010111") + def VSADDU_VV = BitPat("b100000???????????000?????1010111") + def VSADDU_VX = BitPat("b100000???????????100?????1010111") + def VSBC_VVM = BitPat("b0100100??????????000?????1010111") + def VSBC_VXM = BitPat("b0100100??????????100?????1010111") + def VSE1024_V = BitPat("b???100?00000?????111?????0100111") + def VSE128_V = BitPat("b???100?00000?????000?????0100111") + def VSE16_V = BitPat("b???000?00000?????101?????0100111") + def VSE256_V = BitPat("b???100?00000?????101?????0100111") + def VSE32_V = BitPat("b???000?00000?????110?????0100111") + def VSE512_V = BitPat("b???100?00000?????110?????0100111") + def VSE64_V = BitPat("b???000?00000?????111?????0100111") + def VSE8_V = BitPat("b???000?00000?????000?????0100111") + def VSETIVLI = BitPat("b11???????????????111?????1010111") + def VSETVL = BitPat("b1000000??????????111?????1010111") + def VSETVLI = BitPat("b0????????????????111?????1010111") + def VSEXT_VF2 = BitPat("b010010??????00111010?????1010111") + def VSEXT_VF4 = BitPat("b010010??????00101010?????1010111") + def VSEXT_VF8 = BitPat("b010010??????00011010?????1010111") + def VSLIDE1DOWN_VX = BitPat("b001111???????????110?????1010111") + def VSLIDE1UP_VX = BitPat("b001110???????????110?????1010111") + def VSLIDEDOWN_VI = BitPat("b001111???????????011?????1010111") + def VSLIDEDOWN_VX = BitPat("b001111???????????100?????1010111") + def VSLIDEUP_VI = BitPat("b001110???????????011?????1010111") + def VSLIDEUP_VX = BitPat("b001110???????????100?????1010111") + def VSLL_VI = BitPat("b100101???????????011?????1010111") def VSLL_VV = BitPat("b100101???????????000?????1010111") + def VSLL_VX = BitPat("b100101???????????100?????1010111") + def VSM_V = BitPat("b000000101011?????000?????0100111") def VSMUL_VV = BitPat("b100111???????????000?????1010111") - def VSRL_VV = BitPat("b101000???????????000?????1010111") + def VSMUL_VX = BitPat("b100111???????????100?????1010111") + def VSOXEI1024_V = BitPat("b???111???????????111?????0100111") + def VSOXEI128_V = BitPat("b???111???????????000?????0100111") + def VSOXEI16_V = BitPat("b???011???????????101?????0100111") + def VSOXEI256_V = BitPat("b???111???????????101?????0100111") + def VSOXEI32_V = BitPat("b???011???????????110?????0100111") + def VSOXEI512_V = BitPat("b???111???????????110?????0100111") + def VSOXEI64_V = BitPat("b???011???????????111?????0100111") + def VSOXEI8_V = BitPat("b???011???????????000?????0100111") + def VSRA_VI = BitPat("b101001???????????011?????1010111") def VSRA_VV = BitPat("b101001???????????000?????1010111") - def VSSRL_VV = BitPat("b101010???????????000?????1010111") - def VSSRA_VV = BitPat("b101011???????????000?????1010111") - def VNSRL_WV = BitPat("b101100???????????000?????1010111") - def VNSRA_WV = BitPat("b101101???????????000?????1010111") - def VNCLIPU_WV = BitPat("b101110???????????000?????1010111") - def VNCLIP_WV = BitPat("b101111???????????000?????1010111") - def VWREDSUMU_VS = BitPat("b110000???????????000?????1010111") - def VWREDSUM_VS = BitPat("b110001???????????000?????1010111") - def VADD_VI = BitPat("b000000???????????011?????1010111") - def VRSUB_VI = BitPat("b000011???????????011?????1010111") - def VAND_VI = BitPat("b001001???????????011?????1010111") - def VOR_VI = BitPat("b001010???????????011?????1010111") - def VXOR_VI = BitPat("b001011???????????011?????1010111") - def VRGATHER_VI = BitPat("b001100???????????011?????1010111") - def VSLIDEUP_VI = BitPat("b001110???????????011?????1010111") - def VSLIDEDOWN_VI = BitPat("b001111???????????011?????1010111") - def VADC_VIM = BitPat("b0100000??????????011?????1010111") - def VMADC_VIM = BitPat("b0100010??????????011?????1010111") - def VMADC_VI = BitPat("b0100011??????????011?????1010111") - def VMERGE_VIM = BitPat("b0101110??????????011?????1010111") - def VMV_V_I = BitPat("b010111100000?????011?????1010111") - def VMSEQ_VI = BitPat("b011000???????????011?????1010111") - def VMSNE_VI = BitPat("b011001???????????011?????1010111") - def VMSLEU_VI = BitPat("b011100???????????011?????1010111") - def VMSLE_VI = BitPat("b011101???????????011?????1010111") - def VMSGTU_VI = BitPat("b011110???????????011?????1010111") - def VMSGT_VI = BitPat("b011111???????????011?????1010111") - def VSADDU_VI = BitPat("b100000???????????011?????1010111") - def VSADD_VI = BitPat("b100001???????????011?????1010111") - def VSLL_VI = BitPat("b100101???????????011?????1010111") - def VMV1R_V = BitPat("b1001111?????00000011?????1010111") - def VMV2R_V = BitPat("b1001111?????00001011?????1010111") - def VMV4R_V = BitPat("b1001111?????00011011?????1010111") - def VMV8R_V = BitPat("b1001111?????00111011?????1010111") + def VSRA_VX = BitPat("b101001???????????100?????1010111") def VSRL_VI = BitPat("b101000???????????011?????1010111") - def VSRA_VI = BitPat("b101001???????????011?????1010111") - def VSSRL_VI = BitPat("b101010???????????011?????1010111") + def VSRL_VV = BitPat("b101000???????????000?????1010111") + def VSRL_VX = BitPat("b101000???????????100?????1010111") + def VSSE1024_V = BitPat("b???110???????????111?????0100111") + def VSSE128_V = BitPat("b???110???????????000?????0100111") + def VSSE16_V = BitPat("b???010???????????101?????0100111") + def VSSE256_V = BitPat("b???110???????????101?????0100111") + def VSSE32_V = BitPat("b???010???????????110?????0100111") + def VSSE512_V = BitPat("b???110???????????110?????0100111") + def VSSE64_V = BitPat("b???010???????????111?????0100111") + def VSSE8_V = BitPat("b???010???????????000?????0100111") def VSSRA_VI = BitPat("b101011???????????011?????1010111") - def VNSRL_WI = BitPat("b101100???????????011?????1010111") - def VNSRA_WI = BitPat("b101101???????????011?????1010111") - def VNCLIPU_WI = BitPat("b101110???????????011?????1010111") - def VNCLIP_WI = BitPat("b101111???????????011?????1010111") - def VREDSUM_VS = BitPat("b000000???????????010?????1010111") - def VREDAND_VS = BitPat("b000001???????????010?????1010111") - def VREDOR_VS = BitPat("b000010???????????010?????1010111") - def VREDXOR_VS = BitPat("b000011???????????010?????1010111") - def VREDMINU_VS = BitPat("b000100???????????010?????1010111") - def VREDMIN_VS = BitPat("b000101???????????010?????1010111") - def VREDMAXU_VS = BitPat("b000110???????????010?????1010111") - def VREDMAX_VS = BitPat("b000111???????????010?????1010111") - def VAADDU_VV = BitPat("b001000???????????010?????1010111") - def VAADD_VV = BitPat("b001001???????????010?????1010111") - def VASUBU_VV = BitPat("b001010???????????010?????1010111") - def VASUB_VV = BitPat("b001011???????????010?????1010111") - def VMV_X_S = BitPat("b0100001?????00000010?????1010111") - def VZEXT_VF8 = BitPat("b010010??????00010010?????1010111") - def VSEXT_VF8 = BitPat("b010010??????00011010?????1010111") - def VZEXT_VF4 = BitPat("b010010??????00100010?????1010111") - def VSEXT_VF4 = BitPat("b010010??????00101010?????1010111") - def VZEXT_VF2 = BitPat("b010010??????00110010?????1010111") - def VSEXT_VF2 = BitPat("b010010??????00111010?????1010111") - def VCOMPRESS_VM = BitPat("b0101111??????????010?????1010111") - def VMANDN_MM = BitPat("b011000???????????010?????1010111") - def VMAND_MM = BitPat("b011001???????????010?????1010111") - def VMOR_MM = BitPat("b011010???????????010?????1010111") - def VMXOR_MM = BitPat("b011011???????????010?????1010111") - def VMORN_MM = BitPat("b011100???????????010?????1010111") - def VMNAND_MM = BitPat("b011101???????????010?????1010111") - def VMNOR_MM = BitPat("b011110???????????010?????1010111") - def VMXNOR_MM = BitPat("b011111???????????010?????1010111") - def VMSBF_M = BitPat("b010100??????00001010?????1010111") - def VMSOF_M = BitPat("b010100??????00010010?????1010111") - def VMSIF_M = BitPat("b010100??????00011010?????1010111") - def VIOTA_M = BitPat("b010100??????10000010?????1010111") - def VID_V = BitPat("b010100?0000010001010?????1010111") - def VCPOP_M = BitPat("b010000??????10000010?????1010111") - def VFIRST_M = BitPat("b010000??????10001010?????1010111") - def VDIVU_VV = BitPat("b100000???????????010?????1010111") - def VDIV_VV = BitPat("b100001???????????010?????1010111") - def VREMU_VV = BitPat("b100010???????????010?????1010111") - def VREM_VV = BitPat("b100011???????????010?????1010111") - def VMULHU_VV = BitPat("b100100???????????010?????1010111") - def VMUL_VV = BitPat("b100101???????????010?????1010111") - def VMULHSU_VV = BitPat("b100110???????????010?????1010111") - def VMULH_VV = BitPat("b100111???????????010?????1010111") - def VMADD_VV = BitPat("b101001???????????010?????1010111") - def VNMSUB_VV = BitPat("b101011???????????010?????1010111") - def VMACC_VV = BitPat("b101101???????????010?????1010111") - def VNMSAC_VV = BitPat("b101111???????????010?????1010111") - def VWADDU_VV = BitPat("b110000???????????010?????1010111") + def VSSRA_VV = BitPat("b101011???????????000?????1010111") + def VSSRA_VX = BitPat("b101011???????????100?????1010111") + def VSSRL_VI = BitPat("b101010???????????011?????1010111") + def VSSRL_VV = BitPat("b101010???????????000?????1010111") + def VSSRL_VX = BitPat("b101010???????????100?????1010111") + def VSSUB_VV = BitPat("b100011???????????000?????1010111") + def VSSUB_VX = BitPat("b100011???????????100?????1010111") + def VSSUBU_VV = BitPat("b100010???????????000?????1010111") + def VSSUBU_VX = BitPat("b100010???????????100?????1010111") + def VSUB_VV = BitPat("b000010???????????000?????1010111") + def VSUB_VX = BitPat("b000010???????????100?????1010111") + def VSUXEI1024_V = BitPat("b???101???????????111?????0100111") + def VSUXEI128_V = BitPat("b???101???????????000?????0100111") + def VSUXEI16_V = BitPat("b???001???????????101?????0100111") + def VSUXEI256_V = BitPat("b???101???????????101?????0100111") + def VSUXEI32_V = BitPat("b???001???????????110?????0100111") + def VSUXEI512_V = BitPat("b???101???????????110?????0100111") + def VSUXEI64_V = BitPat("b???001???????????111?????0100111") + def VSUXEI8_V = BitPat("b???001???????????000?????0100111") def VWADD_VV = BitPat("b110001???????????010?????1010111") - def VWSUBU_VV = BitPat("b110010???????????010?????1010111") - def VWSUB_VV = BitPat("b110011???????????010?????1010111") - def VWADDU_WV = BitPat("b110100???????????010?????1010111") + def VWADD_VX = BitPat("b110001???????????110?????1010111") def VWADD_WV = BitPat("b110101???????????010?????1010111") - def VWSUBU_WV = BitPat("b110110???????????010?????1010111") - def VWSUB_WV = BitPat("b110111???????????010?????1010111") - def VWMULU_VV = BitPat("b111000???????????010?????1010111") - def VWMULSU_VV = BitPat("b111010???????????010?????1010111") - def VWMUL_VV = BitPat("b111011???????????010?????1010111") - def VWMACCU_VV = BitPat("b111100???????????010?????1010111") - def VWMACC_VV = BitPat("b111101???????????010?????1010111") - def VWMACCSU_VV = BitPat("b111111???????????010?????1010111") - def VAADDU_VX = BitPat("b001000???????????110?????1010111") - def VAADD_VX = BitPat("b001001???????????110?????1010111") - def VASUBU_VX = BitPat("b001010???????????110?????1010111") - def VASUB_VX = BitPat("b001011???????????110?????1010111") - def VMV_S_X = BitPat("b010000100000?????110?????1010111") - def VSLIDE1UP_VX = BitPat("b001110???????????110?????1010111") - def VSLIDE1DOWN_VX = BitPat("b001111???????????110?????1010111") - def VDIVU_VX = BitPat("b100000???????????110?????1010111") - def VDIV_VX = BitPat("b100001???????????110?????1010111") - def VREMU_VX = BitPat("b100010???????????110?????1010111") - def VREM_VX = BitPat("b100011???????????110?????1010111") - def VMULHU_VX = BitPat("b100100???????????110?????1010111") - def VMUL_VX = BitPat("b100101???????????110?????1010111") - def VMULHSU_VX = BitPat("b100110???????????110?????1010111") - def VMULH_VX = BitPat("b100111???????????110?????1010111") - def VMADD_VX = BitPat("b101001???????????110?????1010111") - def VNMSUB_VX = BitPat("b101011???????????110?????1010111") - def VMACC_VX = BitPat("b101101???????????110?????1010111") - def VNMSAC_VX = BitPat("b101111???????????110?????1010111") + def VWADD_WX = BitPat("b110101???????????110?????1010111") + def VWADDU_VV = BitPat("b110000???????????010?????1010111") def VWADDU_VX = BitPat("b110000???????????110?????1010111") - def VWADD_VX = BitPat("b110001???????????110?????1010111") - def VWSUBU_VX = BitPat("b110010???????????110?????1010111") - def VWSUB_VX = BitPat("b110011???????????110?????1010111") + def VWADDU_WV = BitPat("b110100???????????010?????1010111") def VWADDU_WX = BitPat("b110100???????????110?????1010111") - def VWADD_WX = BitPat("b110101???????????110?????1010111") - def VWSUBU_WX = BitPat("b110110???????????110?????1010111") - def VWSUB_WX = BitPat("b110111???????????110?????1010111") - def VWMULU_VX = BitPat("b111000???????????110?????1010111") - def VWMULSU_VX = BitPat("b111010???????????110?????1010111") - def VWMUL_VX = BitPat("b111011???????????110?????1010111") - def VWMACCU_VX = BitPat("b111100???????????110?????1010111") + def VWMACC_VV = BitPat("b111101???????????010?????1010111") def VWMACC_VX = BitPat("b111101???????????110?????1010111") - def VWMACCUS_VX = BitPat("b111110???????????110?????1010111") + def VWMACCSU_VV = BitPat("b111111???????????010?????1010111") def VWMACCSU_VX = BitPat("b111111???????????110?????1010111") - def VAMOSWAPEI8_V = BitPat("b00001????????????000?????0101111") - def VAMOADDEI8_V = BitPat("b00000????????????000?????0101111") - def VAMOXOREI8_V = BitPat("b00100????????????000?????0101111") - def VAMOANDEI8_V = BitPat("b01100????????????000?????0101111") - def VAMOOREI8_V = BitPat("b01000????????????000?????0101111") - def VAMOMINEI8_V = BitPat("b10000????????????000?????0101111") - def VAMOMAXEI8_V = BitPat("b10100????????????000?????0101111") - def VAMOMINUEI8_V = BitPat("b11000????????????000?????0101111") - def VAMOMAXUEI8_V = BitPat("b11100????????????000?????0101111") - def VAMOSWAPEI16_V = BitPat("b00001????????????101?????0101111") - def VAMOADDEI16_V = BitPat("b00000????????????101?????0101111") - def VAMOXOREI16_V = BitPat("b00100????????????101?????0101111") - def VAMOANDEI16_V = BitPat("b01100????????????101?????0101111") - def VAMOOREI16_V = BitPat("b01000????????????101?????0101111") - def VAMOMINEI16_V = BitPat("b10000????????????101?????0101111") - def VAMOMAXEI16_V = BitPat("b10100????????????101?????0101111") - def VAMOMINUEI16_V = BitPat("b11000????????????101?????0101111") - def VAMOMAXUEI16_V = BitPat("b11100????????????101?????0101111") - def VAMOSWAPEI32_V = BitPat("b00001????????????110?????0101111") - def VAMOADDEI32_V = BitPat("b00000????????????110?????0101111") - def VAMOXOREI32_V = BitPat("b00100????????????110?????0101111") - def VAMOANDEI32_V = BitPat("b01100????????????110?????0101111") - def VAMOOREI32_V = BitPat("b01000????????????110?????0101111") - def VAMOMINEI32_V = BitPat("b10000????????????110?????0101111") - def VAMOMAXEI32_V = BitPat("b10100????????????110?????0101111") - def VAMOMINUEI32_V = BitPat("b11000????????????110?????0101111") - def VAMOMAXUEI32_V = BitPat("b11100????????????110?????0101111") - def VAMOSWAPEI64_V = BitPat("b00001????????????111?????0101111") - def VAMOADDEI64_V = BitPat("b00000????????????111?????0101111") - def VAMOXOREI64_V = BitPat("b00100????????????111?????0101111") - def VAMOANDEI64_V = BitPat("b01100????????????111?????0101111") - def VAMOOREI64_V = BitPat("b01000????????????111?????0101111") - def VAMOMINEI64_V = BitPat("b10000????????????111?????0101111") - def VAMOMAXEI64_V = BitPat("b10100????????????111?????0101111") - def VAMOMINUEI64_V = BitPat("b11000????????????111?????0101111") - def VAMOMAXUEI64_V = BitPat("b11100????????????111?????0101111") - def ADD8 = BitPat("b0100100??????????000?????1110111") - def ADD16 = BitPat("b0100000??????????000?????1110111") - def ADD64 = BitPat("b1100000??????????001?????1110111") - def AVE = BitPat("b1110000??????????000?????1110111") - def BITREV = BitPat("b1110011??????????000?????1110111") - def BITREVI = BitPat("b111010???????????000?????1110111") - def BPICK = BitPat("b?????00??????????011?????1110111") - def CLRS8 = BitPat("b101011100000?????000?????1110111") - def CLRS16 = BitPat("b101011101000?????000?????1110111") - def CLRS32 = BitPat("b101011111000?????000?????1110111") - def CLO8 = BitPat("b101011100011?????000?????1110111") - def CLO16 = BitPat("b101011101011?????000?????1110111") - def CLO32 = BitPat("b101011111011?????000?????1110111") - def CLZ8 = BitPat("b101011100001?????000?????1110111") - def CLZ16 = BitPat("b101011101001?????000?????1110111") - def CLZ32 = BitPat("b101011111001?????000?????1110111") - def CMPEQ8 = BitPat("b0100111??????????000?????1110111") - def CMPEQ16 = BitPat("b0100110??????????000?????1110111") - def CRAS16 = BitPat("b0100010??????????000?????1110111") - def CRSA16 = BitPat("b0100011??????????000?????1110111") - def INSB = BitPat("b101011000????????000?????1110111") - def KABS8 = BitPat("b101011010000?????000?????1110111") - def KABS16 = BitPat("b101011010001?????000?????1110111") - def KABSW = BitPat("b101011010100?????000?????1110111") - def KADD8 = BitPat("b0001100??????????000?????1110111") - def KADD16 = BitPat("b0001000??????????000?????1110111") - def KADD64 = BitPat("b1001000??????????001?????1110111") - def KADDH = BitPat("b0000010??????????001?????1110111") - def KADDW = BitPat("b0000000??????????001?????1110111") - def KCRAS16 = BitPat("b0001010??????????000?????1110111") - def KCRSA16 = BitPat("b0001011??????????000?????1110111") - def KDMBB = BitPat("b0000101??????????001?????1110111") - def KDMBT = BitPat("b0001101??????????001?????1110111") - def KDMTT = BitPat("b0010101??????????001?????1110111") - def KDMABB = BitPat("b1101001??????????001?????1110111") - def KDMABT = BitPat("b1110001??????????001?????1110111") - def KDMATT = BitPat("b1111001??????????001?????1110111") - def KHM8 = BitPat("b1000111??????????000?????1110111") - def KHMX8 = BitPat("b1001111??????????000?????1110111") - def KHM16 = BitPat("b1000011??????????000?????1110111") - def KHMX16 = BitPat("b1001011??????????000?????1110111") - def KHMBB = BitPat("b0000110??????????001?????1110111") - def KHMBT = BitPat("b0001110??????????001?????1110111") - def KHMTT = BitPat("b0010110??????????001?????1110111") - def KMABB = BitPat("b0101101??????????001?????1110111") - def KMABT = BitPat("b0110101??????????001?????1110111") - def KMATT = BitPat("b0111101??????????001?????1110111") - def KMADA = BitPat("b0100100??????????001?????1110111") - def KMAXDA = BitPat("b0100101??????????001?????1110111") - def KMADS = BitPat("b0101110??????????001?????1110111") - def KMADRS = BitPat("b0110110??????????001?????1110111") - def KMAXDS = BitPat("b0111110??????????001?????1110111") - def KMAR64 = BitPat("b1001010??????????001?????1110111") - def KMDA = BitPat("b0011100??????????001?????1110111") - def KMXDA = BitPat("b0011101??????????001?????1110111") - def KMMAC = BitPat("b0110000??????????001?????1110111") - def KMMAC_U = BitPat("b0111000??????????001?????1110111") - def KMMAWB = BitPat("b0100011??????????001?????1110111") - def KMMAWB_U = BitPat("b0101011??????????001?????1110111") - def KMMAWB2 = BitPat("b1100111??????????001?????1110111") - def KMMAWB2_U = BitPat("b1101111??????????001?????1110111") - def KMMAWT = BitPat("b0110011??????????001?????1110111") - def KMMAWT_U = BitPat("b0111011??????????001?????1110111") - def KMMAWT2 = BitPat("b1110111??????????001?????1110111") - def KMMAWT2_U = BitPat("b1111111??????????001?????1110111") - def KMMSB = BitPat("b0100001??????????001?????1110111") - def KMMSB_U = BitPat("b0101001??????????001?????1110111") - def KMMWB2 = BitPat("b1000111??????????001?????1110111") - def KMMWB2_U = BitPat("b1001111??????????001?????1110111") - def KMMWT2 = BitPat("b1010111??????????001?????1110111") - def KMMWT2_U = BitPat("b1011111??????????001?????1110111") - def KMSDA = BitPat("b0100110??????????001?????1110111") - def KMSXDA = BitPat("b0100111??????????001?????1110111") - def KMSR64 = BitPat("b1001011??????????001?????1110111") - def KSLLW = BitPat("b0010011??????????001?????1110111") - def KSLLIW = BitPat("b0011011??????????001?????1110111") - def KSLL8 = BitPat("b0110110??????????000?????1110111") - def KSLLI8 = BitPat("b011111001????????000?????1110111") - def KSLL16 = BitPat("b0110010??????????000?????1110111") - def KSLLI16 = BitPat("b01110101?????????000?????1110111") - def KSLRA8 = BitPat("b0101111??????????000?????1110111") - def KSLRA8_U = BitPat("b0110111??????????000?????1110111") - def KSLRA16 = BitPat("b0101011??????????000?????1110111") - def KSLRA16_U = BitPat("b0110011??????????000?????1110111") - def KSLRAW = BitPat("b0110111??????????001?????1110111") - def KSLRAW_U = BitPat("b0111111??????????001?????1110111") - def KSTAS16 = BitPat("b1100010??????????010?????1110111") - def KSTSA16 = BitPat("b1100011??????????010?????1110111") - def KSUB8 = BitPat("b0001101??????????000?????1110111") - def KSUB16 = BitPat("b0001001??????????000?????1110111") - def KSUB64 = BitPat("b1001001??????????001?????1110111") - def KSUBH = BitPat("b0000011??????????001?????1110111") - def KSUBW = BitPat("b0000001??????????001?????1110111") - def KWMMUL = BitPat("b0110001??????????001?????1110111") - def KWMMUL_U = BitPat("b0111001??????????001?????1110111") - def MADDR32 = BitPat("b1100010??????????001?????1110111") - def MAXW = BitPat("b1111001??????????000?????1110111") - def MINW = BitPat("b1111000??????????000?????1110111") - def MSUBR32 = BitPat("b1100011??????????001?????1110111") - def MULR64 = BitPat("b1111000??????????001?????1110111") - def MULSR64 = BitPat("b1110000??????????001?????1110111") - def PBSAD = BitPat("b1111110??????????000?????1110111") - def PBSADA = BitPat("b1111111??????????000?????1110111") - def PKBB16 = BitPat("b0000111??????????001?????1110111") - def PKBT16 = BitPat("b0001111??????????001?????1110111") - def PKTT16 = BitPat("b0010111??????????001?????1110111") - def PKTB16 = BitPat("b0011111??????????001?????1110111") - def RADD8 = BitPat("b0000100??????????000?????1110111") - def RADD16 = BitPat("b0000000??????????000?????1110111") - def RADD64 = BitPat("b1000000??????????001?????1110111") - def RADDW = BitPat("b0010000??????????001?????1110111") - def RCRAS16 = BitPat("b0000010??????????000?????1110111") - def RCRSA16 = BitPat("b0000011??????????000?????1110111") - def RSTAS16 = BitPat("b1011010??????????010?????1110111") - def RSTSA16 = BitPat("b1011011??????????010?????1110111") - def RSUB8 = BitPat("b0000101??????????000?????1110111") - def RSUB16 = BitPat("b0000001??????????000?????1110111") - def RSUB64 = BitPat("b1000001??????????001?????1110111") - def RSUBW = BitPat("b0010001??????????001?????1110111") - def SCLIP8 = BitPat("b100011000????????000?????1110111") - def SCLIP16 = BitPat("b10000100?????????000?????1110111") - def SCLIP32 = BitPat("b1110010??????????000?????1110111") - def SCMPLE8 = BitPat("b0001111??????????000?????1110111") - def SCMPLE16 = BitPat("b0001110??????????000?????1110111") - def SCMPLT8 = BitPat("b0000111??????????000?????1110111") - def SCMPLT16 = BitPat("b0000110??????????000?????1110111") - def SLL8 = BitPat("b0101110??????????000?????1110111") - def SLLI8 = BitPat("b011111000????????000?????1110111") - def SLL16 = BitPat("b0101010??????????000?????1110111") - def SLLI16 = BitPat("b01110100?????????000?????1110111") - def SMAL = BitPat("b0101111??????????001?????1110111") - def SMALBB = BitPat("b1000100??????????001?????1110111") - def SMALBT = BitPat("b1001100??????????001?????1110111") - def SMALTT = BitPat("b1010100??????????001?????1110111") - def SMALDA = BitPat("b1000110??????????001?????1110111") - def SMALXDA = BitPat("b1001110??????????001?????1110111") - def SMALDS = BitPat("b1000101??????????001?????1110111") - def SMALDRS = BitPat("b1001101??????????001?????1110111") - def SMALXDS = BitPat("b1010101??????????001?????1110111") - def SMAR64 = BitPat("b1000010??????????001?????1110111") - def SMAQA = BitPat("b1100100??????????000?????1110111") - def SMAQA_SU = BitPat("b1100101??????????000?????1110111") - def SMAX8 = BitPat("b1000101??????????000?????1110111") - def SMAX16 = BitPat("b1000001??????????000?????1110111") - def SMBB16 = BitPat("b0000100??????????001?????1110111") - def SMBT16 = BitPat("b0001100??????????001?????1110111") - def SMTT16 = BitPat("b0010100??????????001?????1110111") - def SMDS = BitPat("b0101100??????????001?????1110111") - def SMDRS = BitPat("b0110100??????????001?????1110111") - def SMXDS = BitPat("b0111100??????????001?????1110111") - def SMIN8 = BitPat("b1000100??????????000?????1110111") - def SMIN16 = BitPat("b1000000??????????000?????1110111") - def SMMUL = BitPat("b0100000??????????001?????1110111") - def SMMUL_U = BitPat("b0101000??????????001?????1110111") - def SMMWB = BitPat("b0100010??????????001?????1110111") - def SMMWB_U = BitPat("b0101010??????????001?????1110111") - def SMMWT = BitPat("b0110010??????????001?????1110111") - def SMMWT_U = BitPat("b0111010??????????001?????1110111") - def SMSLDA = BitPat("b1010110??????????001?????1110111") - def SMSLXDA = BitPat("b1011110??????????001?????1110111") - def SMSR64 = BitPat("b1000011??????????001?????1110111") - def SMUL8 = BitPat("b1010100??????????000?????1110111") - def SMULX8 = BitPat("b1010101??????????000?????1110111") - def SMUL16 = BitPat("b1010000??????????000?????1110111") - def SMULX16 = BitPat("b1010001??????????000?????1110111") - def SRA_U = BitPat("b0010010??????????001?????1110111") - def SRAI_U = BitPat("b110101???????????001?????1110111") - def SRA8 = BitPat("b0101100??????????000?????1110111") - def SRA8_U = BitPat("b0110100??????????000?????1110111") - def SRAI8 = BitPat("b011110000????????000?????1110111") - def SRAI8_U = BitPat("b011110001????????000?????1110111") - def SRA16 = BitPat("b0101000??????????000?????1110111") - def SRA16_U = BitPat("b0110000??????????000?????1110111") - def SRAI16 = BitPat("b01110000?????????000?????1110111") - def SRAI16_U = BitPat("b01110001?????????000?????1110111") - def SRL8 = BitPat("b0101101??????????000?????1110111") - def SRL8_U = BitPat("b0110101??????????000?????1110111") - def SRLI8 = BitPat("b011110100????????000?????1110111") - def SRLI8_U = BitPat("b011110101????????000?????1110111") - def SRL16 = BitPat("b0101001??????????000?????1110111") - def SRL16_U = BitPat("b0110001??????????000?????1110111") - def SRLI16 = BitPat("b01110010?????????000?????1110111") - def SRLI16_U = BitPat("b01110011?????????000?????1110111") - def STAS16 = BitPat("b1111010??????????010?????1110111") - def STSA16 = BitPat("b1111011??????????010?????1110111") - def SUB8 = BitPat("b0100101??????????000?????1110111") - def SUB16 = BitPat("b0100001??????????000?????1110111") - def SUB64 = BitPat("b1100001??????????001?????1110111") - def SUNPKD810 = BitPat("b101011001000?????000?????1110111") - def SUNPKD820 = BitPat("b101011001001?????000?????1110111") - def SUNPKD830 = BitPat("b101011001010?????000?????1110111") - def SUNPKD831 = BitPat("b101011001011?????000?????1110111") - def SUNPKD832 = BitPat("b101011010011?????000?????1110111") - def SWAP8 = BitPat("b101011011000?????000?????1110111") - def UCLIP8 = BitPat("b100011010????????000?????1110111") - def UCLIP16 = BitPat("b10000101?????????000?????1110111") - def UCLIP32 = BitPat("b1111010??????????000?????1110111") - def UCMPLE8 = BitPat("b0011111??????????000?????1110111") - def UCMPLE16 = BitPat("b0011110??????????000?????1110111") - def UCMPLT8 = BitPat("b0010111??????????000?????1110111") - def UCMPLT16 = BitPat("b0010110??????????000?????1110111") - def UKADD8 = BitPat("b0011100??????????000?????1110111") - def UKADD16 = BitPat("b0011000??????????000?????1110111") - def UKADD64 = BitPat("b1011000??????????001?????1110111") - def UKADDH = BitPat("b0001010??????????001?????1110111") - def UKADDW = BitPat("b0001000??????????001?????1110111") - def UKCRAS16 = BitPat("b0011010??????????000?????1110111") - def UKCRSA16 = BitPat("b0011011??????????000?????1110111") - def UKMAR64 = BitPat("b1011010??????????001?????1110111") - def UKMSR64 = BitPat("b1011011??????????001?????1110111") - def UKSTAS16 = BitPat("b1110010??????????010?????1110111") - def UKSTSA16 = BitPat("b1110011??????????010?????1110111") - def UKSUB8 = BitPat("b0011101??????????000?????1110111") - def UKSUB16 = BitPat("b0011001??????????000?????1110111") - def UKSUB64 = BitPat("b1011001??????????001?????1110111") - def UKSUBH = BitPat("b0001011??????????001?????1110111") - def UKSUBW = BitPat("b0001001??????????001?????1110111") - def UMAR64 = BitPat("b1010010??????????001?????1110111") - def UMAQA = BitPat("b1100110??????????000?????1110111") - def UMAX8 = BitPat("b1001101??????????000?????1110111") - def UMAX16 = BitPat("b1001001??????????000?????1110111") - def UMIN8 = BitPat("b1001100??????????000?????1110111") - def UMIN16 = BitPat("b1001000??????????000?????1110111") - def UMSR64 = BitPat("b1010011??????????001?????1110111") - def UMUL8 = BitPat("b1011100??????????000?????1110111") - def UMULX8 = BitPat("b1011101??????????000?????1110111") - def UMUL16 = BitPat("b1011000??????????000?????1110111") - def UMULX16 = BitPat("b1011001??????????000?????1110111") - def URADD8 = BitPat("b0010100??????????000?????1110111") - def URADD16 = BitPat("b0010000??????????000?????1110111") - def URADD64 = BitPat("b1010000??????????001?????1110111") - def URADDW = BitPat("b0011000??????????001?????1110111") - def URCRAS16 = BitPat("b0010010??????????000?????1110111") - def URCRSA16 = BitPat("b0010011??????????000?????1110111") - def URSTAS16 = BitPat("b1101010??????????010?????1110111") - def URSTSA16 = BitPat("b1101011??????????010?????1110111") - def URSUB8 = BitPat("b0010101??????????000?????1110111") - def URSUB16 = BitPat("b0010001??????????000?????1110111") - def URSUB64 = BitPat("b1010001??????????001?????1110111") - def URSUBW = BitPat("b0011001??????????001?????1110111") - def WEXTI = BitPat("b1101111??????????000?????1110111") - def WEXT = BitPat("b1100111??????????000?????1110111") - def ZUNPKD810 = BitPat("b101011001100?????000?????1110111") - def ZUNPKD820 = BitPat("b101011001101?????000?????1110111") - def ZUNPKD830 = BitPat("b101011001110?????000?????1110111") - def ZUNPKD831 = BitPat("b101011001111?????000?????1110111") - def ZUNPKD832 = BitPat("b101011010111?????000?????1110111") - def ADD32 = BitPat("b0100000??????????010?????1110111") - def CRAS32 = BitPat("b0100010??????????010?????1110111") - def CRSA32 = BitPat("b0100011??????????010?????1110111") - def KABS32 = BitPat("b101011010010?????000?????1110111") - def KADD32 = BitPat("b0001000??????????010?????1110111") - def KCRAS32 = BitPat("b0001010??????????010?????1110111") - def KCRSA32 = BitPat("b0001011??????????010?????1110111") - def KDMBB16 = BitPat("b1101101??????????001?????1110111") - def KDMBT16 = BitPat("b1110101??????????001?????1110111") - def KDMTT16 = BitPat("b1111101??????????001?????1110111") - def KDMABB16 = BitPat("b1101100??????????001?????1110111") - def KDMABT16 = BitPat("b1110100??????????001?????1110111") - def KDMATT16 = BitPat("b1111100??????????001?????1110111") - def KHMBB16 = BitPat("b1101110??????????001?????1110111") - def KHMBT16 = BitPat("b1110110??????????001?????1110111") - def KHMTT16 = BitPat("b1111110??????????001?????1110111") - def KMABB32 = BitPat("b0101101??????????010?????1110111") - def KMABT32 = BitPat("b0110101??????????010?????1110111") - def KMATT32 = BitPat("b0111101??????????010?????1110111") - def KMAXDA32 = BitPat("b0100101??????????010?????1110111") - def KMDA32 = BitPat("b0011100??????????010?????1110111") - def KMXDA32 = BitPat("b0011101??????????010?????1110111") - def KMADS32 = BitPat("b0101110??????????010?????1110111") - def KMADRS32 = BitPat("b0110110??????????010?????1110111") - def KMAXDS32 = BitPat("b0111110??????????010?????1110111") - def KMSDA32 = BitPat("b0100110??????????010?????1110111") - def KMSXDA32 = BitPat("b0100111??????????010?????1110111") - def KSLL32 = BitPat("b0110010??????????010?????1110111") - def KSLLI32 = BitPat("b1000010??????????010?????1110111") - def KSLRA32 = BitPat("b0101011??????????010?????1110111") - def KSLRA32_U = BitPat("b0110011??????????010?????1110111") - def KSTAS32 = BitPat("b1100000??????????010?????1110111") - def KSTSA32 = BitPat("b1100001??????????010?????1110111") - def KSUB32 = BitPat("b0001001??????????010?????1110111") - def PKBB32 = BitPat("b0000111??????????010?????1110111") - def PKBT32 = BitPat("b0001111??????????010?????1110111") - def PKTT32 = BitPat("b0010111??????????010?????1110111") - def PKTB32 = BitPat("b0011111??????????010?????1110111") - def RADD32 = BitPat("b0000000??????????010?????1110111") - def RCRAS32 = BitPat("b0000010??????????010?????1110111") - def RCRSA32 = BitPat("b0000011??????????010?????1110111") - def RSTAS32 = BitPat("b1011000??????????010?????1110111") - def RSTSA32 = BitPat("b1011001??????????010?????1110111") - def RSUB32 = BitPat("b0000001??????????010?????1110111") - def SLL32 = BitPat("b0101010??????????010?????1110111") - def SLLI32 = BitPat("b0111010??????????010?????1110111") - def SMAX32 = BitPat("b1001001??????????010?????1110111") - def SMBT32 = BitPat("b0001100??????????010?????1110111") - def SMTT32 = BitPat("b0010100??????????010?????1110111") - def SMDS32 = BitPat("b0101100??????????010?????1110111") - def SMDRS32 = BitPat("b0110100??????????010?????1110111") - def SMXDS32 = BitPat("b0111100??????????010?????1110111") - def SMIN32 = BitPat("b1001000??????????010?????1110111") - def SRA32 = BitPat("b0101000??????????010?????1110111") - def SRA32_U = BitPat("b0110000??????????010?????1110111") - def SRAI32 = BitPat("b0111000??????????010?????1110111") - def SRAI32_U = BitPat("b1000000??????????010?????1110111") - def SRAIW_U = BitPat("b0011010??????????001?????1110111") - def SRL32 = BitPat("b0101001??????????010?????1110111") - def SRL32_U = BitPat("b0110001??????????010?????1110111") - def SRLI32 = BitPat("b0111001??????????010?????1110111") - def SRLI32_U = BitPat("b1000001??????????010?????1110111") - def STAS32 = BitPat("b1111000??????????010?????1110111") - def STSA32 = BitPat("b1111001??????????010?????1110111") - def SUB32 = BitPat("b0100001??????????010?????1110111") - def UKADD32 = BitPat("b0011000??????????010?????1110111") - def UKCRAS32 = BitPat("b0011010??????????010?????1110111") - def UKCRSA32 = BitPat("b0011011??????????010?????1110111") - def UKSTAS32 = BitPat("b1110000??????????010?????1110111") - def UKSTSA32 = BitPat("b1110001??????????010?????1110111") - def UKSUB32 = BitPat("b0011001??????????010?????1110111") - def UMAX32 = BitPat("b1010001??????????010?????1110111") - def UMIN32 = BitPat("b1010000??????????010?????1110111") - def URADD32 = BitPat("b0010000??????????010?????1110111") - def URCRAS32 = BitPat("b0010010??????????010?????1110111") - def URCRSA32 = BitPat("b0010011??????????010?????1110111") - def URSTAS32 = BitPat("b1101000??????????010?????1110111") - def URSTSA32 = BitPat("b1101001??????????010?????1110111") - def URSUB32 = BitPat("b0010001??????????010?????1110111") - def VMVNFR_V = BitPat("b1001111??????????011?????1010111") - def VL1R_V = BitPat("b000000101000?????000?????0000111") - def VL2R_V = BitPat("b000001101000?????101?????0000111") - def VL4R_V = BitPat("b000011101000?????110?????0000111") - def VL8R_V = BitPat("b000111101000?????111?????0000111") - def VLE1_V = BitPat("b000000101011?????000?????0000111") - def VSE1_V = BitPat("b000000101011?????000?????0100111") - def VFREDSUM_VS = BitPat("b000001???????????001?????1010111") - def VFWREDSUM_VS = BitPat("b110001???????????001?????1010111") - def VPOPC_M = BitPat("b010000??????10000010?????1010111") - def VMORNOT_MM = BitPat("b011100???????????010?????1010111") - def VMANDNOT_MM = BitPat("b011000???????????010?????1010111") + def VWMACCU_VV = BitPat("b111100???????????010?????1010111") + def VWMACCU_VX = BitPat("b111100???????????110?????1010111") + def VWMACCUS_VX = BitPat("b111110???????????110?????1010111") + def VWMUL_VV = BitPat("b111011???????????010?????1010111") + def VWMUL_VX = BitPat("b111011???????????110?????1010111") + def VWMULSU_VV = BitPat("b111010???????????010?????1010111") + def VWMULSU_VX = BitPat("b111010???????????110?????1010111") + def VWMULU_VV = BitPat("b111000???????????010?????1010111") + def VWMULU_VX = BitPat("b111000???????????110?????1010111") + def VWREDSUM_VS = BitPat("b110001???????????000?????1010111") + def VWREDSUMU_VS = BitPat("b110000???????????000?????1010111") + def VWSUB_VV = BitPat("b110011???????????010?????1010111") + def VWSUB_VX = BitPat("b110011???????????110?????1010111") + def VWSUB_WV = BitPat("b110111???????????010?????1010111") + def VWSUB_WX = BitPat("b110111???????????110?????1010111") + def VWSUBU_VV = BitPat("b110010???????????010?????1010111") + def VWSUBU_VX = BitPat("b110010???????????110?????1010111") + def VWSUBU_WV = BitPat("b110110???????????010?????1010111") + def VWSUBU_WX = BitPat("b110110???????????110?????1010111") + def VXOR_VI = BitPat("b001011???????????011?????1010111") + def VXOR_VV = BitPat("b001011???????????000?????1010111") + def VXOR_VX = BitPat("b001011???????????100?????1010111") + def VZEXT_VF2 = BitPat("b010010??????00110010?????1010111") + def VZEXT_VF4 = BitPat("b010010??????00100010?????1010111") + def VZEXT_VF8 = BitPat("b010010??????00010010?????1010111") + def WFI = BitPat("b00010000010100000000000001110011") + def XNOR = BitPat("b0100000??????????100?????0110011") + def XOR = BitPat("b0000000??????????100?????0110011") + def XORI = BitPat("b?????????????????100?????0010011") + def XPERM4 = BitPat("b0010100??????????010?????0110011") + def XPERM8 = BitPat("b0010100??????????100?????0110011") + def ZEXT_H = BitPat("b000010000000?????100?????0111011") + } object Causes { val misaligned_fetch = 0x0 diff --git a/src/main/scala/rocket/Instructions32.scala b/src/main/scala/rocket/Instructions32.scala new file mode 100644 index 00000000000..0927e43ce4c --- /dev/null +++ b/src/main/scala/rocket/Instructions32.scala @@ -0,0 +1,44 @@ +// See LICENSE.SiFive for license details. +// See LICENSE.Berkeley for license details. + +package freechips.rocketchip.rocket + +import chisel3.util._ + +/* make EXTENSIONS="rv32*" inst.chisel */ +/* rename Instructions to Instructions32 */ +/* remove Causes and CSRs */ + +/* Automatically generated by parse_opcodes */ +object Instructions32 { + def AES32DSI = BitPat("b??10101??????????000?????0110011") + def AES32DSMI = BitPat("b??10111??????????000?????0110011") + def AES32ESI = BitPat("b??10001??????????000?????0110011") + def AES32ESMI = BitPat("b??10011??????????000?????0110011") + def BCLRI = BitPat("b0100100??????????001?????0010011") + def BEXTI = BitPat("b0100100??????????101?????0010011") + def BINVI = BitPat("b0110100??????????001?????0010011") + def BSETI = BitPat("b0010100??????????001?????0010011") + def C_FLW = BitPat("b????????????????011???????????00") + def C_FLWSP = BitPat("b????????????????011???????????10") + def C_FSW = BitPat("b????????????????111???????????00") + def C_FSWSP = BitPat("b????????????????111???????????10") + def C_JAL = BitPat("b????????????????001???????????01") + def C_SLLI = BitPat("b????????????????0000??????????10") + def C_SRAI = BitPat("b????????????????100001????????01") + def C_SRLI = BitPat("b????????????????100000????????01") + def REV8 = BitPat("b011010011000?????101?????0010011") + def RORI = BitPat("b0110000??????????101?????0010011") + def SHA512SIG0H = BitPat("b0101110??????????000?????0110011") + def SHA512SIG0L = BitPat("b0101010??????????000?????0110011") + def SHA512SIG1H = BitPat("b0101111??????????000?????0110011") + def SHA512SIG1L = BitPat("b0101011??????????000?????0110011") + def SHA512SUM0R = BitPat("b0101000??????????000?????0110011") + def SHA512SUM1R = BitPat("b0101001??????????000?????0110011") + def SLLI = BitPat("b0000000??????????001?????0010011") + def SRAI = BitPat("b0100000??????????101?????0010011") + def SRLI = BitPat("b0000000??????????101?????0010011") + def UNZIP = BitPat("b000010001111?????101?????0010011") + def ZEXT_H = BitPat("b000010000000?????100?????0110011") + def ZIP = BitPat("b000010001111?????001?????0010011") +} From 1bc5e01f665dae5b75854ac5601354580d0c78d8 Mon Sep 17 00:00:00 2001 From: Zenithal Date: Thu, 5 May 2022 04:56:31 +0800 Subject: [PATCH 2/4] Fix Instructions32 since riscv-opcodes API change --- src/main/scala/rocket/Frontend.scala | 2 +- src/main/scala/rocket/IDecode.scala | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/scala/rocket/Frontend.scala b/src/main/scala/rocket/Frontend.scala index 6cc6b4f8221..b290dcd37ed 100644 --- a/src/main/scala/rocket/Frontend.scala +++ b/src/main/scala/rocket/Frontend.scala @@ -223,7 +223,7 @@ class FrontendModule(outer: Frontend) extends LazyModuleImp(outer) val rviReturn = rviJALR && !rviBits(7) && BitPat("b00?01") === rviBits(19,15) val rviCall = (rviJALR || rviJump) && rviBits(7) val rvcBranch = bits === Instructions.C_BEQZ || bits === Instructions.C_BNEZ - val rvcJAL = Bool(xLen == 32) && bits === Instructions.C_JAL + val rvcJAL = Bool(xLen == 32) && bits === Instructions32.C_JAL val rvcJump = bits === Instructions.C_J || rvcJAL val rvcImm = Mux(bits(14), new RVCDecoder(bits, xLen).bImm.asSInt, new RVCDecoder(bits, xLen).jImm.asSInt) val rvcJR = bits === Instructions.C_MV && bits(6,2) === 0 diff --git a/src/main/scala/rocket/IDecode.scala b/src/main/scala/rocket/IDecode.scala index 6878fedc743..f1f8727fd37 100644 --- a/src/main/scala/rocket/IDecode.scala +++ b/src/main/scala/rocket/IDecode.scala @@ -190,9 +190,12 @@ class NMIDecode(implicit val p: Parameters) extends DecodeConstants class I32Decode(implicit val p: Parameters) extends DecodeConstants { val table: Array[(BitPat, List[BitPat])] = Array( - SLLI_RV32-> List(Y,N,N,N,N,N,N,Y,N,A2_IMM, A1_RS1, IMM_I, DW_XPR,FN_SL, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N), - SRLI_RV32-> List(Y,N,N,N,N,N,N,Y,N,A2_IMM, A1_RS1, IMM_I, DW_XPR,FN_SR, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N), - SRAI_RV32-> List(Y,N,N,N,N,N,N,Y,N,A2_IMM, A1_RS1, IMM_I, DW_XPR,FN_SRA, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N)) + Instructions32.SLLI-> + List(Y,N,N,N,N,N,N,Y,N,A2_IMM, A1_RS1, IMM_I, DW_XPR,FN_SL, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N), + Instructions32.SRLI-> + List(Y,N,N,N,N,N,N,Y,N,A2_IMM, A1_RS1, IMM_I, DW_XPR,FN_SR, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N), + Instructions32.SRAI-> + List(Y,N,N,N,N,N,N,Y,N,A2_IMM, A1_RS1, IMM_I, DW_XPR,FN_SRA, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N)) } class I64Decode(implicit val p: Parameters) extends DecodeConstants From c3018812b56f8bfe245fb0a3681c2e22395b47d9 Mon Sep 17 00:00:00 2001 From: Zenithal Date: Tue, 3 May 2022 15:22:09 +0800 Subject: [PATCH 3/4] Fix legacy instruction name --- src/main/scala/rocket/CSR.scala | 4 ++-- src/main/scala/rocket/IDecode.scala | 8 ++++---- src/main/scala/tile/FPU.scala | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/scala/rocket/CSR.scala b/src/main/scala/rocket/CSR.scala index beaa797235e..dbdaed911a7 100644 --- a/src/main/scala/rocket/CSR.scala +++ b/src/main/scala/rocket/CSR.scala @@ -813,8 +813,8 @@ class CSRFile( val system_insn = io.rw.cmd === CSR.I val hlsv = Seq(HLV_B, HLV_BU, HLV_H, HLV_HU, HLV_W, HLV_WU, HLV_D, HSV_B, HSV_H, HSV_W, HSV_D, HLVX_HU, HLVX_WU) - val decode_table = Seq( SCALL-> List(Y,N,N,N,N,N,N,N,N), - SBREAK-> List(N,Y,N,N,N,N,N,N,N), + val decode_table = Seq( ECALL-> List(Y,N,N,N,N,N,N,N,N), + EBREAK-> List(N,Y,N,N,N,N,N,N,N), MRET-> List(N,N,Y,N,N,N,N,N,N), CEASE-> List(N,N,N,Y,N,N,N,N,N), WFI-> List(N,N,N,N,Y,N,N,N,N)) ++ diff --git a/src/main/scala/rocket/IDecode.scala b/src/main/scala/rocket/IDecode.scala index f1f8727fd37..ec253d252db 100644 --- a/src/main/scala/rocket/IDecode.scala +++ b/src/main/scala/rocket/IDecode.scala @@ -111,8 +111,8 @@ class IDecode(implicit val p: Parameters) extends DecodeConstants FENCE-> List(Y,N,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, N,N,N,N,N,N,N,CSR.N,N,Y,N,N), - SCALL-> List(Y,N,N,N,N,N,N,X,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, N,N,N,N,N,N,N,CSR.I,N,N,N,N), - SBREAK-> List(Y,N,N,N,N,N,N,X,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, N,N,N,N,N,N,N,CSR.I,N,N,N,N), + ECALL-> List(Y,N,N,N,N,N,N,X,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, N,N,N,N,N,N,N,CSR.I,N,N,N,N), + EBREAK-> List(Y,N,N,N,N,N,N,X,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, N,N,N,N,N,N,N,CSR.I,N,N,N,N), MRET-> List(Y,N,N,N,N,N,N,X,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, N,N,N,N,N,N,N,CSR.I,N,N,N,N), WFI-> List(Y,N,N,N,N,N,N,X,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, N,N,N,N,N,N,N,CSR.I,N,N,N,N), CEASE-> List(Y,N,N,N,N,N,N,X,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, N,N,N,N,N,N,N,CSR.I,N,N,N,N), @@ -340,13 +340,13 @@ class FDecode(implicit val p: Parameters) extends DecodeConstants FNMADD_S-> List(Y,Y,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, Y,Y,Y,Y,N,N,N,CSR.N,N,N,N,N), FNMSUB_S-> List(Y,Y,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, Y,Y,Y,Y,N,N,N,CSR.N,N,N,N,N), FCLASS_S-> List(Y,Y,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, Y,N,N,N,N,N,Y,CSR.N,N,N,N,N), - FMV_X_S-> List(Y,Y,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, Y,N,N,N,N,N,Y,CSR.N,N,N,N,N), + FMV_X_W-> List(Y,Y,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, Y,N,N,N,N,N,Y,CSR.N,N,N,N,N), FCVT_W_S-> List(Y,Y,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, Y,N,N,N,N,N,Y,CSR.N,N,N,N,N), FCVT_WU_S-> List(Y,Y,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, Y,N,N,N,N,N,Y,CSR.N,N,N,N,N), FEQ_S-> List(Y,Y,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, Y,Y,N,N,N,N,Y,CSR.N,N,N,N,N), FLT_S-> List(Y,Y,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, Y,Y,N,N,N,N,Y,CSR.N,N,N,N,N), FLE_S-> List(Y,Y,N,N,N,N,N,N,N,A2_X, A1_X, IMM_X, DW_X, FN_X, N,M_X, Y,Y,N,N,N,N,Y,CSR.N,N,N,N,N), - FMV_S_X-> List(Y,Y,N,N,N,N,N,Y,N,A2_X, A1_RS1, IMM_X, DW_X, FN_X, N,M_X, N,N,N,Y,N,N,N,CSR.N,N,N,N,N), + FMV_W_X-> List(Y,Y,N,N,N,N,N,Y,N,A2_X, A1_RS1, IMM_X, DW_X, FN_X, N,M_X, N,N,N,Y,N,N,N,CSR.N,N,N,N,N), FCVT_S_W-> List(Y,Y,N,N,N,N,N,Y,N,A2_X, A1_RS1, IMM_X, DW_X, FN_X, N,M_X, N,N,N,Y,N,N,N,CSR.N,N,N,N,N), FCVT_S_WU-> List(Y,Y,N,N,N,N,N,Y,N,A2_X, A1_RS1, IMM_X, DW_X, FN_X, N,M_X, N,N,N,Y,N,N,N,CSR.N,N,N,N,N), FLW-> List(Y,Y,N,N,N,N,N,Y,N,A2_IMM, A1_RS1, IMM_I, DW_XPR,FN_ADD, Y,M_XRD, N,N,N,Y,N,N,N,CSR.N,N,N,N,N), diff --git a/src/main/scala/tile/FPU.scala b/src/main/scala/tile/FPU.scala index 72b1cf7fa07..49489339d2a 100644 --- a/src/main/scala/tile/FPU.scala +++ b/src/main/scala/tile/FPU.scala @@ -95,12 +95,12 @@ class FPUDecoder(implicit p: Parameters) extends FPUModule()(p) { val f: Array[(BitPat, List[BitPat])] = Array(FLW -> List(Y,Y,N,N,N,X,X,X2,X2,N,N,N,N,N,N,N), FSW -> List(Y,N,N,Y,N,Y,X, I, S,N,Y,N,N,N,N,N), - FMV_S_X -> List(N,Y,N,N,N,X,X, S, I,Y,N,N,N,N,N,N), + FMV_W_X -> List(N,Y,N,N,N,X,X, S, I,Y,N,N,N,N,N,N), FCVT_S_W -> List(N,Y,N,N,N,X,X, S, S,Y,N,N,N,N,N,Y), FCVT_S_WU-> List(N,Y,N,N,N,X,X, S, S,Y,N,N,N,N,N,Y), FCVT_S_L -> List(N,Y,N,N,N,X,X, S, S,Y,N,N,N,N,N,Y), FCVT_S_LU-> List(N,Y,N,N,N,X,X, S, S,Y,N,N,N,N,N,Y), - FMV_X_S -> List(N,N,Y,N,N,N,X, I, S,N,Y,N,N,N,N,N), + FMV_X_W -> List(N,N,Y,N,N,N,X, I, S,N,Y,N,N,N,N,N), FCLASS_S -> List(N,N,Y,N,N,N,X, S, S,N,Y,N,N,N,N,N), FCVT_W_S -> List(N,N,Y,N,N,N,X, S,X2,N,Y,N,N,N,N,Y), FCVT_WU_S-> List(N,N,Y,N,N,N,X, S,X2,N,Y,N,N,N,N,Y), From 55e422255b10c082c42df9b3859b32f714860121 Mon Sep 17 00:00:00 2001 From: Zenithal Date: Tue, 3 May 2022 15:23:39 +0800 Subject: [PATCH 4/4] CustomInstructions: Add RoCC Instructions --- .../scala/rocket/CustomInstructions.scala | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/scala/rocket/CustomInstructions.scala b/src/main/scala/rocket/CustomInstructions.scala index 8ffb5e16a99..b4cada00bee 100644 --- a/src/main/scala/rocket/CustomInstructions.scala +++ b/src/main/scala/rocket/CustomInstructions.scala @@ -10,6 +10,30 @@ object CustomInstructions { def CEASE = BitPat("b00110000010100000000000001110011") def CFLUSH_D_L1 = BitPat("b111111000000?????000000001110011") def CDISCARD_D_L1 = BitPat("b111111000010?????000000001110011") + def CUSTOM0 = BitPat("b?????????????????000?????0001011") + def CUSTOM0_RS1 = BitPat("b?????????????????010?????0001011") + def CUSTOM0_RS1_RS2 = BitPat("b?????????????????011?????0001011") + def CUSTOM0_RD = BitPat("b?????????????????100?????0001011") + def CUSTOM0_RD_RS1 = BitPat("b?????????????????110?????0001011") + def CUSTOM0_RD_RS1_RS2 = BitPat("b?????????????????111?????0001011") + def CUSTOM1 = BitPat("b?????????????????000?????0101011") + def CUSTOM1_RS1 = BitPat("b?????????????????010?????0101011") + def CUSTOM1_RS1_RS2 = BitPat("b?????????????????011?????0101011") + def CUSTOM1_RD = BitPat("b?????????????????100?????0101011") + def CUSTOM1_RD_RS1 = BitPat("b?????????????????110?????0101011") + def CUSTOM1_RD_RS1_RS2 = BitPat("b?????????????????111?????0101011") + def CUSTOM2 = BitPat("b?????????????????000?????1011011") + def CUSTOM2_RS1 = BitPat("b?????????????????010?????1011011") + def CUSTOM2_RS1_RS2 = BitPat("b?????????????????011?????1011011") + def CUSTOM2_RD = BitPat("b?????????????????100?????1011011") + def CUSTOM2_RD_RS1 = BitPat("b?????????????????110?????1011011") + def CUSTOM2_RD_RS1_RS2 = BitPat("b?????????????????111?????1011011") + def CUSTOM3 = BitPat("b?????????????????000?????1111011") + def CUSTOM3_RS1 = BitPat("b?????????????????010?????1111011") + def CUSTOM3_RS1_RS2 = BitPat("b?????????????????011?????1111011") + def CUSTOM3_RD = BitPat("b?????????????????100?????1111011") + def CUSTOM3_RD_RS1 = BitPat("b?????????????????110?????1111011") + def CUSTOM3_RD_RS1_RS2 = BitPat("b?????????????????111?????1111011") } object CustomCSRs {