diff --git a/Bender.lock b/Bender.lock index dd13283f61..35eb81c9e4 100644 --- a/Bender.lock +++ b/Bender.lock @@ -32,8 +32,8 @@ packages: dependencies: - common_cells cluster_icache: - revision: 1642961b9561513f283674efc2c90f24855e8d39 - version: 0.3.1 + revision: 12bf7d077ff1d1e4d450bd3afc0f12a927e21a20 + version: null source: Git: https://github.com/pulp-platform/cluster_icache.git dependencies: diff --git a/REUSE.toml b/REUSE.toml index 0be0d928f0..25100113d3 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -85,3 +85,9 @@ SPDX-License-Identifier = "Apache-2.0" path = "sw/runtime/src/omp/interface.h" SPDX-FileCopyrightText = "LLVM Project" SPDX-License-Identifier = "Apache-2.0 WITH LLVM-exception" + +# Lists +[[annotations]] +path = ["util/clustergen/opcodes.txt"] +SPDX-FileCopyrightText = "2020 ETH Zurich and University of Bologna" +SPDX-License-Identifier = "Apache-2.0" diff --git a/cfg/default.json b/cfg/default.json index 97ce73858a..9f97c2ff98 100644 --- a/cfg/default.json +++ b/cfg/default.json @@ -94,6 +94,7 @@ // Templates. compute_core_template: { isa: "rv32imafd", + Xdiv_sqrt: true, xssr: true, xfrep: true, xcopift: true, diff --git a/cfg/github-ci.json b/cfg/github-ci.json index 4e14ee394a..852fe4165a 100644 --- a/cfg/github-ci.json +++ b/cfg/github-ci.json @@ -90,6 +90,7 @@ // Templates. compute_core_template: { isa: "rv32imafd", + Xdiv_sqrt: true, xssr: true, xfrep: true, xcopift: true, diff --git a/hw/snitch/src/riscv_instr.sv b/hw/snitch/src/riscv_instr.sv index 4637b8e6bb..4d6c9066ff 100644 --- a/hw/snitch/src/riscv_instr.sv +++ b/hw/snitch/src/riscv_instr.sv @@ -3,1214 +3,1144 @@ // SPDX-License-Identifier: SHL-0.51 // verilog_lint: waive-start parameter-name-style + /* Automatically generated by parse_opcodes */ package riscv_instr; - localparam logic [31:0] SLLI_RV32 = 32'b0000000??????????001?????0010011; - localparam logic [31:0] SRLI_RV32 = 32'b0000000??????????101?????0010011; - localparam logic [31:0] SRAI_RV32 = 32'b0100000??????????101?????0010011; - localparam logic [31:0] FRFLAGS = 32'b00000000000100000010?????1110011; - localparam logic [31:0] FSFLAGS = 32'b000000000001?????001?????1110011; - localparam logic [31:0] FSFLAGSI = 32'b000000000001?????101?????1110011; - localparam logic [31:0] FRRM = 32'b00000000001000000010?????1110011; - localparam logic [31:0] FSRM = 32'b000000000010?????001?????1110011; - localparam logic [31:0] FSRMI = 32'b000000000010?????101?????1110011; - localparam logic [31:0] FSCSR = 32'b000000000011?????001?????1110011; - localparam logic [31:0] FRCSR = 32'b00000000001100000010?????1110011; - localparam logic [31:0] RDCYCLE = 32'b11000000000000000010?????1110011; - localparam logic [31:0] RDTIME = 32'b11000000000100000010?????1110011; - localparam logic [31:0] RDINSTRET = 32'b11000000001000000010?????1110011; - localparam logic [31:0] RDCYCLEH = 32'b11001000000000000010?????1110011; - localparam logic [31:0] RDTIMEH = 32'b11001000000100000010?????1110011; - localparam logic [31:0] RDINSTRETH = 32'b11001000001000000010?????1110011; - localparam logic [31:0] SCALL = 32'b00000000000000000000000001110011; - localparam logic [31:0] SBREAK = 32'b00000000000100000000000001110011; - localparam logic [31:0] FMV_X_S = 32'b111000000000?????000?????1010011; - localparam logic [31:0] FMV_S_X = 32'b111100000000?????000?????1010011; - localparam logic [31:0] FENCE_TSO = 32'b100000110011?????000?????0001111; - localparam logic [31:0] PAUSE = 32'b00000001000000000000000000001111; - localparam logic [31:0] BEQ = 32'b?????????????????000?????1100011; - localparam logic [31:0] BNE = 32'b?????????????????001?????1100011; - localparam logic [31:0] BLT = 32'b?????????????????100?????1100011; - localparam logic [31:0] BGE = 32'b?????????????????101?????1100011; - localparam logic [31:0] BLTU = 32'b?????????????????110?????1100011; - localparam logic [31:0] BGEU = 32'b?????????????????111?????1100011; - localparam logic [31:0] JALR = 32'b?????????????????000?????1100111; - localparam logic [31:0] JAL = 32'b?????????????????????????1101111; - localparam logic [31:0] LUI = 32'b?????????????????????????0110111; - localparam logic [31:0] AUIPC = 32'b?????????????????????????0010111; - localparam logic [31:0] ADDI = 32'b?????????????????000?????0010011; - localparam logic [31:0] SLLI = 32'b000000???????????001?????0010011; - localparam logic [31:0] SLTI = 32'b?????????????????010?????0010011; - localparam logic [31:0] SLTIU = 32'b?????????????????011?????0010011; - localparam logic [31:0] XORI = 32'b?????????????????100?????0010011; - localparam logic [31:0] SRLI = 32'b000000???????????101?????0010011; - localparam logic [31:0] SRAI = 32'b010000???????????101?????0010011; - localparam logic [31:0] ORI = 32'b?????????????????110?????0010011; - localparam logic [31:0] ANDI = 32'b?????????????????111?????0010011; - localparam logic [31:0] ADD = 32'b0000000??????????000?????0110011; - localparam logic [31:0] SUB = 32'b0100000??????????000?????0110011; - localparam logic [31:0] SLL = 32'b0000000??????????001?????0110011; - localparam logic [31:0] SLT = 32'b0000000??????????010?????0110011; - localparam logic [31:0] SLTU = 32'b0000000??????????011?????0110011; - localparam logic [31:0] XOR = 32'b0000000??????????100?????0110011; - localparam logic [31:0] SRL = 32'b0000000??????????101?????0110011; - localparam logic [31:0] SRA = 32'b0100000??????????101?????0110011; - localparam logic [31:0] OR = 32'b0000000??????????110?????0110011; - localparam logic [31:0] AND = 32'b0000000??????????111?????0110011; - localparam logic [31:0] LB = 32'b?????????????????000?????0000011; - localparam logic [31:0] LH = 32'b?????????????????001?????0000011; - localparam logic [31:0] LW = 32'b?????????????????010?????0000011; - localparam logic [31:0] LBU = 32'b?????????????????100?????0000011; - localparam logic [31:0] LHU = 32'b?????????????????101?????0000011; - localparam logic [31:0] SB = 32'b?????????????????000?????0100011; - localparam logic [31:0] SH = 32'b?????????????????001?????0100011; - localparam logic [31:0] SW = 32'b?????????????????010?????0100011; - localparam logic [31:0] FENCE = 32'b?????????????????000?????0001111; - localparam logic [31:0] FENCE_I = 32'b?????????????????001?????0001111; - localparam logic [31:0] ADDIW = 32'b?????????????????000?????0011011; - localparam logic [31:0] SLLIW = 32'b0000000??????????001?????0011011; - localparam logic [31:0] SRLIW = 32'b0000000??????????101?????0011011; - localparam logic [31:0] SRAIW = 32'b0100000??????????101?????0011011; - localparam logic [31:0] ADDW = 32'b0000000??????????000?????0111011; - localparam logic [31:0] SUBW = 32'b0100000??????????000?????0111011; - localparam logic [31:0] SLLW = 32'b0000000??????????001?????0111011; - localparam logic [31:0] SRLW = 32'b0000000??????????101?????0111011; - localparam logic [31:0] SRAW = 32'b0100000??????????101?????0111011; - localparam logic [31:0] LD = 32'b?????????????????011?????0000011; - localparam logic [31:0] LWU = 32'b?????????????????110?????0000011; - localparam logic [31:0] SD = 32'b?????????????????011?????0100011; - localparam logic [31:0] MUL = 32'b0000001??????????000?????0110011; - localparam logic [31:0] MULH = 32'b0000001??????????001?????0110011; - localparam logic [31:0] MULHSU = 32'b0000001??????????010?????0110011; - localparam logic [31:0] MULHU = 32'b0000001??????????011?????0110011; - localparam logic [31:0] DIV = 32'b0000001??????????100?????0110011; - localparam logic [31:0] DIVU = 32'b0000001??????????101?????0110011; - localparam logic [31:0] REM = 32'b0000001??????????110?????0110011; - localparam logic [31:0] REMU = 32'b0000001??????????111?????0110011; - localparam logic [31:0] MULW = 32'b0000001??????????000?????0111011; - localparam logic [31:0] DIVW = 32'b0000001??????????100?????0111011; - localparam logic [31:0] DIVUW = 32'b0000001??????????101?????0111011; - localparam logic [31:0] REMW = 32'b0000001??????????110?????0111011; - localparam logic [31:0] REMUW = 32'b0000001??????????111?????0111011; - localparam logic [31:0] AMOADD_W = 32'b00000????????????010?????0101111; - localparam logic [31:0] AMOXOR_W = 32'b00100????????????010?????0101111; - localparam logic [31:0] AMOOR_W = 32'b01000????????????010?????0101111; - localparam logic [31:0] AMOAND_W = 32'b01100????????????010?????0101111; - localparam logic [31:0] AMOMIN_W = 32'b10000????????????010?????0101111; - localparam logic [31:0] AMOMAX_W = 32'b10100????????????010?????0101111; - localparam logic [31:0] AMOMINU_W = 32'b11000????????????010?????0101111; - localparam logic [31:0] AMOMAXU_W = 32'b11100????????????010?????0101111; - localparam logic [31:0] AMOSWAP_W = 32'b00001????????????010?????0101111; - localparam logic [31:0] LR_W = 32'b00010??00000?????010?????0101111; - localparam logic [31:0] SC_W = 32'b00011????????????010?????0101111; - localparam logic [31:0] AMOADD_D = 32'b00000????????????011?????0101111; - localparam logic [31:0] AMOXOR_D = 32'b00100????????????011?????0101111; - localparam logic [31:0] AMOOR_D = 32'b01000????????????011?????0101111; - localparam logic [31:0] AMOAND_D = 32'b01100????????????011?????0101111; - localparam logic [31:0] AMOMIN_D = 32'b10000????????????011?????0101111; - localparam logic [31:0] AMOMAX_D = 32'b10100????????????011?????0101111; - localparam logic [31:0] AMOMINU_D = 32'b11000????????????011?????0101111; - localparam logic [31:0] AMOMAXU_D = 32'b11100????????????011?????0101111; - localparam logic [31:0] AMOSWAP_D = 32'b00001????????????011?????0101111; - localparam logic [31:0] LR_D = 32'b00010??00000?????011?????0101111; - localparam logic [31:0] SC_D = 32'b00011????????????011?????0101111; - localparam logic [31:0] HFENCE_VVMA = 32'b0010001??????????000000001110011; - localparam logic [31:0] HFENCE_GVMA = 32'b0110001??????????000000001110011; - localparam logic [31:0] HLV_B = 32'b011000000000?????100?????1110011; - localparam logic [31:0] HLV_BU = 32'b011000000001?????100?????1110011; - localparam logic [31:0] HLV_H = 32'b011001000000?????100?????1110011; - localparam logic [31:0] HLV_HU = 32'b011001000001?????100?????1110011; - localparam logic [31:0] HLVX_HU = 32'b011001000011?????100?????1110011; - localparam logic [31:0] HLV_W = 32'b011010000000?????100?????1110011; - localparam logic [31:0] HLVX_WU = 32'b011010000011?????100?????1110011; - localparam logic [31:0] HSV_B = 32'b0110001??????????100000001110011; - localparam logic [31:0] HSV_H = 32'b0110011??????????100000001110011; - localparam logic [31:0] HSV_W = 32'b0110101??????????100000001110011; - localparam logic [31:0] HLV_WU = 32'b011010000001?????100?????1110011; - localparam logic [31:0] HLV_D = 32'b011011000000?????100?????1110011; - localparam logic [31:0] HSV_D = 32'b0110111??????????100000001110011; - localparam logic [31:0] FADD_S = 32'b0000000??????????????????1010011; - localparam logic [31:0] FSUB_S = 32'b0000100??????????????????1010011; - localparam logic [31:0] FMUL_S = 32'b0001000??????????????????1010011; - localparam logic [31:0] FDIV_S = 32'b0001100??????????????????1010011; - localparam logic [31:0] FSGNJ_S = 32'b0010000??????????000?????1010011; - localparam logic [31:0] FSGNJN_S = 32'b0010000??????????001?????1010011; - localparam logic [31:0] FSGNJX_S = 32'b0010000??????????010?????1010011; - localparam logic [31:0] FMIN_S = 32'b0010100??????????000?????1010011; - localparam logic [31:0] FMAX_S = 32'b0010100??????????001?????1010011; - localparam logic [31:0] FSQRT_S = 32'b010110000000?????????????1010011; - localparam logic [31:0] FLE_S = 32'b1010000??????????000?????1010011; - localparam logic [31:0] FLT_S = 32'b1010000??????????001?????1010011; - localparam logic [31:0] FEQ_S = 32'b1010000??????????010?????1010011; - localparam logic [31:0] FCVT_W_S = 32'b110000000000?????????????1010011; - localparam logic [31:0] FCVT_WU_S = 32'b110000000001?????????????1010011; - localparam logic [31:0] FMV_X_W = 32'b111000000000?????000?????1010011; - localparam logic [31:0] FCLASS_S = 32'b111000000000?????001?????1010011; - localparam logic [31:0] FCVT_S_W = 32'b110100000000?????????????1010011; - localparam logic [31:0] FCVT_S_WU = 32'b110100000001?????????????1010011; - localparam logic [31:0] FMV_W_X = 32'b111100000000?????000?????1010011; - localparam logic [31:0] FLW = 32'b?????????????????010?????0000111; - localparam logic [31:0] FSW = 32'b?????????????????010?????0100111; - localparam logic [31:0] FMADD_S = 32'b?????00??????????????????1000011; - localparam logic [31:0] FMSUB_S = 32'b?????00??????????????????1000111; - localparam logic [31:0] FNMSUB_S = 32'b?????00??????????????????1001011; - localparam logic [31:0] FNMADD_S = 32'b?????00??????????????????1001111; - localparam logic [31:0] FCVT_L_S = 32'b110000000010?????????????1010011; - localparam logic [31:0] FCVT_LU_S = 32'b110000000011?????????????1010011; - localparam logic [31:0] FCVT_S_L = 32'b110100000010?????????????1010011; - localparam logic [31:0] FCVT_S_LU = 32'b110100000011?????????????1010011; - localparam logic [31:0] FADD_D = 32'b0000001??????????????????1010011; - localparam logic [31:0] FSUB_D = 32'b0000101??????????????????1010011; - localparam logic [31:0] FMUL_D = 32'b0001001??????????????????1010011; - localparam logic [31:0] FDIV_D = 32'b0001101??????????????????1010011; - localparam logic [31:0] FSGNJ_D = 32'b0010001??????????000?????1010011; - localparam logic [31:0] FSGNJN_D = 32'b0010001??????????001?????1010011; - localparam logic [31:0] FSGNJX_D = 32'b0010001??????????010?????1010011; - localparam logic [31:0] FMIN_D = 32'b0010101??????????000?????1010011; - localparam logic [31:0] FMAX_D = 32'b0010101??????????001?????1010011; - localparam logic [31:0] FCVT_S_D = 32'b010000000001?????????????1010011; - localparam logic [31:0] FCVT_D_S = 32'b010000100000?????????????1010011; - localparam logic [31:0] FSQRT_D = 32'b010110100000?????????????1010011; - localparam logic [31:0] FLE_D = 32'b1010001??????????000?????1010011; - localparam logic [31:0] FLT_D = 32'b1010001??????????001?????1010011; - localparam logic [31:0] FEQ_D = 32'b1010001??????????010?????1010011; - localparam logic [31:0] FCVT_W_D = 32'b110000100000?????????????1010011; - localparam logic [31:0] FCVT_WU_D = 32'b110000100001?????????????1010011; - localparam logic [31:0] FCLASS_D = 32'b111000100000?????001?????1010011; - localparam logic [31:0] FCVT_D_W = 32'b110100100000?????????????1010011; - localparam logic [31:0] FCVT_D_WU = 32'b110100100001?????????????1010011; - localparam logic [31:0] FLD = 32'b?????????????????011?????0000111; - localparam logic [31:0] FSD = 32'b?????????????????011?????0100111; - localparam logic [31:0] FMADD_D = 32'b?????01??????????????????1000011; - localparam logic [31:0] FMSUB_D = 32'b?????01??????????????????1000111; - localparam logic [31:0] FNMSUB_D = 32'b?????01??????????????????1001011; - localparam logic [31:0] FNMADD_D = 32'b?????01??????????????????1001111; - localparam logic [31:0] FCVT_L_D = 32'b110000100010?????????????1010011; - localparam logic [31:0] FCVT_LU_D = 32'b110000100011?????????????1010011; - localparam logic [31:0] FMV_X_D = 32'b111000100000?????000?????1010011; - localparam logic [31:0] FCVT_D_L = 32'b110100100010?????????????1010011; - localparam logic [31:0] FCVT_D_LU = 32'b110100100011?????????????1010011; - localparam logic [31:0] FMV_D_X = 32'b111100100000?????000?????1010011; - localparam logic [31:0] FADD_Q = 32'b0000011??????????????????1010011; - localparam logic [31:0] FSUB_Q = 32'b0000111??????????????????1010011; - localparam logic [31:0] FMUL_Q = 32'b0001011??????????????????1010011; - localparam logic [31:0] FDIV_Q = 32'b0001111??????????????????1010011; - localparam logic [31:0] FSGNJ_Q = 32'b0010011??????????000?????1010011; - localparam logic [31:0] FSGNJN_Q = 32'b0010011??????????001?????1010011; - localparam logic [31:0] FSGNJX_Q = 32'b0010011??????????010?????1010011; - localparam logic [31:0] FMIN_Q = 32'b0010111??????????000?????1010011; - localparam logic [31:0] FMAX_Q = 32'b0010111??????????001?????1010011; - localparam logic [31:0] FCVT_S_Q = 32'b010000000011?????????????1010011; - localparam logic [31:0] FCVT_Q_S = 32'b010001100000?????????????1010011; - localparam logic [31:0] FCVT_D_Q = 32'b010000100011?????????????1010011; - localparam logic [31:0] FCVT_Q_D = 32'b010001100001?????????????1010011; - localparam logic [31:0] FSQRT_Q = 32'b010111100000?????????????1010011; - localparam logic [31:0] FLE_Q = 32'b1010011??????????000?????1010011; - localparam logic [31:0] FLT_Q = 32'b1010011??????????001?????1010011; - localparam logic [31:0] FEQ_Q = 32'b1010011??????????010?????1010011; - localparam logic [31:0] FCVT_W_Q = 32'b110001100000?????????????1010011; - localparam logic [31:0] FCVT_WU_Q = 32'b110001100001?????????????1010011; - localparam logic [31:0] FCLASS_Q = 32'b111001100000?????001?????1010011; - localparam logic [31:0] FCVT_Q_W = 32'b110101100000?????????????1010011; - localparam logic [31:0] FCVT_Q_WU = 32'b110101100001?????????????1010011; - localparam logic [31:0] FLQ = 32'b?????????????????100?????0000111; - localparam logic [31:0] FSQ = 32'b?????????????????100?????0100111; - localparam logic [31:0] FMADD_Q = 32'b?????11??????????????????1000011; - localparam logic [31:0] FMSUB_Q = 32'b?????11??????????????????1000111; - localparam logic [31:0] FNMSUB_Q = 32'b?????11??????????????????1001011; - localparam logic [31:0] FNMADD_Q = 32'b?????11??????????????????1001111; - localparam logic [31:0] FCVT_L_Q = 32'b110001100010?????????????1010011; - localparam logic [31:0] FCVT_LU_Q = 32'b110001100011?????????????1010011; - localparam logic [31:0] FCVT_Q_L = 32'b110101100010?????????????1010011; - localparam logic [31:0] FCVT_Q_LU = 32'b110101100011?????????????1010011; - localparam logic [31:0] ECALL = 32'b00000000000000000000000001110011; - localparam logic [31:0] EBREAK = 32'b00000000000100000000000001110011; - localparam logic [31:0] URET = 32'b00000000001000000000000001110011; - localparam logic [31:0] SRET = 32'b00010000001000000000000001110011; - localparam logic [31:0] MRET = 32'b00110000001000000000000001110011; - localparam logic [31:0] DRET = 32'b01111011001000000000000001110011; - localparam logic [31:0] SFENCE_VMA = 32'b0001001??????????000000001110011; - localparam logic [31:0] WFI = 32'b00010000010100000000000001110011; - localparam logic [31:0] CSRRW = 32'b?????????????????001?????1110011; - localparam logic [31:0] CSRRS = 32'b?????????????????010?????1110011; - localparam logic [31:0] CSRRC = 32'b?????????????????011?????1110011; - localparam logic [31:0] CSRRWI = 32'b?????????????????101?????1110011; - localparam logic [31:0] CSRRSI = 32'b?????????????????110?????1110011; - localparam logic [31:0] CSRRCI = 32'b?????????????????111?????1110011; - localparam logic [31:0] CUSTOM0 = 32'b?????????????????000?????0001011; - localparam logic [31:0] CUSTOM0_RS1 = 32'b?????????????????010?????0001011; - localparam logic [31:0] CUSTOM0_RS1_RS2 = 32'b?????????????????011?????0001011; - localparam logic [31:0] CUSTOM0_RD = 32'b?????????????????100?????0001011; - localparam logic [31:0] CUSTOM0_RD_RS1 = 32'b?????????????????110?????0001011; - localparam logic [31:0] CUSTOM0_RD_RS1_RS2 = 32'b?????????????????111?????0001011; - localparam logic [31:0] CUSTOM1 = 32'b?????????????????000?????0101011; - localparam logic [31:0] CUSTOM1_RS1 = 32'b?????????????????010?????0101011; - localparam logic [31:0] CUSTOM1_RS1_RS2 = 32'b?????????????????011?????0101011; - localparam logic [31:0] CUSTOM1_RD = 32'b?????????????????100?????0101011; - localparam logic [31:0] CUSTOM1_RD_RS1 = 32'b?????????????????110?????0101011; - localparam logic [31:0] CUSTOM1_RD_RS1_RS2 = 32'b?????????????????111?????0101011; - localparam logic [31:0] CUSTOM2 = 32'b?????????????????000?????1011011; - localparam logic [31:0] CUSTOM2_RS1 = 32'b?????????????????010?????1011011; - localparam logic [31:0] CUSTOM2_RS1_RS2 = 32'b?????????????????011?????1011011; - localparam logic [31:0] CUSTOM2_RD = 32'b?????????????????100?????1011011; - localparam logic [31:0] CUSTOM2_RD_RS1 = 32'b?????????????????110?????1011011; - localparam logic [31:0] CUSTOM2_RD_RS1_RS2 = 32'b?????????????????111?????1011011; - localparam logic [31:0] CUSTOM3 = 32'b?????????????????000?????1111011; - localparam logic [31:0] CUSTOM3_RS1 = 32'b?????????????????010?????1111011; - localparam logic [31:0] CUSTOM3_RS1_RS2 = 32'b?????????????????011?????1111011; - localparam logic [31:0] CUSTOM3_RD = 32'b?????????????????100?????1111011; - localparam logic [31:0] CUSTOM3_RD_RS1 = 32'b?????????????????110?????1111011; - localparam logic [31:0] CUSTOM3_RD_RS1_RS2 = 32'b?????????????????111?????1111011; - localparam logic [31:0] ANDN = 32'b0100000??????????111?????0110011; - localparam logic [31:0] ORN = 32'b0100000??????????110?????0110011; - localparam logic [31:0] XNOR = 32'b0100000??????????100?????0110011; - localparam logic [31:0] SLO = 32'b0010000??????????001?????0110011; - localparam logic [31:0] SRO = 32'b0010000??????????101?????0110011; - localparam logic [31:0] ROL = 32'b0110000??????????001?????0110011; - localparam logic [31:0] ROR = 32'b0110000??????????101?????0110011; - localparam logic [31:0] SBCLR = 32'b0100100??????????001?????0110011; - localparam logic [31:0] SBSET = 32'b0010100??????????001?????0110011; - localparam logic [31:0] SBINV = 32'b0110100??????????001?????0110011; - localparam logic [31:0] SBEXT = 32'b0100100??????????101?????0110011; - localparam logic [31:0] GORC = 32'b0010100??????????101?????0110011; - localparam logic [31:0] GREV = 32'b0110100??????????101?????0110011; - localparam logic [31:0] SLOI = 32'b001000???????????001?????0010011; - localparam logic [31:0] SROI = 32'b001000???????????101?????0010011; - localparam logic [31:0] RORI = 32'b011000???????????101?????0010011; - localparam logic [31:0] SBCLRI = 32'b010010???????????001?????0010011; - localparam logic [31:0] SBSETI = 32'b001010???????????001?????0010011; - localparam logic [31:0] SBINVI = 32'b011010???????????001?????0010011; - localparam logic [31:0] SBEXTI = 32'b010010???????????101?????0010011; - localparam logic [31:0] GORCI = 32'b001010???????????101?????0010011; - localparam logic [31:0] GREVI = 32'b011010???????????101?????0010011; - localparam logic [31:0] CMIX = 32'b?????11??????????001?????0110011; - localparam logic [31:0] CMOV = 32'b?????11??????????101?????0110011; - localparam logic [31:0] FSL = 32'b?????10??????????001?????0110011; - localparam logic [31:0] FSR = 32'b?????10??????????101?????0110011; - localparam logic [31:0] FSRI = 32'b?????1???????????101?????0010011; - localparam logic [31:0] CLZ = 32'b011000000000?????001?????0010011; - localparam logic [31:0] CTZ = 32'b011000000001?????001?????0010011; - localparam logic [31:0] PCNT = 32'b011000000010?????001?????0010011; - localparam logic [31:0] SEXT_B = 32'b011000000100?????001?????0010011; - localparam logic [31:0] SEXT_H = 32'b011000000101?????001?????0010011; - localparam logic [31:0] CRC32_B = 32'b011000010000?????001?????0010011; - localparam logic [31:0] CRC32_H = 32'b011000010001?????001?????0010011; - localparam logic [31:0] CRC32_W = 32'b011000010010?????001?????0010011; - localparam logic [31:0] CRC32C_B = 32'b011000011000?????001?????0010011; - localparam logic [31:0] CRC32C_H = 32'b011000011001?????001?????0010011; - localparam logic [31:0] CRC32C_W = 32'b011000011010?????001?????0010011; - localparam logic [31:0] SH1ADD = 32'b0010000??????????010?????0110011; - localparam logic [31:0] SH2ADD = 32'b0010000??????????100?????0110011; - localparam logic [31:0] SH3ADD = 32'b0010000??????????110?????0110011; - localparam logic [31:0] CLMUL = 32'b0000101??????????001?????0110011; - localparam logic [31:0] CLMULR = 32'b0000101??????????010?????0110011; - localparam logic [31:0] CLMULH = 32'b0000101??????????011?????0110011; - localparam logic [31:0] MIN = 32'b0000101??????????100?????0110011; - localparam logic [31:0] MAX = 32'b0000101??????????101?????0110011; - localparam logic [31:0] MINU = 32'b0000101??????????110?????0110011; - localparam logic [31:0] MAXU = 32'b0000101??????????111?????0110011; - localparam logic [31:0] SHFL = 32'b0000100??????????001?????0110011; - localparam logic [31:0] UNSHFL = 32'b0000100??????????101?????0110011; - localparam logic [31:0] BEXT = 32'b0000100??????????110?????0110011; - localparam logic [31:0] BDEP = 32'b0100100??????????110?????0110011; - localparam logic [31:0] PACK = 32'b0000100??????????100?????0110011; - localparam logic [31:0] PACKU = 32'b0100100??????????100?????0110011; - localparam logic [31:0] PACKH = 32'b0000100??????????111?????0110011; - localparam logic [31:0] BFP = 32'b0100100??????????111?????0110011; - localparam logic [31:0] SHFLI = 32'b0000100??????????001?????0010011; - localparam logic [31:0] UNSHFLI = 32'b0000100??????????101?????0010011; - localparam logic [31:0] DMSRC = 32'b0000000??????????000000000101011; - localparam logic [31:0] DMDST = 32'b0000001??????????000000000101011; - localparam logic [31:0] DMCPYI = 32'b0000010??????????000?????0101011; - localparam logic [31:0] DMCPY = 32'b0000011??????????000?????0101011; - localparam logic [31:0] DMSTATI = 32'b0000100?????00000000?????0101011; - localparam logic [31:0] DMSTAT = 32'b0000101?????00000000?????0101011; - localparam logic [31:0] DMSTR = 32'b0000110??????????000000000101011; - localparam logic [31:0] DMREP = 32'b000011100000?????000000000101011; - localparam logic [31:0] DMUSER = 32'b0001000??????????000000000101011; - localparam logic [31:0] DMINIT = 32'b0001001??????????000?????0101011; - localparam logic [31:0] FREP_O = 32'b????????????????????????10001011; - localparam logic [31:0] IREP = 32'b?????????????????????????0111111; - localparam logic [31:0] SCFGRI = 32'b????????????00000001?????0101011; - localparam logic [31:0] SCFGWI = 32'b?????????????????010000000101011; - localparam logic [31:0] SCFGR = 32'b0000000?????00001001?????0101011; - localparam logic [31:0] SCFGW = 32'b0000000??????????010000010101011; - localparam logic [31:0] FLT_D_COPIFT = 32'b1010001??????????001?????0101011; - localparam logic [31:0] FCVT_D_W_COPIFT = 32'b110100100000?????????????0101011; - localparam logic [31:0] FCVT_D_WU_COPIFT = 32'b110100100001?????????????0101011; - localparam logic [31:0] FLH = 32'b?????????????????001?????0000111; - localparam logic [31:0] FSH = 32'b?????????????????001?????0100111; - localparam logic [31:0] FMADD_H = 32'b?????10??????????????????1000011; - localparam logic [31:0] FMSUB_H = 32'b?????10??????????????????1000111; - localparam logic [31:0] FNMSUB_H = 32'b?????10??????????????????1001011; - localparam logic [31:0] FNMADD_H = 32'b?????10??????????????????1001111; - localparam logic [31:0] FADD_H = 32'b0000010??????????????????1010011; - localparam logic [31:0] FSUB_H = 32'b0000110??????????????????1010011; - localparam logic [31:0] FMUL_H = 32'b0001010??????????????????1010011; - localparam logic [31:0] FDIV_H = 32'b0001110??????????????????1010011; - localparam logic [31:0] FSQRT_H = 32'b010111000000?????????????1010011; - localparam logic [31:0] FSGNJ_H = 32'b0010010??????????000?????1010011; - localparam logic [31:0] FSGNJN_H = 32'b0010010??????????001?????1010011; - localparam logic [31:0] FSGNJX_H = 32'b0010010??????????010?????1010011; - localparam logic [31:0] FMIN_H = 32'b0010110??????????000?????1010011; - localparam logic [31:0] FMAX_H = 32'b0010110??????????001?????1010011; - localparam logic [31:0] FEQ_H = 32'b1010010??????????010?????1010011; - localparam logic [31:0] FLT_H = 32'b1010010??????????001?????1010011; - localparam logic [31:0] FLE_H = 32'b1010010??????????000?????1010011; - localparam logic [31:0] FCVT_W_H = 32'b110001000000?????????????1010011; - localparam logic [31:0] FCVT_WU_H = 32'b110001000001?????????????1010011; - localparam logic [31:0] FCVT_H_W = 32'b110101000000?????????????1010011; - localparam logic [31:0] FCVT_H_WU = 32'b110101000001?????????????1010011; - localparam logic [31:0] FMV_X_H = 32'b111001000000?????000?????1010011; - localparam logic [31:0] FCLASS_H = 32'b111001000000?????001?????1010011; - localparam logic [31:0] FMV_H_X = 32'b111101000000?????000?????1010011; - localparam logic [31:0] FCVT_L_H = 32'b110001000010?????????????1010011; - localparam logic [31:0] FCVT_LU_H = 32'b110001000011?????????????1010011; - localparam logic [31:0] FCVT_H_L = 32'b110101000010?????????????1010011; - localparam logic [31:0] FCVT_H_LU = 32'b110101000011?????????????1010011; - localparam logic [31:0] FCVT_S_H = 32'b010000000010?????000?????1010011; - localparam logic [31:0] FCVT_H_S = 32'b010001000000?????????????1010011; - localparam logic [31:0] FCVT_D_H = 32'b010000100010?????000?????1010011; - localparam logic [31:0] FCVT_H_D = 32'b010001000001?????????????1010011; - localparam logic [31:0] FLAH = 32'b?????????????????001?????0000111; - localparam logic [31:0] FSAH = 32'b?????????????????001?????0100111; - localparam logic [31:0] FMADD_AH = 32'b?????10??????????????????1000011; - localparam logic [31:0] FMSUB_AH = 32'b?????10??????????????????1000111; - localparam logic [31:0] FNMSUB_AH = 32'b?????10??????????????????1001011; - localparam logic [31:0] FNMADD_AH = 32'b?????10??????????????????1001111; - localparam logic [31:0] FADD_AH = 32'b0000010??????????????????1010011; - localparam logic [31:0] FSUB_AH = 32'b0000110??????????????????1010011; - localparam logic [31:0] FMUL_AH = 32'b0001010??????????????????1010011; - localparam logic [31:0] FDIV_AH = 32'b0001110??????????????????1010011; - localparam logic [31:0] FSQRT_AH = 32'b010111000000?????????????1010011; - localparam logic [31:0] FSGNJ_AH = 32'b0010010??????????000?????1010011; - localparam logic [31:0] FSGNJN_AH = 32'b0010010??????????001?????1010011; - localparam logic [31:0] FSGNJX_AH = 32'b0010010??????????010?????1010011; - localparam logic [31:0] FMIN_AH = 32'b0010110??????????000?????1010011; - localparam logic [31:0] FMAX_AH = 32'b0010110??????????001?????1010011; - localparam logic [31:0] FEQ_AH = 32'b1010010??????????010?????1010011; - localparam logic [31:0] FLT_AH = 32'b1010010??????????001?????1010011; - localparam logic [31:0] FLE_AH = 32'b1010010??????????000?????1010011; - localparam logic [31:0] FCVT_W_AH = 32'b110001000000?????????????1010011; - localparam logic [31:0] FCVT_WU_AH = 32'b110001000001?????????????1010011; - localparam logic [31:0] FCVT_AH_W = 32'b110101000000?????????????1010011; - localparam logic [31:0] FCVT_AH_WU = 32'b110101000001?????????????1010011; - localparam logic [31:0] FMV_X_AH = 32'b111001000000?????000?????1010011; - localparam logic [31:0] FCLASS_AH = 32'b111001000000?????001?????1010011; - localparam logic [31:0] FMV_AH_X = 32'b111101000000?????000?????1010011; - localparam logic [31:0] FCVT_L_AH = 32'b110001000010?????????????1010011; - localparam logic [31:0] FCVT_LU_AH = 32'b110001000011?????????????1010011; - localparam logic [31:0] FCVT_AH_L = 32'b110101000010?????????????1010011; - localparam logic [31:0] FCVT_AH_LU = 32'b110101000011?????????????1010011; - localparam logic [31:0] FCVT_S_AH = 32'b010000000010?????000?????1010011; - localparam logic [31:0] FCVT_AH_S = 32'b010001000000?????????????1010011; - localparam logic [31:0] FCVT_D_AH = 32'b010000100010?????000?????1010011; - localparam logic [31:0] FCVT_AH_D = 32'b010001000001?????????????1010011; - localparam logic [31:0] FCVT_H_H = 32'b010001000010?????????????1010011; - localparam logic [31:0] FCVT_AH_H = 32'b010001000010?????????????1010011; - localparam logic [31:0] FCVT_H_AH = 32'b010001000010?????????????1010011; - localparam logic [31:0] FCVT_AH_AH = 32'b010001000010?????????????1010011; - localparam logic [31:0] FLB = 32'b?????????????????000?????0000111; - localparam logic [31:0] FSB = 32'b?????????????????000?????0100111; - localparam logic [31:0] FMADD_B = 32'b?????11??????????????????1000011; - localparam logic [31:0] FMSUB_B = 32'b?????11??????????????????1000111; - localparam logic [31:0] FNMSUB_B = 32'b?????11??????????????????1001011; - localparam logic [31:0] FNMADD_B = 32'b?????11??????????????????1001111; - localparam logic [31:0] FADD_B = 32'b0000011??????????????????1010011; - localparam logic [31:0] FSUB_B = 32'b0000111??????????????????1010011; - localparam logic [31:0] FMUL_B = 32'b0001011??????????????????1010011; - localparam logic [31:0] FDIV_B = 32'b0001111??????????????????1010011; - localparam logic [31:0] FSQRT_B = 32'b010111100000?????????????1010011; - localparam logic [31:0] FSGNJ_B = 32'b0010011??????????000?????1010011; - localparam logic [31:0] FSGNJN_B = 32'b0010011??????????001?????1010011; - localparam logic [31:0] FSGNJX_B = 32'b0010011??????????010?????1010011; - localparam logic [31:0] FMIN_B = 32'b0010111??????????000?????1010011; - localparam logic [31:0] FMAX_B = 32'b0010111??????????001?????1010011; - localparam logic [31:0] FEQ_B = 32'b1010011??????????010?????1010011; - localparam logic [31:0] FLT_B = 32'b1010011??????????001?????1010011; - localparam logic [31:0] FLE_B = 32'b1010011??????????000?????1010011; - localparam logic [31:0] FCVT_W_B = 32'b110001100000?????????????1010011; - localparam logic [31:0] FCVT_WU_B = 32'b110001100001?????????????1010011; - localparam logic [31:0] FCVT_B_W = 32'b110101100000?????????????1010011; - localparam logic [31:0] FCVT_B_WU = 32'b110101100001?????????????1010011; - localparam logic [31:0] FMV_X_B = 32'b111001100000?????000?????1010011; - localparam logic [31:0] FCLASS_B = 32'b111001100000?????001?????1010011; - localparam logic [31:0] FMV_B_X = 32'b111101100000?????000?????1010011; - localparam logic [31:0] FCVT_L_B = 32'b110001100010?????????????1010011; - localparam logic [31:0] FCVT_LU_B = 32'b110001100011?????????????1010011; - localparam logic [31:0] FCVT_B_L = 32'b110101100010?????????????1010011; - localparam logic [31:0] FCVT_B_LU = 32'b110101100011?????????????1010011; - localparam logic [31:0] FCVT_S_B = 32'b010000000011?????000?????1010011; - localparam logic [31:0] FCVT_B_S = 32'b010001100000?????????????1010011; - localparam logic [31:0] FCVT_D_B = 32'b010000100011?????000?????1010011; - localparam logic [31:0] FCVT_B_D = 32'b010001100001?????????????1010011; - localparam logic [31:0] FCVT_H_B = 32'b010001000011?????000?????1010011; - localparam logic [31:0] FCVT_B_H = 32'b010001100010?????????????1010011; - localparam logic [31:0] FCVT_AH_B = 32'b010001000011?????000?????1010011; - localparam logic [31:0] FCVT_B_AH = 32'b010001100010?????????????1010011; - localparam logic [31:0] FLAB = 32'b?????????????????000?????0000111; - localparam logic [31:0] FSAB = 32'b?????????????????000?????0100111; - localparam logic [31:0] FMADD_AB = 32'b?????11??????????????????1000011; - localparam logic [31:0] FMSUB_AB = 32'b?????11??????????????????1000111; - localparam logic [31:0] FNMSUB_AB = 32'b?????11??????????????????1001011; - localparam logic [31:0] FNMADD_AB = 32'b?????11??????????????????1001111; - localparam logic [31:0] FADD_AB = 32'b0000011??????????????????1010011; - localparam logic [31:0] FSUB_AB = 32'b0000111??????????????????1010011; - localparam logic [31:0] FMUL_AB = 32'b0001011??????????????????1010011; - localparam logic [31:0] FDIV_AB = 32'b0001111??????????????????1010011; - localparam logic [31:0] FSQRT_AB = 32'b010111100000?????????????1010011; - localparam logic [31:0] FSGNJ_AB = 32'b0010011??????????000?????1010011; - localparam logic [31:0] FSGNJN_AB = 32'b0010011??????????001?????1010011; - localparam logic [31:0] FSGNJX_AB = 32'b0010011??????????010?????1010011; - localparam logic [31:0] FMIN_AB = 32'b0010111??????????000?????1010011; - localparam logic [31:0] FMAX_AB = 32'b0010111??????????001?????1010011; - localparam logic [31:0] FEQ_AB = 32'b1010011??????????010?????1010011; - localparam logic [31:0] FLT_AB = 32'b1010011??????????001?????1010011; - localparam logic [31:0] FLE_AB = 32'b1010011??????????000?????1010011; - localparam logic [31:0] FCVT_W_AB = 32'b110001100000?????????????1010011; - localparam logic [31:0] FCVT_WU_AB = 32'b110001100001?????????????1010011; - localparam logic [31:0] FCVT_AB_W = 32'b110101100000?????????????1010011; - localparam logic [31:0] FCVT_AB_WU = 32'b110101100001?????????????1010011; - localparam logic [31:0] FMV_X_AB = 32'b111001100000?????000?????1010011; - localparam logic [31:0] FCLASS_AB = 32'b111001100000?????001?????1010011; - localparam logic [31:0] FMV_AB_X = 32'b111101100000?????000?????1010011; - localparam logic [31:0] FCVT_L_AB = 32'b110001100010?????????????1010011; - localparam logic [31:0] FCVT_LU_AB = 32'b110001100011?????????????1010011; - localparam logic [31:0] FCVT_AB_L = 32'b110101100010?????????????1010011; - localparam logic [31:0] FCVT_AB_LU = 32'b110101100011?????????????1010011; - localparam logic [31:0] FCVT_S_AB = 32'b010000000011?????000?????1010011; - localparam logic [31:0] FCVT_AB_S = 32'b010001100000?????????????1010011; - localparam logic [31:0] FCVT_D_AB = 32'b010000100011?????000?????1010011; - localparam logic [31:0] FCVT_AB_D = 32'b010001100001?????????????1010011; - localparam logic [31:0] FCVT_H_AB = 32'b010001000011?????000?????1010011; - localparam logic [31:0] FCVT_AB_H = 32'b010001100010?????????????1010011; - localparam logic [31:0] FCVT_AH_AB = 32'b010001000011?????000?????1010011; - localparam logic [31:0] FCVT_AB_AH = 32'b010001100010?????????????1010011; - localparam logic [31:0] FCVT_B_B = 32'b010001100011?????000?????1010011; - localparam logic [31:0] FCVT_AB_B = 32'b010001100011?????000?????1010011; - localparam logic [31:0] FCVT_B_AB = 32'b010001100011?????000?????1010011; - localparam logic [31:0] FCVT_AB_AB = 32'b010001100011?????000?????1010011; - localparam logic [31:0] VFADD_S = 32'b1000001??????????000?????0110011; - localparam logic [31:0] VFADD_R_S = 32'b1000001??????????100?????0110011; - localparam logic [31:0] VFSUB_S = 32'b1000010??????????000?????0110011; - localparam logic [31:0] VFSUB_R_S = 32'b1000010??????????100?????0110011; - localparam logic [31:0] VFMUL_S = 32'b1000011??????????000?????0110011; - localparam logic [31:0] VFMUL_R_S = 32'b1000011??????????100?????0110011; - localparam logic [31:0] VFDIV_S = 32'b1000100??????????000?????0110011; - localparam logic [31:0] VFDIV_R_S = 32'b1000100??????????100?????0110011; - localparam logic [31:0] VFMIN_S = 32'b1000101??????????000?????0110011; - localparam logic [31:0] VFMIN_R_S = 32'b1000101??????????100?????0110011; - localparam logic [31:0] VFMAX_S = 32'b1000110??????????000?????0110011; - localparam logic [31:0] VFMAX_R_S = 32'b1000110??????????100?????0110011; - localparam logic [31:0] VFSQRT_S = 32'b100011100000?????000?????0110011; - localparam logic [31:0] VFMAC_S = 32'b1001000??????????000?????0110011; - localparam logic [31:0] VFMAC_R_S = 32'b1001000??????????100?????0110011; - localparam logic [31:0] VFMRE_S = 32'b1001001??????????000?????0110011; - localparam logic [31:0] VFMRE_R_S = 32'b1001001??????????100?????0110011; - localparam logic [31:0] VFCLASS_S = 32'b100110000001?????000?????0110011; - localparam logic [31:0] VFSGNJ_S = 32'b1001101??????????000?????0110011; - localparam logic [31:0] VFSGNJ_R_S = 32'b1001101??????????100?????0110011; - localparam logic [31:0] VFSGNJN_S = 32'b1001110??????????000?????0110011; - localparam logic [31:0] VFSGNJN_R_S = 32'b1001110??????????100?????0110011; - localparam logic [31:0] VFSGNJX_S = 32'b1001111??????????000?????0110011; - localparam logic [31:0] VFSGNJX_R_S = 32'b1001111??????????100?????0110011; - localparam logic [31:0] VFEQ_S = 32'b1010000??????????000?????0110011; - localparam logic [31:0] VFEQ_R_S = 32'b1010000??????????100?????0110011; - localparam logic [31:0] VFNE_S = 32'b1010001??????????000?????0110011; - localparam logic [31:0] VFNE_R_S = 32'b1010001??????????100?????0110011; - localparam logic [31:0] VFLT_S = 32'b1010010??????????000?????0110011; - localparam logic [31:0] VFLT_R_S = 32'b1010010??????????100?????0110011; - localparam logic [31:0] VFGE_S = 32'b1010011??????????000?????0110011; - localparam logic [31:0] VFGE_R_S = 32'b1010011??????????100?????0110011; - localparam logic [31:0] VFLE_S = 32'b1010100??????????000?????0110011; - localparam logic [31:0] VFLE_R_S = 32'b1010100??????????100?????0110011; - localparam logic [31:0] VFGT_S = 32'b1010101??????????000?????0110011; - localparam logic [31:0] VFGT_R_S = 32'b1010101??????????100?????0110011; - localparam logic [31:0] VFMV_X_S = 32'b100110000000?????000?????0110011; - localparam logic [31:0] VFMV_S_X = 32'b100110000000?????100?????0110011; - localparam logic [31:0] VFCVT_X_S = 32'b100110000010?????000?????0110011; - localparam logic [31:0] VFCVT_XU_S = 32'b100110000010?????100?????0110011; - localparam logic [31:0] VFCVT_S_X = 32'b100110000011?????000?????0110011; - localparam logic [31:0] VFCVT_S_XU = 32'b100110000011?????100?????0110011; - localparam logic [31:0] VFCPKA_S_S = 32'b1011000??????????000?????0110011; - localparam logic [31:0] VFCPKB_S_S = 32'b1011000??????????100?????0110011; - localparam logic [31:0] VFCPKC_S_S = 32'b1011001??????????000?????0110011; - localparam logic [31:0] VFCPKD_S_S = 32'b1011001??????????100?????0110011; - localparam logic [31:0] VFCPKA_S_D = 32'b1011010??????????000?????0110011; - localparam logic [31:0] VFCPKB_S_D = 32'b1011010??????????100?????0110011; - localparam logic [31:0] VFCPKC_S_D = 32'b1011011??????????000?????0110011; - localparam logic [31:0] VFCPKD_S_D = 32'b1011011??????????100?????0110011; - localparam logic [31:0] VFCVT_H_H = 32'b100110000101?????010?????0110011; - localparam logic [31:0] VFCVT_H_AH = 32'b100110000101?????010?????0110011; - localparam logic [31:0] VFCVT_AH_H = 32'b100110000101?????010?????0110011; - localparam logic [31:0] VFCVTU_H_H = 32'b100110000101?????110?????0110011; - localparam logic [31:0] VFCVTU_H_AH = 32'b100110000101?????110?????0110011; - localparam logic [31:0] VFCVTU_AH_H = 32'b100110000101?????110?????0110011; - localparam logic [31:0] VFADD_H = 32'b1000001??????????010?????0110011; - localparam logic [31:0] VFADD_R_H = 32'b1000001??????????110?????0110011; - localparam logic [31:0] VFSUB_H = 32'b1000010??????????010?????0110011; - localparam logic [31:0] VFSUB_R_H = 32'b1000010??????????110?????0110011; - localparam logic [31:0] VFMUL_H = 32'b1000011??????????010?????0110011; - localparam logic [31:0] VFMUL_R_H = 32'b1000011??????????110?????0110011; - localparam logic [31:0] VFDIV_H = 32'b1000100??????????010?????0110011; - localparam logic [31:0] VFDIV_R_H = 32'b1000100??????????110?????0110011; - localparam logic [31:0] VFMIN_H = 32'b1000101??????????010?????0110011; - localparam logic [31:0] VFMIN_R_H = 32'b1000101??????????110?????0110011; - localparam logic [31:0] VFMAX_H = 32'b1000110??????????010?????0110011; - localparam logic [31:0] VFMAX_R_H = 32'b1000110??????????110?????0110011; - localparam logic [31:0] VFSQRT_H = 32'b100011100000?????010?????0110011; - localparam logic [31:0] VFMAC_H = 32'b1001000??????????010?????0110011; - localparam logic [31:0] VFMAC_R_H = 32'b1001000??????????110?????0110011; - localparam logic [31:0] VFMRE_H = 32'b1001001??????????010?????0110011; - localparam logic [31:0] VFMRE_R_H = 32'b1001001??????????110?????0110011; - localparam logic [31:0] VFCLASS_H = 32'b100110000001?????010?????0110011; - localparam logic [31:0] VFSGNJ_H = 32'b1001101??????????010?????0110011; - localparam logic [31:0] VFSGNJ_R_H = 32'b1001101??????????110?????0110011; - localparam logic [31:0] VFSGNJN_H = 32'b1001110??????????010?????0110011; - localparam logic [31:0] VFSGNJN_R_H = 32'b1001110??????????110?????0110011; - localparam logic [31:0] VFSGNJX_H = 32'b1001111??????????010?????0110011; - localparam logic [31:0] VFSGNJX_R_H = 32'b1001111??????????110?????0110011; - localparam logic [31:0] VFEQ_H = 32'b1010000??????????010?????0110011; - localparam logic [31:0] VFEQ_R_H = 32'b1010000??????????110?????0110011; - localparam logic [31:0] VFNE_H = 32'b1010001??????????010?????0110011; - localparam logic [31:0] VFNE_R_H = 32'b1010001??????????110?????0110011; - localparam logic [31:0] VFLT_H = 32'b1010010??????????010?????0110011; - localparam logic [31:0] VFLT_R_H = 32'b1010010??????????110?????0110011; - localparam logic [31:0] VFGE_H = 32'b1010011??????????010?????0110011; - localparam logic [31:0] VFGE_R_H = 32'b1010011??????????110?????0110011; - localparam logic [31:0] VFLE_H = 32'b1010100??????????010?????0110011; - localparam logic [31:0] VFLE_R_H = 32'b1010100??????????110?????0110011; - localparam logic [31:0] VFGT_H = 32'b1010101??????????010?????0110011; - localparam logic [31:0] VFGT_R_H = 32'b1010101??????????110?????0110011; - localparam logic [31:0] VFMV_X_H = 32'b100110000000?????010?????0110011; - localparam logic [31:0] VFMV_H_X = 32'b100110000000?????110?????0110011; - localparam logic [31:0] VFCVT_X_H = 32'b100110000010?????010?????0110011; - localparam logic [31:0] VFCVT_XU_H = 32'b100110000010?????110?????0110011; - localparam logic [31:0] VFCVT_H_X = 32'b100110000011?????010?????0110011; - localparam logic [31:0] VFCVT_H_XU = 32'b100110000011?????110?????0110011; - localparam logic [31:0] VFCPKA_H_S = 32'b1011000??????????010?????0110011; - localparam logic [31:0] VFCPKB_H_S = 32'b1011000??????????110?????0110011; - localparam logic [31:0] VFCPKC_H_S = 32'b1011001??????????010?????0110011; - localparam logic [31:0] VFCPKD_H_S = 32'b1011001??????????110?????0110011; - localparam logic [31:0] VFCPKA_H_D = 32'b1011010??????????010?????0110011; - localparam logic [31:0] VFCPKB_H_D = 32'b1011010??????????110?????0110011; - localparam logic [31:0] VFCPKC_H_D = 32'b1011011??????????010?????0110011; - localparam logic [31:0] VFCPKD_H_D = 32'b1011011??????????110?????0110011; - localparam logic [31:0] VFCVT_S_H = 32'b100110000110?????000?????0110011; - localparam logic [31:0] VFCVTU_S_H = 32'b100110000110?????100?????0110011; - localparam logic [31:0] VFCVT_H_S = 32'b100110000100?????010?????0110011; - localparam logic [31:0] VFCVTU_H_S = 32'b100110000100?????110?????0110011; - localparam logic [31:0] VFADD_AH = 32'b1000001??????????010?????0110011; - localparam logic [31:0] VFADD_R_AH = 32'b1000001??????????110?????0110011; - localparam logic [31:0] VFSUB_AH = 32'b1000010??????????010?????0110011; - localparam logic [31:0] VFSUB_R_AH = 32'b1000010??????????110?????0110011; - localparam logic [31:0] VFMUL_AH = 32'b1000011??????????010?????0110011; - localparam logic [31:0] VFMUL_R_AH = 32'b1000011??????????110?????0110011; - localparam logic [31:0] VFDIV_AH = 32'b1000100??????????010?????0110011; - localparam logic [31:0] VFDIV_R_AH = 32'b1000100??????????110?????0110011; - localparam logic [31:0] VFMIN_AH = 32'b1000101??????????010?????0110011; - localparam logic [31:0] VFMIN_R_AH = 32'b1000101??????????110?????0110011; - localparam logic [31:0] VFMAX_AH = 32'b1000110??????????010?????0110011; - localparam logic [31:0] VFMAX_R_AH = 32'b1000110??????????110?????0110011; - localparam logic [31:0] VFSQRT_AH = 32'b100011100000?????010?????0110011; - localparam logic [31:0] VFMAC_AH = 32'b1001000??????????010?????0110011; - localparam logic [31:0] VFMAC_R_AH = 32'b1001000??????????110?????0110011; - localparam logic [31:0] VFMRE_AH = 32'b1001001??????????010?????0110011; - localparam logic [31:0] VFMRE_R_AH = 32'b1001001??????????110?????0110011; - localparam logic [31:0] VFCLASS_AH = 32'b100110000001?????010?????0110011; - localparam logic [31:0] VFSGNJ_AH = 32'b1001101??????????010?????0110011; - localparam logic [31:0] VFSGNJ_R_AH = 32'b1001101??????????110?????0110011; - localparam logic [31:0] VFSGNJN_AH = 32'b1001110??????????010?????0110011; - localparam logic [31:0] VFSGNJN_R_AH = 32'b1001110??????????110?????0110011; - localparam logic [31:0] VFSGNJX_AH = 32'b1001111??????????010?????0110011; - localparam logic [31:0] VFSGNJX_R_AH = 32'b1001111??????????110?????0110011; - localparam logic [31:0] VFEQ_AH = 32'b1010000??????????010?????0110011; - localparam logic [31:0] VFEQ_R_AH = 32'b1010000??????????110?????0110011; - localparam logic [31:0] VFNE_AH = 32'b1010001??????????010?????0110011; - localparam logic [31:0] VFNE_R_AH = 32'b1010001??????????110?????0110011; - localparam logic [31:0] VFLT_AH = 32'b1010010??????????010?????0110011; - localparam logic [31:0] VFLT_R_AH = 32'b1010010??????????110?????0110011; - localparam logic [31:0] VFGE_AH = 32'b1010011??????????010?????0110011; - localparam logic [31:0] VFGE_R_AH = 32'b1010011??????????110?????0110011; - localparam logic [31:0] VFLE_AH = 32'b1010100??????????010?????0110011; - localparam logic [31:0] VFLE_R_AH = 32'b1010100??????????110?????0110011; - localparam logic [31:0] VFGT_AH = 32'b1010101??????????010?????0110011; - localparam logic [31:0] VFGT_R_AH = 32'b1010101??????????110?????0110011; - localparam logic [31:0] VFMV_X_AH = 32'b100110000000?????010?????0110011; - localparam logic [31:0] VFMV_AH_X = 32'b100110000000?????110?????0110011; - localparam logic [31:0] VFCVT_X_AH = 32'b100110000010?????010?????0110011; - localparam logic [31:0] VFCVT_XU_AH = 32'b100110000010?????110?????0110011; - localparam logic [31:0] VFCVT_AH_X = 32'b100110000011?????010?????0110011; - localparam logic [31:0] VFCVT_AH_XU = 32'b100110000011?????110?????0110011; - localparam logic [31:0] VFCPKA_AH_S = 32'b1011000??????????010?????0110011; - localparam logic [31:0] VFCPKB_AH_S = 32'b1011000??????????110?????0110011; - localparam logic [31:0] VFCPKC_AH_S = 32'b1011001??????????010?????0110011; - localparam logic [31:0] VFCPKD_AH_S = 32'b1011001??????????110?????0110011; - localparam logic [31:0] VFCPKA_AH_D = 32'b1011010??????????010?????0110011; - localparam logic [31:0] VFCPKB_AH_D = 32'b1011010??????????110?????0110011; - localparam logic [31:0] VFCPKC_AH_D = 32'b1011011??????????010?????0110011; - localparam logic [31:0] VFCPKD_AH_D = 32'b1011011??????????110?????0110011; - localparam logic [31:0] VFCVT_S_AH = 32'b100110000110?????000?????0110011; - localparam logic [31:0] VFCVTU_S_AH = 32'b100110000110?????100?????0110011; - localparam logic [31:0] VFCVT_AH_S = 32'b100110000100?????010?????0110011; - localparam logic [31:0] VFCVTU_AH_S = 32'b100110000100?????110?????0110011; - localparam logic [31:0] VFADD_B = 32'b1000001??????????011?????0110011; - localparam logic [31:0] VFADD_R_B = 32'b1000001??????????111?????0110011; - localparam logic [31:0] VFSUB_B = 32'b1000010??????????011?????0110011; - localparam logic [31:0] VFSUB_R_B = 32'b1000010??????????111?????0110011; - localparam logic [31:0] VFMUL_B = 32'b1000011??????????011?????0110011; - localparam logic [31:0] VFMUL_R_B = 32'b1000011??????????111?????0110011; - localparam logic [31:0] VFDIV_B = 32'b1000100??????????011?????0110011; - localparam logic [31:0] VFDIV_R_B = 32'b1000100??????????111?????0110011; - localparam logic [31:0] VFMIN_B = 32'b1000101??????????011?????0110011; - localparam logic [31:0] VFMIN_R_B = 32'b1000101??????????111?????0110011; - localparam logic [31:0] VFMAX_B = 32'b1000110??????????011?????0110011; - localparam logic [31:0] VFMAX_R_B = 32'b1000110??????????111?????0110011; - localparam logic [31:0] VFSQRT_B = 32'b100011100000?????011?????0110011; - localparam logic [31:0] VFMAC_B = 32'b1001000??????????011?????0110011; - localparam logic [31:0] VFMAC_R_B = 32'b1001000??????????111?????0110011; - localparam logic [31:0] VFMRE_B = 32'b1001001??????????011?????0110011; - localparam logic [31:0] VFMRE_R_B = 32'b1001001??????????111?????0110011; - localparam logic [31:0] VFSGNJ_B = 32'b1001101??????????011?????0110011; - localparam logic [31:0] VFSGNJ_R_B = 32'b1001101??????????111?????0110011; - localparam logic [31:0] VFSGNJN_B = 32'b1001110??????????011?????0110011; - localparam logic [31:0] VFSGNJN_R_B = 32'b1001110??????????111?????0110011; - localparam logic [31:0] VFSGNJX_B = 32'b1001111??????????011?????0110011; - localparam logic [31:0] VFSGNJX_R_B = 32'b1001111??????????111?????0110011; - localparam logic [31:0] VFEQ_B = 32'b1010000??????????011?????0110011; - localparam logic [31:0] VFEQ_R_B = 32'b1010000??????????111?????0110011; - localparam logic [31:0] VFNE_B = 32'b1010001??????????011?????0110011; - localparam logic [31:0] VFNE_R_B = 32'b1010001??????????111?????0110011; - localparam logic [31:0] VFLT_B = 32'b1010010??????????011?????0110011; - localparam logic [31:0] VFLT_R_B = 32'b1010010??????????111?????0110011; - localparam logic [31:0] VFGE_B = 32'b1010011??????????011?????0110011; - localparam logic [31:0] VFGE_R_B = 32'b1010011??????????111?????0110011; - localparam logic [31:0] VFLE_B = 32'b1010100??????????011?????0110011; - localparam logic [31:0] VFLE_R_B = 32'b1010100??????????111?????0110011; - localparam logic [31:0] VFGT_B = 32'b1010101??????????011?????0110011; - localparam logic [31:0] VFGT_R_B = 32'b1010101??????????111?????0110011; - localparam logic [31:0] VFMV_X_B = 32'b100110000000?????011?????0110011; - localparam logic [31:0] VFMV_B_X = 32'b100110000000?????111?????0110011; - localparam logic [31:0] VFCLASS_B = 32'b100110000001?????011?????0110011; - localparam logic [31:0] VFCVT_X_B = 32'b100110000010?????011?????0110011; - localparam logic [31:0] VFCVT_XU_B = 32'b100110000010?????111?????0110011; - localparam logic [31:0] VFCVT_B_X = 32'b100110000011?????011?????0110011; - localparam logic [31:0] VFCVT_B_XU = 32'b100110000011?????111?????0110011; - localparam logic [31:0] VFCPKA_B_S = 32'b1011000??????????011?????0110011; - localparam logic [31:0] VFCPKB_B_S = 32'b1011000??????????111?????0110011; - localparam logic [31:0] VFCPKC_B_S = 32'b1011001??????????011?????0110011; - localparam logic [31:0] VFCPKD_B_S = 32'b1011001??????????111?????0110011; - localparam logic [31:0] VFCPKA_B_D = 32'b1011010??????????011?????0110011; - localparam logic [31:0] VFCPKB_B_D = 32'b1011010??????????111?????0110011; - localparam logic [31:0] VFCPKC_B_D = 32'b1011011??????????011?????0110011; - localparam logic [31:0] VFCPKD_B_D = 32'b1011011??????????111?????0110011; - localparam logic [31:0] VFCVT_D_S = 32'b100110000100?????001?????0110011; - localparam logic [31:0] VFCVTU_D_S = 32'b100110000100?????101?????0110011; - localparam logic [31:0] VFCVT_S_B = 32'b100110000111?????000?????0110011; - localparam logic [31:0] VFCVTU_S_B = 32'b100110000111?????100?????0110011; - localparam logic [31:0] VFCVT_B_S = 32'b100110000100?????011?????0110011; - localparam logic [31:0] VFCVTU_B_S = 32'b100110000100?????111?????0110011; - localparam logic [31:0] VFCVT_H_B = 32'b100110000111?????010?????0110011; - localparam logic [31:0] VFCVTU_H_B = 32'b100110000111?????110?????0110011; - localparam logic [31:0] VFCVT_B_H = 32'b100110000110?????011?????0110011; - localparam logic [31:0] VFCVTU_B_H = 32'b100110000110?????111?????0110011; - localparam logic [31:0] VFCVT_AH_B = 32'b100110000111?????010?????0110011; - localparam logic [31:0] VFCVTU_AH_B = 32'b100110000111?????110?????0110011; - localparam logic [31:0] VFCVT_B_AH = 32'b100110000110?????011?????0110011; - localparam logic [31:0] VFCVTU_B_AH = 32'b100110000110?????111?????0110011; - localparam logic [31:0] VFCVT_B_B = 32'b100110000111?????011?????0110011; - localparam logic [31:0] VFCVT_AB_B = 32'b100110000111?????011?????0110011; - localparam logic [31:0] VFCVT_B_AB = 32'b100110000111?????011?????0110011; - localparam logic [31:0] VFCVTU_B_B = 32'b100110000111?????111?????0110011; - localparam logic [31:0] VFCVTU_AB_B = 32'b100110000111?????111?????0110011; - localparam logic [31:0] VFCVTU_B_AB = 32'b100110000111?????111?????0110011; - localparam logic [31:0] VFADD_AB = 32'b1000001??????????011?????0110011; - localparam logic [31:0] VFADD_R_AB = 32'b1000001??????????111?????0110011; - localparam logic [31:0] VFSUB_AB = 32'b1000010??????????011?????0110011; - localparam logic [31:0] VFSUB_R_AB = 32'b1000010??????????111?????0110011; - localparam logic [31:0] VFMUL_AB = 32'b1000011??????????011?????0110011; - localparam logic [31:0] VFMUL_R_AB = 32'b1000011??????????111?????0110011; - localparam logic [31:0] VFDIV_AB = 32'b1000100??????????011?????0110011; - localparam logic [31:0] VFDIV_R_AB = 32'b1000100??????????111?????0110011; - localparam logic [31:0] VFMIN_AB = 32'b1000101??????????011?????0110011; - localparam logic [31:0] VFMIN_R_AB = 32'b1000101??????????111?????0110011; - localparam logic [31:0] VFMAX_AB = 32'b1000110??????????011?????0110011; - localparam logic [31:0] VFMAX_R_AB = 32'b1000110??????????111?????0110011; - localparam logic [31:0] VFSQRT_AB = 32'b100011100000?????011?????0110011; - localparam logic [31:0] VFMAC_AB = 32'b1001000??????????011?????0110011; - localparam logic [31:0] VFMAC_R_AB = 32'b1001000??????????111?????0110011; - localparam logic [31:0] VFMRE_AB = 32'b1001001??????????011?????0110011; - localparam logic [31:0] VFMRE_R_AB = 32'b1001001??????????111?????0110011; - localparam logic [31:0] VFSGNJ_AB = 32'b1001101??????????011?????0110011; - localparam logic [31:0] VFSGNJ_R_AB = 32'b1001101??????????111?????0110011; - localparam logic [31:0] VFSGNJN_AB = 32'b1001110??????????011?????0110011; - localparam logic [31:0] VFSGNJN_R_AB = 32'b1001110??????????111?????0110011; - localparam logic [31:0] VFSGNJX_AB = 32'b1001111??????????011?????0110011; - localparam logic [31:0] VFSGNJX_R_AB = 32'b1001111??????????111?????0110011; - localparam logic [31:0] VFEQ_AB = 32'b1010000??????????011?????0110011; - localparam logic [31:0] VFEQ_R_AB = 32'b1010000??????????111?????0110011; - localparam logic [31:0] VFNE_AB = 32'b1010001??????????011?????0110011; - localparam logic [31:0] VFNE_R_AB = 32'b1010001??????????111?????0110011; - localparam logic [31:0] VFLT_AB = 32'b1010010??????????011?????0110011; - localparam logic [31:0] VFLT_R_AB = 32'b1010010??????????111?????0110011; - localparam logic [31:0] VFGE_AB = 32'b1010011??????????011?????0110011; - localparam logic [31:0] VFGE_R_AB = 32'b1010011??????????111?????0110011; - localparam logic [31:0] VFLE_AB = 32'b1010100??????????011?????0110011; - localparam logic [31:0] VFLE_R_AB = 32'b1010100??????????111?????0110011; - localparam logic [31:0] VFGT_AB = 32'b1010101??????????011?????0110011; - localparam logic [31:0] VFGT_R_AB = 32'b1010101??????????111?????0110011; - localparam logic [31:0] VFMV_X_AB = 32'b100110000000?????011?????0110011; - localparam logic [31:0] VFMV_AB_X = 32'b100110000000?????111?????0110011; - localparam logic [31:0] VFCLASS_AB = 32'b100110000001?????011?????0110011; - localparam logic [31:0] VFCVT_X_AB = 32'b100110000010?????011?????0110011; - localparam logic [31:0] VFCVT_XU_AB = 32'b100110000010?????111?????0110011; - localparam logic [31:0] VFCVT_AB_X = 32'b100110000011?????011?????0110011; - localparam logic [31:0] VFCVT_AB_XU = 32'b100110000011?????111?????0110011; - localparam logic [31:0] VFCPKA_AB_S = 32'b1011000??????????011?????0110011; - localparam logic [31:0] VFCPKB_AB_S = 32'b1011000??????????111?????0110011; - localparam logic [31:0] VFCPKC_AB_S = 32'b1011001??????????011?????0110011; - localparam logic [31:0] VFCPKD_AB_S = 32'b1011001??????????111?????0110011; - localparam logic [31:0] VFCPKA_AB_D = 32'b1011010??????????011?????0110011; - localparam logic [31:0] VFCPKB_AB_D = 32'b1011010??????????111?????0110011; - localparam logic [31:0] VFCPKC_AB_D = 32'b1011011??????????011?????0110011; - localparam logic [31:0] VFCPKD_AB_D = 32'b1011011??????????111?????0110011; - localparam logic [31:0] VFCVT_S_AB = 32'b100110000111?????000?????0110011; - localparam logic [31:0] VFCVTU_S_AB = 32'b100110000111?????100?????0110011; - localparam logic [31:0] VFCVT_AB_S = 32'b100110000100?????011?????0110011; - localparam logic [31:0] VFCVTU_AB_S = 32'b100110000100?????111?????0110011; - localparam logic [31:0] VFCVT_H_AB = 32'b100110000111?????010?????0110011; - localparam logic [31:0] VFCVTU_H_AB = 32'b100110000111?????110?????0110011; - localparam logic [31:0] VFCVT_AB_H = 32'b100110000110?????011?????0110011; - localparam logic [31:0] VFCVTU_AB_H = 32'b100110000110?????111?????0110011; - localparam logic [31:0] VFCVT_AH_AB = 32'b100110000111?????010?????0110011; - localparam logic [31:0] VFCVTU_AH_AB = 32'b100110000111?????110?????0110011; - localparam logic [31:0] VFCVT_AB_AH = 32'b100110000110?????011?????0110011; - localparam logic [31:0] VFCVTU_AB_AH = 32'b100110000110?????111?????0110011; - localparam logic [31:0] FMULEX_S_H = 32'b0100110??????????????????1010011; - localparam logic [31:0] FMACEX_S_H = 32'b0101010??????????????????1010011; - localparam logic [31:0] FMULEX_S_AH = 32'b0100110??????????????????1010011; - localparam logic [31:0] FMACEX_S_AH = 32'b0101010??????????????????1010011; - localparam logic [31:0] FMULEX_S_B = 32'b0100111??????????????????1010011; - localparam logic [31:0] FMACEX_S_B = 32'b0101011??????????????????1010011; - localparam logic [31:0] FMULEX_S_AB = 32'b0100111??????????????????1010011; - localparam logic [31:0] FMACEX_S_AB = 32'b0101011??????????????????1010011; - localparam logic [31:0] VFSUM_S = 32'b100011111100?????000?????0110011; - localparam logic [31:0] VFNSUM_S = 32'b101011111100?????000?????0110011; - localparam logic [31:0] VFSUM_H = 32'b100011111110?????010?????0110011; - localparam logic [31:0] VFNSUM_H = 32'b101011111110?????010?????0110011; - localparam logic [31:0] VFSUM_AH = 32'b100011111110?????010?????0110011; - localparam logic [31:0] VFNSUM_AH = 32'b101011111110?????010?????0110011; - localparam logic [31:0] VFSUM_B = 32'b100011100111?????011?????0110011; - localparam logic [31:0] VFNSUM_B = 32'b101011100111?????011?????0110011; - localparam logic [31:0] VFSUM_AB = 32'b100011100111?????011?????0110011; - localparam logic [31:0] VFNSUM_AB = 32'b101011100111?????011?????0110011; - localparam logic [31:0] VFSUMEX_S_H = 32'b100011110110?????000?????0110011; - localparam logic [31:0] VFNSUMEX_S_H = 32'b101011110110?????000?????0110011; - localparam logic [31:0] VFDOTPEX_S_H = 32'b1001011??????????000?????0110011; - localparam logic [31:0] VFDOTPEX_S_R_H = 32'b1001011??????????100?????0110011; - localparam logic [31:0] VFNDOTPEX_S_H = 32'b1011101??????????000?????0110011; - localparam logic [31:0] VFNDOTPEX_S_R_H = 32'b1011101??????????100?????0110011; - localparam logic [31:0] VFSUMEX_S_AH = 32'b100011110110?????000?????0110011; - localparam logic [31:0] VFNSUMEX_S_AH = 32'b101011110110?????000?????0110011; - localparam logic [31:0] VFDOTPEX_S_AH = 32'b1001011??????????000?????0110011; - localparam logic [31:0] VFDOTPEX_S_R_AH = 32'b1001011??????????100?????0110011; - localparam logic [31:0] VFNDOTPEX_S_AH = 32'b1011101??????????000?????0110011; - localparam logic [31:0] VFNDOTPEX_S_R_AH = 32'b1011101??????????100?????0110011; - localparam logic [31:0] VFSUMEX_H_B = 32'b100011110111?????010?????0110011; - localparam logic [31:0] VFNSUMEX_H_B = 32'b101011110111?????010?????0110011; - localparam logic [31:0] VFDOTPEX_H_B = 32'b1001011??????????010?????0110011; - localparam logic [31:0] VFDOTPEX_H_R_B = 32'b1001011??????????110?????0110011; - localparam logic [31:0] VFNDOTPEX_H_B = 32'b1011101??????????010?????0110011; - localparam logic [31:0] VFNDOTPEX_H_R_B = 32'b1011101??????????110?????0110011; - localparam logic [31:0] VFSUMEX_AH_B = 32'b100011110111?????010?????0110011; - localparam logic [31:0] VFNSUMEX_AH_B = 32'b101011110111?????010?????0110011; - localparam logic [31:0] VFDOTPEX_AH_B = 32'b1001011??????????010?????0110011; - localparam logic [31:0] VFDOTPEX_AH_R_B = 32'b1001011??????????110?????0110011; - localparam logic [31:0] VFNDOTPEX_AH_B = 32'b1011101??????????010?????0110011; - localparam logic [31:0] VFNDOTPEX_AH_R_B = 32'b1011101??????????110?????0110011; - localparam logic [31:0] VFSUMEX_H_AB = 32'b100011110111?????010?????0110011; - localparam logic [31:0] VFNSUMEX_H_AB = 32'b101011110111?????010?????0110011; - localparam logic [31:0] VFDOTPEX_H_AB = 32'b1001011??????????010?????0110011; - localparam logic [31:0] VFDOTPEX_H_R_AB = 32'b1001011??????????110?????0110011; - localparam logic [31:0] VFNDOTPEX_H_AB = 32'b1011101??????????010?????0110011; - localparam logic [31:0] VFNDOTPEX_H_R_AB = 32'b1011101??????????110?????0110011; - localparam logic [31:0] VFSUMEX_AH_AB = 32'b100011110111?????010?????0110011; - localparam logic [31:0] VFNSUMEX_AH_AB = 32'b101011110111?????010?????0110011; - localparam logic [31:0] VFDOTPEX_AH_AB = 32'b1001011??????????010?????0110011; - localparam logic [31:0] VFDOTPEX_AH_R_AB = 32'b1001011??????????110?????0110011; - localparam logic [31:0] VFNDOTPEX_AH_AB = 32'b1011101??????????010?????0110011; - localparam logic [31:0] VFNDOTPEX_AH_R_AB = 32'b1011101??????????110?????0110011; - localparam logic [31:0] VMVNFR_V = 32'b1001111??????????011?????1010111; - localparam logic [31:0] VL1R_V = 32'b000000101000?????000?????0000111; - localparam logic [31:0] VL2R_V = 32'b000001101000?????101?????0000111; - localparam logic [31:0] VL4R_V = 32'b000011101000?????110?????0000111; - localparam logic [31:0] VL8R_V = 32'b000111101000?????111?????0000111; - localparam logic [31:0] P_LB_IRPOST = 32'b?????????????????000?????0001011; - localparam logic [31:0] P_LBU_IRPOST = 32'b?????????????????100?????0001011; - localparam logic [31:0] P_LH_IRPOST = 32'b?????????????????001?????0001011; - localparam logic [31:0] P_LHU_IRPOST = 32'b?????????????????101?????0001011; - localparam logic [31:0] P_LW_IRPOST = 32'b?????????????????010?????0001011; - localparam logic [31:0] P_LB_RRPOST = 32'b0000000??????????111?????0001011; - localparam logic [31:0] P_LBU_RRPOST = 32'b0100000??????????111?????0001011; - localparam logic [31:0] P_LH_RRPOST = 32'b0001000??????????111?????0001011; - localparam logic [31:0] P_LHU_RRPOST = 32'b0101000??????????111?????0001011; - localparam logic [31:0] P_LW_RRPOST = 32'b0010000??????????111?????0001011; - localparam logic [31:0] P_LB_RR = 32'b0000000??????????111?????0000011; - localparam logic [31:0] P_LBU_RR = 32'b0100000??????????111?????0000011; - localparam logic [31:0] P_LH_RR = 32'b0001000??????????111?????0000011; - localparam logic [31:0] P_LHU_RR = 32'b0101000??????????111?????0000011; - localparam logic [31:0] P_LW_RR = 32'b0010000??????????111?????0000011; - localparam logic [31:0] P_SB_IRPOST = 32'b?????????????????000?????0101011; - localparam logic [31:0] P_SH_IRPOST = 32'b?????????????????001?????0101011; - localparam logic [31:0] P_SW_IRPOST = 32'b?????????????????010?????0101011; - localparam logic [31:0] P_SB_RRPOST = 32'b0000000??????????100?????0101011; - localparam logic [31:0] P_SH_RRPOST = 32'b0000000??????????101?????0101011; - localparam logic [31:0] P_SW_RRPOST = 32'b0000000??????????110?????0101011; - localparam logic [31:0] P_SB_RR = 32'b0000000??????????100?????0100011; - localparam logic [31:0] P_SH_RR = 32'b0000000??????????101?????0100011; - localparam logic [31:0] P_SW_RR = 32'b0000000??????????110?????0100011; - localparam logic [31:0] P_ABS = 32'b000001000000?????000?????0110011; - localparam logic [31:0] P_EXTHS = 32'b000100000000?????100?????0110011; - localparam logic [31:0] P_EXTHZ = 32'b000100000000?????101?????0110011; - localparam logic [31:0] P_EXTBS = 32'b000100000000?????110?????0110011; - localparam logic [31:0] P_EXTBZ = 32'b000100000000?????111?????0110011; - localparam logic [31:0] P_EXTRACT = 32'b11???????????????000?????0110011; - localparam logic [31:0] P_EXTRACTR = 32'b1000000??????????000?????0110011; - localparam logic [31:0] P_EXTRACTU = 32'b11???????????????001?????0110011; - localparam logic [31:0] P_EXTRACTUR = 32'b1000000??????????001?????0110011; - localparam logic [31:0] P_INSERT = 32'b11???????????????010?????0110011; - localparam logic [31:0] P_INSERTR = 32'b1000000??????????010?????0110011; - localparam logic [31:0] P_BSET = 32'b11???????????????100?????0110011; - localparam logic [31:0] P_BSETR = 32'b1000000??????????100?????0110011; - localparam logic [31:0] P_BCLR = 32'b11???????????????011?????0110011; - localparam logic [31:0] P_BCLRR = 32'b1000000??????????011?????0110011; - localparam logic [31:0] P_CNT = 32'b0001000??????????011?????0110011; - localparam logic [31:0] P_CLB = 32'b000100000000?????010?????0110011; - localparam logic [31:0] P_FL1 = 32'b000100000000?????001?????0110011; - localparam logic [31:0] P_FF1 = 32'b000100000000?????000?????0110011; - localparam logic [31:0] P_ROR = 32'b000010000000?????101?????0110011; - localparam logic [31:0] P_BEQIMM = 32'b?????????????????010?????1100011; - localparam logic [31:0] P_BNEIMM = 32'b?????????????????011?????1100011; - localparam logic [31:0] P_CLIP = 32'b0001010??????????001?????0110011; - localparam logic [31:0] P_CLIPR = 32'b0001010??????????101?????0110011; - localparam logic [31:0] P_CLIPU = 32'b0001010??????????010?????0110011; - localparam logic [31:0] P_CLIPUR = 32'b0001010??????????110?????0110011; - localparam logic [31:0] P_MAC = 32'b0100001??????????000?????0110011; - localparam logic [31:0] P_MSU = 32'b0100001??????????001?????0110011; - localparam logic [31:0] P_MIN = 32'b0000010??????????100?????0110011; - localparam logic [31:0] P_MINU = 32'b0000010??????????101?????0110011; - localparam logic [31:0] P_MAX = 32'b0000010??????????110?????0110011; - localparam logic [31:0] P_MAXU = 32'b0000010??????????111?????0110011; - localparam logic [31:0] P_ADDN = 32'b00???????????????010?????1011011; - localparam logic [31:0] P_ADDUN = 32'b10???????????????010?????1011011; - localparam logic [31:0] P_SLET = 32'b0000010??????????010?????0110011; - localparam logic [31:0] P_SLETU = 32'b0000010??????????011?????0110011; - localparam logic [31:0] PV_ADD_H = 32'b0000000??????????000?????1010111; - localparam logic [31:0] PV_ADD_SC_H = 32'b0000000??????????100?????1010111; - localparam logic [31:0] PV_ADD_SCI_H = 32'b000000???????????110?????1010111; - localparam logic [31:0] PV_ADD_B = 32'b0000000??????????001?????1010111; - localparam logic [31:0] PV_ADD_SC_B = 32'b0000000??????????101?????1010111; - localparam logic [31:0] PV_ADD_SCI_B = 32'b000000???????????111?????1010111; - localparam logic [31:0] PV_SUB_H = 32'b0000100??????????000?????1010111; - localparam logic [31:0] PV_SUB_SC_H = 32'b0000100??????????100?????1010111; - localparam logic [31:0] PV_SUB_SCI_H = 32'b000010???????????110?????1010111; - localparam logic [31:0] PV_SUB_B = 32'b0000100??????????001?????1010111; - localparam logic [31:0] PV_SUB_SC_B = 32'b0000100??????????101?????1010111; - localparam logic [31:0] PV_SUB_SCI_B = 32'b000010???????????111?????1010111; - localparam logic [31:0] PV_AVG_H = 32'b0001000??????????000?????1010111; - localparam logic [31:0] PV_AVG_SC_H = 32'b0001000??????????100?????1010111; - localparam logic [31:0] PV_AVG_SCI_H = 32'b000100???????????110?????1010111; - localparam logic [31:0] PV_AVG_B = 32'b0001000??????????001?????1010111; - localparam logic [31:0] PV_AVG_SC_B = 32'b0001000??????????101?????1010111; - localparam logic [31:0] PV_AVG_SCI_B = 32'b000100???????????111?????1010111; - localparam logic [31:0] PV_AVGU_H = 32'b0001100??????????000?????1010111; - localparam logic [31:0] PV_AVGU_SC_H = 32'b0001100??????????100?????1010111; - localparam logic [31:0] PV_AVGU_SCI_H = 32'b000110???????????110?????1010111; - localparam logic [31:0] PV_AVGU_B = 32'b0001100??????????001?????1010111; - localparam logic [31:0] PV_AVGU_SC_B = 32'b0001100??????????101?????1010111; - localparam logic [31:0] PV_AVGU_SCI_B = 32'b000110???????????111?????1010111; - localparam logic [31:0] PV_MIN_H = 32'b0010000??????????000?????1010111; - localparam logic [31:0] PV_MIN_SC_H = 32'b0010000??????????100?????1010111; - localparam logic [31:0] PV_MIN_SCI_H = 32'b001000???????????110?????1010111; - localparam logic [31:0] PV_MIN_B = 32'b0010000??????????001?????1010111; - localparam logic [31:0] PV_MIN_SC_B = 32'b0010000??????????101?????1010111; - localparam logic [31:0] PV_MIN_SCI_B = 32'b001000???????????111?????1010111; - localparam logic [31:0] PV_MINU_H = 32'b0010100??????????000?????1010111; - localparam logic [31:0] PV_MINU_SC_H = 32'b0010100??????????100?????1010111; - localparam logic [31:0] PV_MINU_SCI_H = 32'b001010???????????110?????1010111; - localparam logic [31:0] PV_MINU_B = 32'b0010100??????????001?????1010111; - localparam logic [31:0] PV_MINU_SC_B = 32'b0010100??????????101?????1010111; - localparam logic [31:0] PV_MINU_SCI_B = 32'b001010???????????111?????1010111; - localparam logic [31:0] PV_MAX_H = 32'b0011000??????????000?????1010111; - localparam logic [31:0] PV_MAX_SC_H = 32'b0011000??????????100?????1010111; - localparam logic [31:0] PV_MAX_SCI_H = 32'b001100???????????110?????1010111; - localparam logic [31:0] PV_MAX_B = 32'b0011000??????????001?????1010111; - localparam logic [31:0] PV_MAX_SC_B = 32'b0011000??????????101?????1010111; - localparam logic [31:0] PV_MAX_SCI_B = 32'b001100???????????111?????1010111; - localparam logic [31:0] PV_MAXU_H = 32'b0011100??????????000?????1010111; - localparam logic [31:0] PV_MAXU_SC_H = 32'b0011100??????????100?????1010111; - localparam logic [31:0] PV_MAXU_SCI_H = 32'b001110???????????110?????1010111; - localparam logic [31:0] PV_MAXU_B = 32'b0011100??????????001?????1010111; - localparam logic [31:0] PV_MAXU_SC_B = 32'b0011100??????????101?????1010111; - localparam logic [31:0] PV_MAXU_SCI_B = 32'b001110???????????111?????1010111; - localparam logic [31:0] PV_SRL_H = 32'b0100000??????????000?????1010111; - localparam logic [31:0] PV_SRL_SC_H = 32'b0100000??????????100?????1010111; - localparam logic [31:0] PV_SRL_SCI_H = 32'b010000???????????110?????1010111; - localparam logic [31:0] PV_SRL_B = 32'b0100000??????????001?????1010111; - localparam logic [31:0] PV_SRL_SC_B = 32'b0100000??????????101?????1010111; - localparam logic [31:0] PV_SRL_SCI_B = 32'b010000???????????111?????1010111; - localparam logic [31:0] PV_SRA_H = 32'b0100100??????????000?????1010111; - localparam logic [31:0] PV_SRA_SC_H = 32'b0100100??????????100?????1010111; - localparam logic [31:0] PV_SRA_SCI_H = 32'b010010???????????110?????1010111; - localparam logic [31:0] PV_SRA_B = 32'b0100100??????????001?????1010111; - localparam logic [31:0] PV_SRA_SC_B = 32'b0100100??????????101?????1010111; - localparam logic [31:0] PV_SRA_SCI_B = 32'b010010???????????111?????1010111; - localparam logic [31:0] PV_SLL_H = 32'b0101000??????????000?????1010111; - localparam logic [31:0] PV_SLL_SC_H = 32'b0101000??????????100?????1010111; - localparam logic [31:0] PV_SLL_SCI_H = 32'b010100???????????110?????1010111; - localparam logic [31:0] PV_SLL_B = 32'b0101000??????????001?????1010111; - localparam logic [31:0] PV_SLL_SC_B = 32'b0101000??????????101?????1010111; - localparam logic [31:0] PV_SLL_SCI_B = 32'b010100???????????111?????1010111; - localparam logic [31:0] PV_OR_H = 32'b0101100??????????000?????1010111; - localparam logic [31:0] PV_OR_SC_H = 32'b0101100??????????100?????1010111; - localparam logic [31:0] PV_OR_SCI_H = 32'b010110???????????110?????1010111; - localparam logic [31:0] PV_OR_B = 32'b0101100??????????001?????1010111; - localparam logic [31:0] PV_OR_SC_B = 32'b0101100??????????101?????1010111; - localparam logic [31:0] PV_OR_SCI_B = 32'b010110???????????111?????1010111; - localparam logic [31:0] PV_XOR_H = 32'b0110000??????????000?????1010111; - localparam logic [31:0] PV_XOR_SC_H = 32'b0110000??????????100?????1010111; - localparam logic [31:0] PV_XOR_SCI_H = 32'b011000???????????110?????1010111; - localparam logic [31:0] PV_XOR_B = 32'b0110000??????????001?????1010111; - localparam logic [31:0] PV_XOR_SC_B = 32'b0110000??????????101?????1010111; - localparam logic [31:0] PV_XOR_SCI_B = 32'b011000???????????111?????1010111; - localparam logic [31:0] PV_AND_H = 32'b0110100??????????000?????1010111; - localparam logic [31:0] PV_AND_SC_H = 32'b0110100??????????100?????1010111; - localparam logic [31:0] PV_AND_SCI_H = 32'b011010???????????110?????1010111; - localparam logic [31:0] PV_AND_B = 32'b0110100??????????001?????1010111; - localparam logic [31:0] PV_AND_SC_B = 32'b0110100??????????101?????1010111; - localparam logic [31:0] PV_AND_SCI_B = 32'b011010???????????111?????1010111; - localparam logic [31:0] PV_ABS_H = 32'b011100000000?????000?????1010111; - localparam logic [31:0] PV_ABS_B = 32'b011100000000?????001?????1010111; - localparam logic [31:0] PV_EXTRACT_H = 32'b011110???????????110?????1010111; - localparam logic [31:0] PV_EXTRACT_B = 32'b011110???????????111?????1010111; - localparam logic [31:0] PV_EXTRACTU_H = 32'b100100???????????110?????1010111; - localparam logic [31:0] PV_EXTRACTU_B = 32'b100100???????????111?????1010111; - localparam logic [31:0] PV_INSERT_H = 32'b101100???????????110?????1010111; - localparam logic [31:0] PV_INSERT_B = 32'b101100???????????111?????1010111; - localparam logic [31:0] PV_DOTSP_H = 32'b1001100??????????000?????1010111; - localparam logic [31:0] PV_DOTSP_SC_H = 32'b1001100??????????100?????1010111; - localparam logic [31:0] PV_DOTSP_SCI_H = 32'b100110???????????110?????1010111; - localparam logic [31:0] PV_DOTSP_B = 32'b1001100??????????001?????1010111; - localparam logic [31:0] PV_DOTSP_SC_B = 32'b1001100??????????101?????1010111; - localparam logic [31:0] PV_DOTSP_SCI_B = 32'b100110???????????111?????1010111; - localparam logic [31:0] PV_DOTUP_H = 32'b1000000??????????000?????1010111; - localparam logic [31:0] PV_DOTUP_SC_H = 32'b1000000??????????100?????1010111; - localparam logic [31:0] PV_DOTUP_SCI_H = 32'b100000???????????110?????1010111; - localparam logic [31:0] PV_DOTUP_B = 32'b1000000??????????001?????1010111; - localparam logic [31:0] PV_DOTUP_SC_B = 32'b1000000??????????101?????1010111; - localparam logic [31:0] PV_DOTUP_SCI_B = 32'b100000???????????111?????1010111; - localparam logic [31:0] PV_DOTUSP_H = 32'b1000100??????????000?????1010111; - localparam logic [31:0] PV_DOTUSP_SC_H = 32'b1000100??????????100?????1010111; - localparam logic [31:0] PV_DOTUSP_SCI_H = 32'b100010???????????110?????1010111; - localparam logic [31:0] PV_DOTUSP_B = 32'b1000100??????????001?????1010111; - localparam logic [31:0] PV_DOTUSP_SC_B = 32'b1000100??????????101?????1010111; - localparam logic [31:0] PV_DOTUSP_SCI_B = 32'b100010???????????111?????1010111; - localparam logic [31:0] PV_SDOTSP_H = 32'b1011100??????????000?????1010111; - localparam logic [31:0] PV_SDOTSP_SC_H = 32'b1011100??????????100?????1010111; - localparam logic [31:0] PV_SDOTSP_SCI_H = 32'b101110???????????110?????1010111; - localparam logic [31:0] PV_SDOTSP_B = 32'b1011100??????????001?????1010111; - localparam logic [31:0] PV_SDOTSP_SC_B = 32'b1011100??????????101?????1010111; - localparam logic [31:0] PV_SDOTSP_SCI_B = 32'b101110???????????111?????1010111; - localparam logic [31:0] PV_SDOTUP_H = 32'b1010000??????????000?????1010111; - localparam logic [31:0] PV_SDOTUP_SC_H = 32'b1010000??????????100?????1010111; - localparam logic [31:0] PV_SDOTUP_SCI_H = 32'b101000???????????110?????1010111; - localparam logic [31:0] PV_SDOTUP_B = 32'b1010000??????????001?????1010111; - localparam logic [31:0] PV_SDOTUP_SC_B = 32'b1010000??????????101?????1010111; - localparam logic [31:0] PV_SDOTUP_SCI_B = 32'b101000???????????111?????1010111; - localparam logic [31:0] PV_SDOTUSP_H = 32'b1010100??????????000?????1010111; - localparam logic [31:0] PV_SDOTUSP_SC_H = 32'b1010100??????????100?????1010111; - localparam logic [31:0] PV_SDOTUSP_SCI_H = 32'b101010???????????110?????1010111; - localparam logic [31:0] PV_SDOTUSP_B = 32'b1010100??????????001?????1010111; - localparam logic [31:0] PV_SDOTUSP_SC_B = 32'b1010100??????????101?????1010111; - localparam logic [31:0] PV_SDOTUSP_SCI_B = 32'b101010???????????111?????1010111; - localparam logic [31:0] PV_CMPEQ_H = 32'b0000010??????????000?????1010111; - localparam logic [31:0] PV_CMPEQ_SC_H = 32'b0000010??????????100?????1010111; - localparam logic [31:0] PV_CMPEQ_SCI_H = 32'b000001???????????110?????1010111; - localparam logic [31:0] PV_CMPEQ_B = 32'b0000010??????????001?????1010111; - localparam logic [31:0] PV_CMPEQ_SC_B = 32'b0000010??????????101?????1010111; - localparam logic [31:0] PV_CMPEQ_SCI_B = 32'b000001???????????111?????1010111; - localparam logic [31:0] PV_CMPNE_H = 32'b0000110??????????000?????1010111; - localparam logic [31:0] PV_CMPNE_SC_H = 32'b0000110??????????100?????1010111; - localparam logic [31:0] PV_CMPNE_SCI_H = 32'b000011???????????110?????1010111; - localparam logic [31:0] PV_CMPNE_B = 32'b0000110??????????001?????1010111; - localparam logic [31:0] PV_CMPNE_SC_B = 32'b0000110??????????101?????1010111; - localparam logic [31:0] PV_CMPNE_SCI_B = 32'b000011???????????111?????1010111; - localparam logic [31:0] PV_CMPGT_H = 32'b0001010??????????000?????1010111; - localparam logic [31:0] PV_CMPGT_SC_H = 32'b0001010??????????100?????1010111; - localparam logic [31:0] PV_CMPGT_SCI_H = 32'b000101???????????110?????1010111; - localparam logic [31:0] PV_CMPGT_B = 32'b0001010??????????001?????1010111; - localparam logic [31:0] PV_CMPGT_SC_B = 32'b0001010??????????101?????1010111; - localparam logic [31:0] PV_CMPGT_SCI_B = 32'b000101???????????111?????1010111; - localparam logic [31:0] PV_CMPGE_H = 32'b0001110??????????000?????1010111; - localparam logic [31:0] PV_CMPGE_SC_H = 32'b0001110??????????100?????1010111; - localparam logic [31:0] PV_CMPGE_SCI_H = 32'b000111???????????110?????1010111; - localparam logic [31:0] PV_CMPGE_B = 32'b0001110??????????001?????1010111; - localparam logic [31:0] PV_CMPGE_SC_B = 32'b0001110??????????101?????1010111; - localparam logic [31:0] PV_CMPGE_SCI_B = 32'b000111???????????111?????1010111; - localparam logic [31:0] PV_CMPLT_H = 32'b0010010??????????000?????1010111; - localparam logic [31:0] PV_CMPLT_SC_H = 32'b0010010??????????100?????1010111; - localparam logic [31:0] PV_CMPLT_SCI_H = 32'b001001???????????110?????1010111; - localparam logic [31:0] PV_CMPLT_B = 32'b0010010??????????001?????1010111; - localparam logic [31:0] PV_CMPLT_SC_B = 32'b0010010??????????101?????1010111; - localparam logic [31:0] PV_CMPLT_SCI_B = 32'b001001???????????111?????1010111; - localparam logic [31:0] PV_CMPLE_H = 32'b0010110??????????000?????1010111; - localparam logic [31:0] PV_CMPLE_SC_H = 32'b0010110??????????100?????1010111; - localparam logic [31:0] PV_CMPLE_SCI_H = 32'b001011???????????110?????1010111; - localparam logic [31:0] PV_CMPLE_B = 32'b0010110??????????001?????1010111; - localparam logic [31:0] PV_CMPLE_SC_B = 32'b0010110??????????101?????1010111; - localparam logic [31:0] PV_CMPLE_SCI_B = 32'b001011???????????111?????1010111; - localparam logic [31:0] PV_CMPGTU_H = 32'b0011010??????????000?????1010111; - localparam logic [31:0] PV_CMPGTU_SC_H = 32'b0011010??????????100?????1010111; - localparam logic [31:0] PV_CMPGTU_SCI_H = 32'b001101???????????110?????1010111; - localparam logic [31:0] PV_CMPGTU_B = 32'b0011010??????????001?????1010111; - localparam logic [31:0] PV_CMPGTU_SC_B = 32'b0011010??????????101?????1010111; - localparam logic [31:0] PV_CMPGTU_SCI_B = 32'b001101???????????111?????1010111; - localparam logic [31:0] PV_CMPGEU_H = 32'b0011110??????????000?????1010111; - localparam logic [31:0] PV_CMPGEU_SC_H = 32'b0011110??????????100?????1010111; - localparam logic [31:0] PV_CMPGEU_SCI_H = 32'b001111???????????110?????1010111; - localparam logic [31:0] PV_CMPGEU_B = 32'b0011110??????????001?????1010111; - localparam logic [31:0] PV_CMPGEU_SC_B = 32'b0011110??????????101?????1010111; - localparam logic [31:0] PV_CMPGEU_SCI_B = 32'b001111???????????111?????1010111; - localparam logic [31:0] PV_CMPLTU_H = 32'b0100010??????????000?????1010111; - localparam logic [31:0] PV_CMPLTU_SC_H = 32'b0100010??????????100?????1010111; - localparam logic [31:0] PV_CMPLTU_SCI_H = 32'b010001???????????110?????1010111; - localparam logic [31:0] PV_CMPLTU_B = 32'b0100010??????????001?????1010111; - localparam logic [31:0] PV_CMPLTU_SC_B = 32'b0100010??????????101?????1010111; - localparam logic [31:0] PV_CMPLTU_SCI_B = 32'b010001???????????111?????1010111; - localparam logic [31:0] PV_CMPLEU_H = 32'b0100110??????????000?????1010111; - localparam logic [31:0] PV_CMPLEU_SC_H = 32'b0100110??????????100?????1010111; - localparam logic [31:0] PV_CMPLEU_SCI_H = 32'b010011???????????110?????1010111; - localparam logic [31:0] PV_CMPLEU_B = 32'b0100110??????????001?????1010111; - localparam logic [31:0] PV_CMPLEU_SC_B = 32'b0100110??????????101?????1010111; - localparam logic [31:0] PV_CMPLEU_SCI_B = 32'b010011???????????111?????1010111; - localparam logic [31:0] PV_ADD_H_DIV2 = 32'b0111010??????????010?????1010111; - localparam logic [31:0] PV_ADD_H_DIV4 = 32'b0111010??????????100?????1010111; - localparam logic [31:0] PV_ADD_H_DIV8 = 32'b0111010??????????110?????1010111; - localparam logic [31:0] PV_SUB_H_DIV2 = 32'b0110010??????????010?????1010111; - localparam logic [31:0] PV_SUB_H_DIV4 = 32'b0110010??????????100?????1010111; - localparam logic [31:0] PV_SUB_H_DIV8 = 32'b0110010??????????110?????1010111; - localparam logic [31:0] PV_SHUFFLE_H = 32'b1100000??????????000?????1010111; - localparam logic [31:0] PV_SHUFFLE_SCI_H = 32'b110000???????????110?????1010111; - localparam logic [31:0] PV_SHUFFLE_B = 32'b1100000??????????001?????1010111; - localparam logic [31:0] PV_SHUFFLEI0_SCI_B = 32'b110000???????????111?????1010111; - localparam logic [31:0] PV_SHUFFLEI1_SCI_B = 32'b111010???????????111?????1010111; - localparam logic [31:0] PV_SHUFFLEI2_SCI_B = 32'b111100???????????111?????1010111; - localparam logic [31:0] PV_SHUFFLEI3_SCI_B = 32'b111110???????????111?????1010111; - localparam logic [31:0] PV_SHUFFLE2_H = 32'b1100100??????????000?????1010111; - localparam logic [31:0] PV_SHUFFLE2_B = 32'b1100100??????????001?????1010111; - localparam logic [31:0] PV_PACK = 32'b1101000??????????000?????1010111; - localparam logic [31:0] PV_PACK_H = 32'b1101001??????????000?????1010111; - localparam logic [31:0] PV_PACKHI_B = 32'b1101100??????????001?????1010111; - localparam logic [31:0] PV_PACKLO_B = 32'b1110000??????????001?????1010111; - localparam logic [31:0] IMV_X_W = 32'b111000000000?????000?????1011011; - localparam logic [31:0] IMV_W_X = 32'b111100000000?????000?????1011011; - localparam logic [31:0] IADDI = 32'b?????????????????000?????1111011; - localparam logic [31:0] ISLLI = 32'b000000???????????001?????1111011; - localparam logic [31:0] ISLTI = 32'b?????????????????010?????1111011; - localparam logic [31:0] ISLTIU = 32'b?????????????????011?????1111011; - localparam logic [31:0] IXORI = 32'b?????????????????100?????1111011; - localparam logic [31:0] ISRLI = 32'b000000???????????101?????1111011; - localparam logic [31:0] ISRAI = 32'b010000???????????101?????1111011; - localparam logic [31:0] IORI = 32'b?????????????????110?????1111011; - localparam logic [31:0] IANDI = 32'b?????????????????111?????1111011; - localparam logic [31:0] IADD = 32'b0000000??????????000?????1011011; - localparam logic [31:0] ISUB = 32'b0100000??????????000?????1011011; - localparam logic [31:0] ISLL = 32'b0000000??????????001?????1011011; - localparam logic [31:0] ISLT = 32'b0000000??????????010?????1011011; - localparam logic [31:0] ISLTU = 32'b0000000??????????011?????1011011; - localparam logic [31:0] IXOR = 32'b0000000??????????100?????1011011; - localparam logic [31:0] ISRL = 32'b0000000??????????101?????1011011; - localparam logic [31:0] ISRA = 32'b0100000??????????101?????1011011; - localparam logic [31:0] IOR = 32'b0000000??????????110?????1011011; - localparam logic [31:0] IAND = 32'b0000000??????????111?????1011011; - localparam logic [31:0] IMADD = 32'b?????01??????????000?????1011011; - localparam logic [31:0] IMSUB = 32'b?????01??????????001?????1011011; - localparam logic [31:0] INMSUB = 32'b?????01??????????010?????1011011; - localparam logic [31:0] INMADD = 32'b?????01??????????011?????1011011; - localparam logic [31:0] IMUL = 32'b0000010??????????000?????1011011; - localparam logic [31:0] IMULH = 32'b0000010??????????001?????1011011; - localparam logic [31:0] IMULHSU = 32'b0000010??????????010?????1011011; - localparam logic [31:0] IMULHU = 32'b0000010??????????011?????1011011; - localparam logic [31:0] IANDN = 32'b0100000??????????111?????1011011; - localparam logic [31:0] IORN = 32'b0100000??????????110?????1011011; - localparam logic [31:0] IXNOR = 32'b0100000??????????100?????1011011; - localparam logic [31:0] ISLO = 32'b0010000??????????001?????1011011; - localparam logic [31:0] ISRO = 32'b0010000??????????101?????1011011; - localparam logic [31:0] IROL = 32'b0110000??????????001?????1011011; - localparam logic [31:0] IROR = 32'b0110000??????????101?????1011011; - localparam logic [31:0] ISBCLR = 32'b0100100??????????001?????1011011; - localparam logic [31:0] ISBSET = 32'b0010100??????????001?????1011011; - localparam logic [31:0] ISBINV = 32'b0110100??????????001?????1011011; - localparam logic [31:0] ISBEXT = 32'b0100100??????????101?????1011011; - localparam logic [31:0] IGORC = 32'b0010100??????????101?????1011011; - localparam logic [31:0] IGREV = 32'b0110100??????????101?????1011011; - localparam logic [31:0] ISLOI = 32'b001000???????????001?????1111011; - localparam logic [31:0] ISROI = 32'b001000???????????101?????1111011; - localparam logic [31:0] IRORI = 32'b011000???????????101?????1111011; - localparam logic [31:0] ISBCLRI = 32'b010010???????????001?????1111011; - localparam logic [31:0] ISBSETI = 32'b001010???????????001?????1111011; - localparam logic [31:0] ISBINVI = 32'b011010???????????001?????1111011; - localparam logic [31:0] ISBEXTI = 32'b010010???????????101?????1111011; - localparam logic [31:0] IGORCI = 32'b001010???????????101?????1111011; - localparam logic [31:0] IGREVI = 32'b011010???????????101?????1111011; - localparam logic [31:0] ICLZ = 32'b011000000000?????010?????1011011; - localparam logic [31:0] ICTZ = 32'b011000000001?????010?????1011011; - localparam logic [31:0] IPCNT = 32'b011000000010?????010?????1011011; - localparam logic [31:0] ISEXT_B = 32'b011000000100?????010?????1011011; - localparam logic [31:0] ISEXT_H = 32'b011000000101?????010?????1011011; - localparam logic [31:0] ICRC32_B = 32'b011000010000?????001?????1011011; - localparam logic [31:0] ICRC32_H = 32'b011000010001?????001?????1011011; - localparam logic [31:0] ICRC32_W = 32'b011000010010?????001?????1011011; - localparam logic [31:0] ICRC32C_B = 32'b011000011000?????001?????1011011; - localparam logic [31:0] ICRC32C_H = 32'b011000011001?????001?????1011011; - localparam logic [31:0] ICRC32C_W = 32'b011000011010?????001?????1011011; - localparam logic [31:0] ISH1ADD = 32'b0010000??????????010?????1011011; - localparam logic [31:0] ISH2ADD = 32'b0010000??????????100?????1011011; - localparam logic [31:0] ISH3ADD = 32'b0010000??????????110?????1011011; - localparam logic [31:0] ICLMUL = 32'b0000101??????????001?????1011011; - localparam logic [31:0] ICLMULR = 32'b0000101??????????010?????1011011; - localparam logic [31:0] ICLMULH = 32'b0000101??????????011?????1011011; - localparam logic [31:0] IMIN = 32'b0000101??????????100?????1011011; - localparam logic [31:0] IMAX = 32'b0000101??????????101?????1011011; - localparam logic [31:0] IMINU = 32'b0000101??????????110?????1011011; - localparam logic [31:0] IMAXU = 32'b0000101??????????111?????1011011; - localparam logic [31:0] ISHFL = 32'b0000100??????????001?????1011011; - localparam logic [31:0] IUNSHFL = 32'b0000100??????????101?????1011011; - localparam logic [31:0] IBEXT = 32'b0000100??????????110?????1011011; - localparam logic [31:0] IBDEP = 32'b0100100??????????110?????1011011; - localparam logic [31:0] IPACK = 32'b0000100??????????100?????1011011; - localparam logic [31:0] IPACKU = 32'b0100100??????????100?????1011011; - localparam logic [31:0] IPACKH = 32'b0000100??????????111?????1011011; - localparam logic [31:0] IBFP = 32'b0100100??????????111?????1011011; - localparam logic [31:0] ISHFLI = 32'b0000100??????????001?????1111011; - localparam logic [31:0] IUNSHFLI = 32'b0000100??????????101?????1111011; + localparam [31:0] ADD = 32'b0000000??????????000?????0110011; + localparam [31:0] ADDI = 32'b?????????????????000?????0010011; + localparam [31:0] ADDIW = 32'b?????????????????000?????0011011; + localparam [31:0] ADDW = 32'b0000000??????????000?????0111011; + localparam [31:0] AMOADD_D = 32'b00000????????????011?????0101111; + localparam [31:0] AMOADD_W = 32'b00000????????????010?????0101111; + localparam [31:0] AMOAND_D = 32'b01100????????????011?????0101111; + localparam [31:0] AMOAND_W = 32'b01100????????????010?????0101111; + localparam [31:0] AMOMAX_D = 32'b10100????????????011?????0101111; + localparam [31:0] AMOMAX_W = 32'b10100????????????010?????0101111; + localparam [31:0] AMOMAXU_D = 32'b11100????????????011?????0101111; + localparam [31:0] AMOMAXU_W = 32'b11100????????????010?????0101111; + localparam [31:0] AMOMIN_D = 32'b10000????????????011?????0101111; + localparam [31:0] AMOMIN_W = 32'b10000????????????010?????0101111; + localparam [31:0] AMOMINU_D = 32'b11000????????????011?????0101111; + localparam [31:0] AMOMINU_W = 32'b11000????????????010?????0101111; + localparam [31:0] AMOOR_D = 32'b01000????????????011?????0101111; + localparam [31:0] AMOOR_W = 32'b01000????????????010?????0101111; + localparam [31:0] AMOSWAP_D = 32'b00001????????????011?????0101111; + localparam [31:0] AMOSWAP_W = 32'b00001????????????010?????0101111; + localparam [31:0] AMOXOR_D = 32'b00100????????????011?????0101111; + localparam [31:0] AMOXOR_W = 32'b00100????????????010?????0101111; + localparam [31:0] AND = 32'b0000000??????????111?????0110011; + localparam [31:0] ANDI = 32'b?????????????????111?????0010011; + localparam [31:0] ANDN = 32'b0100000??????????111?????0110011; + localparam [31:0] AUIPC = 32'b?????????????????????????0010111; + localparam [31:0] BDEP = 32'b0100100??????????110?????0110011; + localparam [31:0] BEQ = 32'b?????????????????000?????1100011; + localparam [31:0] BEXT = 32'b0000100??????????110?????0110011; + localparam [31:0] BFP = 32'b0100100??????????111?????0110011; + localparam [31:0] BGE = 32'b?????????????????101?????1100011; + localparam [31:0] BGEU = 32'b?????????????????111?????1100011; + localparam [31:0] BLT = 32'b?????????????????100?????1100011; + localparam [31:0] BLTU = 32'b?????????????????110?????1100011; + localparam [31:0] BNE = 32'b?????????????????001?????1100011; + localparam [31:0] CLMUL = 32'b0000101??????????001?????0110011; + localparam [31:0] CLMULH = 32'b0000101??????????011?????0110011; + localparam [31:0] CLMULR = 32'b0000101??????????010?????0110011; + localparam [31:0] CLZ = 32'b011000000000?????001?????0010011; + localparam [31:0] CMIX = 32'b?????11??????????001?????0110011; + localparam [31:0] CMOV = 32'b?????11??????????101?????0110011; + localparam [31:0] CRC32_B = 32'b011000010000?????001?????0010011; + localparam [31:0] CRC32_H = 32'b011000010001?????001?????0010011; + localparam [31:0] CRC32_W = 32'b011000010010?????001?????0010011; + localparam [31:0] CRC32C_B = 32'b011000011000?????001?????0010011; + localparam [31:0] CRC32C_H = 32'b011000011001?????001?????0010011; + localparam [31:0] CRC32C_W = 32'b011000011010?????001?????0010011; + localparam [31:0] CSRRC = 32'b?????????????????011?????1110011; + localparam [31:0] CSRRCI = 32'b?????????????????111?????1110011; + localparam [31:0] CSRRS = 32'b?????????????????010?????1110011; + localparam [31:0] CSRRSI = 32'b?????????????????110?????1110011; + localparam [31:0] CSRRW = 32'b?????????????????001?????1110011; + localparam [31:0] CSRRWI = 32'b?????????????????101?????1110011; + localparam [31:0] CTZ = 32'b011000000001?????001?????0010011; + localparam [31:0] DIV = 32'b0000001??????????100?????0110011; + localparam [31:0] DIVU = 32'b0000001??????????101?????0110011; + localparam [31:0] DIVUW = 32'b0000001??????????101?????0111011; + localparam [31:0] DIVW = 32'b0000001??????????100?????0111011; + localparam [31:0] DMCPY = 32'b0000011??????????000?????0101011; + localparam [31:0] DMCPYI = 32'b0000010??????????000?????0101011; + localparam [31:0] DMDST = 32'b0000001??????????000000000101011; + localparam [31:0] DMINIT = 32'b0001001??????????000?????0101011; + localparam [31:0] DMREP = 32'b000011100000?????000000000101011; + localparam [31:0] DMSRC = 32'b0000000??????????000000000101011; + localparam [31:0] DMSTAT = 32'b0000101?????00000000?????0101011; + localparam [31:0] DMSTATI = 32'b0000100?????00000000?????0101011; + localparam [31:0] DMSTR = 32'b0000110??????????000000000101011; + localparam [31:0] DMUSER = 32'b0001000??????????000000000101011; + localparam [31:0] DRET = 32'b01111011001000000000000001110011; + localparam [31:0] EBREAK = 32'b00000000000100000000000001110011; + localparam [31:0] ECALL = 32'b00000000000000000000000001110011; + localparam [31:0] FADD_AB = 32'b0000011??????????????????1010011; + localparam [31:0] FADD_AH = 32'b0000010??????????????????1010011; + localparam [31:0] FADD_B = 32'b0000011??????????????????1010011; + localparam [31:0] FADD_D = 32'b0000001??????????????????1010011; + localparam [31:0] FADD_H = 32'b0000010??????????????????1010011; + localparam [31:0] FADD_Q = 32'b0000011??????????????????1010011; + localparam [31:0] FADD_S = 32'b0000000??????????????????1010011; + localparam [31:0] FCLASS_AB = 32'b111001100000?????001?????1010011; + localparam [31:0] FCLASS_AH = 32'b111001000000?????001?????1010011; + localparam [31:0] FCLASS_B = 32'b111001100000?????001?????1010011; + localparam [31:0] FCLASS_D = 32'b111000100000?????001?????1010011; + localparam [31:0] FCLASS_H = 32'b111001000000?????001?????1010011; + localparam [31:0] FCLASS_Q = 32'b111001100000?????001?????1010011; + localparam [31:0] FCLASS_S = 32'b111000000000?????001?????1010011; + localparam [31:0] FCVT_AB_AB = 32'b010001100011?????000?????1010011; + localparam [31:0] FCVT_AB_AH = 32'b010001100010?????????????1010011; + localparam [31:0] FCVT_AB_B = 32'b010001100011?????000?????1010011; + localparam [31:0] FCVT_AB_D = 32'b010001100001?????????????1010011; + localparam [31:0] FCVT_AB_H = 32'b010001100010?????????????1010011; + localparam [31:0] FCVT_AB_L = 32'b110101100010?????????????1010011; + localparam [31:0] FCVT_AB_LU = 32'b110101100011?????????????1010011; + localparam [31:0] FCVT_AB_S = 32'b010001100000?????????????1010011; + localparam [31:0] FCVT_AB_W = 32'b110101100000?????????????1010011; + localparam [31:0] FCVT_AB_WU = 32'b110101100001?????????????1010011; + localparam [31:0] FCVT_AH_AB = 32'b010001000011?????000?????1010011; + localparam [31:0] FCVT_AH_AH = 32'b010001000010?????????????1010011; + localparam [31:0] FCVT_AH_B = 32'b010001000011?????000?????1010011; + localparam [31:0] FCVT_AH_D = 32'b010001000001?????????????1010011; + localparam [31:0] FCVT_AH_H = 32'b010001000010?????????????1010011; + localparam [31:0] FCVT_AH_L = 32'b110101000010?????????????1010011; + localparam [31:0] FCVT_AH_LU = 32'b110101000011?????????????1010011; + localparam [31:0] FCVT_AH_S = 32'b010001000000?????????????1010011; + localparam [31:0] FCVT_AH_W = 32'b110101000000?????????????1010011; + localparam [31:0] FCVT_AH_WU = 32'b110101000001?????????????1010011; + localparam [31:0] FCVT_B_AB = 32'b010001100011?????000?????1010011; + localparam [31:0] FCVT_B_AH = 32'b010001100010?????????????1010011; + localparam [31:0] FCVT_B_B = 32'b010001100011?????000?????1010011; + localparam [31:0] FCVT_B_D = 32'b010001100001?????????????1010011; + localparam [31:0] FCVT_B_H = 32'b010001100010?????????????1010011; + localparam [31:0] FCVT_B_L = 32'b110101100010?????????????1010011; + localparam [31:0] FCVT_B_LU = 32'b110101100011?????????????1010011; + localparam [31:0] FCVT_B_S = 32'b010001100000?????????????1010011; + localparam [31:0] FCVT_B_W = 32'b110101100000?????????????1010011; + localparam [31:0] FCVT_B_WU = 32'b110101100001?????????????1010011; + localparam [31:0] FCVT_D_AB = 32'b010000100011?????000?????1010011; + localparam [31:0] FCVT_D_AH = 32'b010000100010?????000?????1010011; + localparam [31:0] FCVT_D_B = 32'b010000100011?????000?????1010011; + localparam [31:0] FCVT_D_H = 32'b010000100010?????000?????1010011; + localparam [31:0] FCVT_D_L = 32'b110100100010?????????????1010011; + localparam [31:0] FCVT_D_LU = 32'b110100100011?????????????1010011; + localparam [31:0] FCVT_D_Q = 32'b010000100011?????????????1010011; + localparam [31:0] FCVT_D_S = 32'b010000100000?????????????1010011; + localparam [31:0] FCVT_D_W = 32'b110100100000?????????????1010011; + localparam [31:0] FCVT_D_W_COPIFT = 32'b110100100000?????????????0101011; + localparam [31:0] FCVT_D_WU = 32'b110100100001?????????????1010011; + localparam [31:0] FCVT_D_WU_COPIFT = 32'b110100100001?????????????0101011; + localparam [31:0] FCVT_H_AB = 32'b010001000011?????000?????1010011; + localparam [31:0] FCVT_H_AH = 32'b010001000010?????????????1010011; + localparam [31:0] FCVT_H_B = 32'b010001000011?????000?????1010011; + localparam [31:0] FCVT_H_D = 32'b010001000001?????????????1010011; + localparam [31:0] FCVT_H_H = 32'b010001000010?????????????1010011; + localparam [31:0] FCVT_H_L = 32'b110101000010?????????????1010011; + localparam [31:0] FCVT_H_LU = 32'b110101000011?????????????1010011; + localparam [31:0] FCVT_H_S = 32'b010001000000?????????????1010011; + localparam [31:0] FCVT_H_W = 32'b110101000000?????????????1010011; + localparam [31:0] FCVT_H_WU = 32'b110101000001?????????????1010011; + localparam [31:0] FCVT_L_AB = 32'b110001100010?????????????1010011; + localparam [31:0] FCVT_L_AH = 32'b110001000010?????????????1010011; + localparam [31:0] FCVT_L_B = 32'b110001100010?????????????1010011; + localparam [31:0] FCVT_L_D = 32'b110000100010?????????????1010011; + localparam [31:0] FCVT_L_H = 32'b110001000010?????????????1010011; + localparam [31:0] FCVT_L_Q = 32'b110001100010?????????????1010011; + localparam [31:0] FCVT_L_S = 32'b110000000010?????????????1010011; + localparam [31:0] FCVT_LU_AB = 32'b110001100011?????????????1010011; + localparam [31:0] FCVT_LU_AH = 32'b110001000011?????????????1010011; + localparam [31:0] FCVT_LU_B = 32'b110001100011?????????????1010011; + localparam [31:0] FCVT_LU_D = 32'b110000100011?????????????1010011; + localparam [31:0] FCVT_LU_H = 32'b110001000011?????????????1010011; + localparam [31:0] FCVT_LU_Q = 32'b110001100011?????????????1010011; + localparam [31:0] FCVT_LU_S = 32'b110000000011?????????????1010011; + localparam [31:0] FCVT_Q_D = 32'b010001100001?????????????1010011; + localparam [31:0] FCVT_Q_L = 32'b110101100010?????????????1010011; + localparam [31:0] FCVT_Q_LU = 32'b110101100011?????????????1010011; + localparam [31:0] FCVT_Q_S = 32'b010001100000?????????????1010011; + localparam [31:0] FCVT_Q_W = 32'b110101100000?????????????1010011; + localparam [31:0] FCVT_Q_WU = 32'b110101100001?????????????1010011; + localparam [31:0] FCVT_S_AB = 32'b010000000011?????000?????1010011; + localparam [31:0] FCVT_S_AH = 32'b010000000010?????000?????1010011; + localparam [31:0] FCVT_S_B = 32'b010000000011?????000?????1010011; + localparam [31:0] FCVT_S_D = 32'b010000000001?????????????1010011; + localparam [31:0] FCVT_S_H = 32'b010000000010?????000?????1010011; + localparam [31:0] FCVT_S_L = 32'b110100000010?????????????1010011; + localparam [31:0] FCVT_S_LU = 32'b110100000011?????????????1010011; + localparam [31:0] FCVT_S_Q = 32'b010000000011?????????????1010011; + localparam [31:0] FCVT_S_W = 32'b110100000000?????????????1010011; + localparam [31:0] FCVT_S_WU = 32'b110100000001?????????????1010011; + localparam [31:0] FCVT_W_AB = 32'b110001100000?????????????1010011; + localparam [31:0] FCVT_W_AH = 32'b110001000000?????????????1010011; + localparam [31:0] FCVT_W_B = 32'b110001100000?????????????1010011; + localparam [31:0] FCVT_W_D = 32'b110000100000?????????????1010011; + localparam [31:0] FCVT_W_H = 32'b110001000000?????????????1010011; + localparam [31:0] FCVT_W_Q = 32'b110001100000?????????????1010011; + localparam [31:0] FCVT_W_S = 32'b110000000000?????????????1010011; + localparam [31:0] FCVT_WU_AB = 32'b110001100001?????????????1010011; + localparam [31:0] FCVT_WU_AH = 32'b110001000001?????????????1010011; + localparam [31:0] FCVT_WU_B = 32'b110001100001?????????????1010011; + localparam [31:0] FCVT_WU_D = 32'b110000100001?????????????1010011; + localparam [31:0] FCVT_WU_H = 32'b110001000001?????????????1010011; + localparam [31:0] FCVT_WU_Q = 32'b110001100001?????????????1010011; + localparam [31:0] FCVT_WU_S = 32'b110000000001?????????????1010011; + localparam [31:0] FDIV_AB = 32'b0001111??????????????????1010011; + localparam [31:0] FDIV_AH = 32'b0001110??????????????????1010011; + localparam [31:0] FDIV_B = 32'b0001111??????????????????1010011; + localparam [31:0] FDIV_D = 32'b0001101??????????????????1010011; + localparam [31:0] FDIV_H = 32'b0001110??????????????????1010011; + localparam [31:0] FDIV_Q = 32'b0001111??????????????????1010011; + localparam [31:0] FDIV_S = 32'b0001100??????????????????1010011; + localparam [31:0] FENCE = 32'b?????????????????000?????0001111; + localparam [31:0] FENCE_I = 32'b?????????????????001?????0001111; + localparam [31:0] FEQ_AB = 32'b1010011??????????010?????1010011; + localparam [31:0] FEQ_AH = 32'b1010010??????????010?????1010011; + localparam [31:0] FEQ_B = 32'b1010011??????????010?????1010011; + localparam [31:0] FEQ_D = 32'b1010001??????????010?????1010011; + localparam [31:0] FEQ_H = 32'b1010010??????????010?????1010011; + localparam [31:0] FEQ_Q = 32'b1010011??????????010?????1010011; + localparam [31:0] FEQ_S = 32'b1010000??????????010?????1010011; + localparam [31:0] FLAB = 32'b?????????????????000?????0000111; + localparam [31:0] FLAH = 32'b?????????????????001?????0000111; + localparam [31:0] FLB = 32'b?????????????????000?????0000111; + localparam [31:0] FLD = 32'b?????????????????011?????0000111; + localparam [31:0] FLE_AB = 32'b1010011??????????000?????1010011; + localparam [31:0] FLE_AH = 32'b1010010??????????000?????1010011; + localparam [31:0] FLE_B = 32'b1010011??????????000?????1010011; + localparam [31:0] FLE_D = 32'b1010001??????????000?????1010011; + localparam [31:0] FLE_H = 32'b1010010??????????000?????1010011; + localparam [31:0] FLE_Q = 32'b1010011??????????000?????1010011; + localparam [31:0] FLE_S = 32'b1010000??????????000?????1010011; + localparam [31:0] FLH = 32'b?????????????????001?????0000111; + localparam [31:0] FLQ = 32'b?????????????????100?????0000111; + localparam [31:0] FLT_AB = 32'b1010011??????????001?????1010011; + localparam [31:0] FLT_AH = 32'b1010010??????????001?????1010011; + localparam [31:0] FLT_B = 32'b1010011??????????001?????1010011; + localparam [31:0] FLT_D = 32'b1010001??????????001?????1010011; + localparam [31:0] FLT_D_COPIFT = 32'b1010001??????????001?????0101011; + localparam [31:0] FLT_H = 32'b1010010??????????001?????1010011; + localparam [31:0] FLT_Q = 32'b1010011??????????001?????1010011; + localparam [31:0] FLT_S = 32'b1010000??????????001?????1010011; + localparam [31:0] FLW = 32'b?????????????????010?????0000111; + localparam [31:0] FMACEX_S_AB = 32'b0101011??????????????????1010011; + localparam [31:0] FMACEX_S_AH = 32'b0101010??????????????????1010011; + localparam [31:0] FMACEX_S_B = 32'b0101011??????????????????1010011; + localparam [31:0] FMACEX_S_H = 32'b0101010??????????????????1010011; + localparam [31:0] FMADD_AB = 32'b?????11??????????????????1000011; + localparam [31:0] FMADD_AH = 32'b?????10??????????????????1000011; + localparam [31:0] FMADD_B = 32'b?????11??????????????????1000011; + localparam [31:0] FMADD_D = 32'b?????01??????????????????1000011; + localparam [31:0] FMADD_H = 32'b?????10??????????????????1000011; + localparam [31:0] FMADD_Q = 32'b?????11??????????????????1000011; + localparam [31:0] FMADD_S = 32'b?????00??????????????????1000011; + localparam [31:0] FMAX_AB = 32'b0010111??????????001?????1010011; + localparam [31:0] FMAX_AH = 32'b0010110??????????001?????1010011; + localparam [31:0] FMAX_B = 32'b0010111??????????001?????1010011; + localparam [31:0] FMAX_D = 32'b0010101??????????001?????1010011; + localparam [31:0] FMAX_H = 32'b0010110??????????001?????1010011; + localparam [31:0] FMAX_Q = 32'b0010111??????????001?????1010011; + localparam [31:0] FMAX_S = 32'b0010100??????????001?????1010011; + localparam [31:0] FMIN_AB = 32'b0010111??????????000?????1010011; + localparam [31:0] FMIN_AH = 32'b0010110??????????000?????1010011; + localparam [31:0] FMIN_B = 32'b0010111??????????000?????1010011; + localparam [31:0] FMIN_D = 32'b0010101??????????000?????1010011; + localparam [31:0] FMIN_H = 32'b0010110??????????000?????1010011; + localparam [31:0] FMIN_Q = 32'b0010111??????????000?????1010011; + localparam [31:0] FMIN_S = 32'b0010100??????????000?????1010011; + localparam [31:0] FMSUB_AB = 32'b?????11??????????????????1000111; + localparam [31:0] FMSUB_AH = 32'b?????10??????????????????1000111; + localparam [31:0] FMSUB_B = 32'b?????11??????????????????1000111; + localparam [31:0] FMSUB_D = 32'b?????01??????????????????1000111; + localparam [31:0] FMSUB_H = 32'b?????10??????????????????1000111; + localparam [31:0] FMSUB_Q = 32'b?????11??????????????????1000111; + localparam [31:0] FMSUB_S = 32'b?????00??????????????????1000111; + localparam [31:0] FMUL_AB = 32'b0001011??????????????????1010011; + localparam [31:0] FMUL_AH = 32'b0001010??????????????????1010011; + localparam [31:0] FMUL_B = 32'b0001011??????????????????1010011; + localparam [31:0] FMUL_D = 32'b0001001??????????????????1010011; + localparam [31:0] FMUL_H = 32'b0001010??????????????????1010011; + localparam [31:0] FMUL_Q = 32'b0001011??????????????????1010011; + localparam [31:0] FMUL_S = 32'b0001000??????????????????1010011; + localparam [31:0] FMULEX_S_AB = 32'b0100111??????????????????1010011; + localparam [31:0] FMULEX_S_AH = 32'b0100110??????????????????1010011; + localparam [31:0] FMULEX_S_B = 32'b0100111??????????????????1010011; + localparam [31:0] FMULEX_S_H = 32'b0100110??????????????????1010011; + localparam [31:0] FMV_AB_X = 32'b111101100000?????000?????1010011; + localparam [31:0] FMV_AH_X = 32'b111101000000?????000?????1010011; + localparam [31:0] FMV_B_X = 32'b111101100000?????000?????1010011; + localparam [31:0] FMV_D_X = 32'b111100100000?????000?????1010011; + localparam [31:0] FMV_H_X = 32'b111101000000?????000?????1010011; + localparam [31:0] FMV_W_X = 32'b111100000000?????000?????1010011; + localparam [31:0] FMV_X_AB = 32'b111001100000?????000?????1010011; + localparam [31:0] FMV_X_AH = 32'b111001000000?????000?????1010011; + localparam [31:0] FMV_X_B = 32'b111001100000?????000?????1010011; + localparam [31:0] FMV_X_D = 32'b111000100000?????000?????1010011; + localparam [31:0] FMV_X_H = 32'b111001000000?????000?????1010011; + localparam [31:0] FMV_X_W = 32'b111000000000?????000?????1010011; + localparam [31:0] FNMADD_AB = 32'b?????11??????????????????1001111; + localparam [31:0] FNMADD_AH = 32'b?????10??????????????????1001111; + localparam [31:0] FNMADD_B = 32'b?????11??????????????????1001111; + localparam [31:0] FNMADD_D = 32'b?????01??????????????????1001111; + localparam [31:0] FNMADD_H = 32'b?????10??????????????????1001111; + localparam [31:0] FNMADD_Q = 32'b?????11??????????????????1001111; + localparam [31:0] FNMADD_S = 32'b?????00??????????????????1001111; + localparam [31:0] FNMSUB_AB = 32'b?????11??????????????????1001011; + localparam [31:0] FNMSUB_AH = 32'b?????10??????????????????1001011; + localparam [31:0] FNMSUB_B = 32'b?????11??????????????????1001011; + localparam [31:0] FNMSUB_D = 32'b?????01??????????????????1001011; + localparam [31:0] FNMSUB_H = 32'b?????10??????????????????1001011; + localparam [31:0] FNMSUB_Q = 32'b?????11??????????????????1001011; + localparam [31:0] FNMSUB_S = 32'b?????00??????????????????1001011; + localparam [31:0] FREP_O = 32'b????????????????????????10001011; + localparam [31:0] FSAB = 32'b?????????????????000?????0100111; + localparam [31:0] FSAH = 32'b?????????????????001?????0100111; + localparam [31:0] FSB = 32'b?????????????????000?????0100111; + localparam [31:0] FSD = 32'b?????????????????011?????0100111; + localparam [31:0] FSGNJ_AB = 32'b0010011??????????000?????1010011; + localparam [31:0] FSGNJ_AH = 32'b0010010??????????000?????1010011; + localparam [31:0] FSGNJ_B = 32'b0010011??????????000?????1010011; + localparam [31:0] FSGNJ_D = 32'b0010001??????????000?????1010011; + localparam [31:0] FSGNJ_H = 32'b0010010??????????000?????1010011; + localparam [31:0] FSGNJ_Q = 32'b0010011??????????000?????1010011; + localparam [31:0] FSGNJ_S = 32'b0010000??????????000?????1010011; + localparam [31:0] FSGNJN_AB = 32'b0010011??????????001?????1010011; + localparam [31:0] FSGNJN_AH = 32'b0010010??????????001?????1010011; + localparam [31:0] FSGNJN_B = 32'b0010011??????????001?????1010011; + localparam [31:0] FSGNJN_D = 32'b0010001??????????001?????1010011; + localparam [31:0] FSGNJN_H = 32'b0010010??????????001?????1010011; + localparam [31:0] FSGNJN_Q = 32'b0010011??????????001?????1010011; + localparam [31:0] FSGNJN_S = 32'b0010000??????????001?????1010011; + localparam [31:0] FSGNJX_AB = 32'b0010011??????????010?????1010011; + localparam [31:0] FSGNJX_AH = 32'b0010010??????????010?????1010011; + localparam [31:0] FSGNJX_B = 32'b0010011??????????010?????1010011; + localparam [31:0] FSGNJX_D = 32'b0010001??????????010?????1010011; + localparam [31:0] FSGNJX_H = 32'b0010010??????????010?????1010011; + localparam [31:0] FSGNJX_Q = 32'b0010011??????????010?????1010011; + localparam [31:0] FSGNJX_S = 32'b0010000??????????010?????1010011; + localparam [31:0] FSH = 32'b?????????????????001?????0100111; + localparam [31:0] FSL = 32'b?????10??????????001?????0110011; + localparam [31:0] FSQ = 32'b?????????????????100?????0100111; + localparam [31:0] FSQRT_AB = 32'b010111100000?????????????1010011; + localparam [31:0] FSQRT_AH = 32'b010111000000?????????????1010011; + localparam [31:0] FSQRT_B = 32'b010111100000?????????????1010011; + localparam [31:0] FSQRT_D = 32'b010110100000?????????????1010011; + localparam [31:0] FSQRT_H = 32'b010111000000?????????????1010011; + localparam [31:0] FSQRT_Q = 32'b010111100000?????????????1010011; + localparam [31:0] FSQRT_S = 32'b010110000000?????????????1010011; + localparam [31:0] FSR = 32'b?????10??????????101?????0110011; + localparam [31:0] FSRI = 32'b?????1???????????101?????0010011; + localparam [31:0] FSUB_AB = 32'b0000111??????????????????1010011; + localparam [31:0] FSUB_AH = 32'b0000110??????????????????1010011; + localparam [31:0] FSUB_B = 32'b0000111??????????????????1010011; + localparam [31:0] FSUB_D = 32'b0000101??????????????????1010011; + localparam [31:0] FSUB_H = 32'b0000110??????????????????1010011; + localparam [31:0] FSUB_Q = 32'b0000111??????????????????1010011; + localparam [31:0] FSUB_S = 32'b0000100??????????????????1010011; + localparam [31:0] FSW = 32'b?????????????????010?????0100111; + localparam [31:0] GORC = 32'b0010100??????????101?????0110011; + localparam [31:0] GORCI = 32'b001010???????????101?????0010011; + localparam [31:0] GREV = 32'b0110100??????????101?????0110011; + localparam [31:0] GREVI = 32'b011010???????????101?????0010011; + localparam [31:0] HLV_D = 32'b011011000000?????100?????1110011; + localparam [31:0] HLV_WU = 32'b011010000001?????100?????1110011; + localparam [31:0] HSV_D = 32'b0110111??????????100000001110011; + localparam [31:0] IADD = 32'b0000000??????????000?????1011011; + localparam [31:0] IADDI = 32'b?????????????????000?????1111011; + localparam [31:0] IAND = 32'b0000000??????????111?????1011011; + localparam [31:0] IANDI = 32'b?????????????????111?????1111011; + localparam [31:0] IANDN = 32'b0100000??????????111?????1011011; + localparam [31:0] IBDEP = 32'b0100100??????????110?????1011011; + localparam [31:0] IBEXT = 32'b0000100??????????110?????1011011; + localparam [31:0] IBFP = 32'b0100100??????????111?????1011011; + localparam [31:0] ICLMUL = 32'b0000101??????????001?????1011011; + localparam [31:0] ICLMULH = 32'b0000101??????????011?????1011011; + localparam [31:0] ICLMULR = 32'b0000101??????????010?????1011011; + localparam [31:0] ICLZ = 32'b011000000000?????010?????1011011; + localparam [31:0] ICRC32_B = 32'b011000010000?????001?????1011011; + localparam [31:0] ICRC32_H = 32'b011000010001?????001?????1011011; + localparam [31:0] ICRC32_W = 32'b011000010010?????001?????1011011; + localparam [31:0] ICRC32C_B = 32'b011000011000?????001?????1011011; + localparam [31:0] ICRC32C_H = 32'b011000011001?????001?????1011011; + localparam [31:0] ICRC32C_W = 32'b011000011010?????001?????1011011; + localparam [31:0] ICTZ = 32'b011000000001?????010?????1011011; + localparam [31:0] IGORC = 32'b0010100??????????101?????1011011; + localparam [31:0] IGORCI = 32'b001010???????????101?????1111011; + localparam [31:0] IGREV = 32'b0110100??????????101?????1011011; + localparam [31:0] IGREVI = 32'b011010???????????101?????1111011; + localparam [31:0] IMADD = 32'b?????01??????????000?????1011011; + localparam [31:0] IMAX = 32'b0000101??????????101?????1011011; + localparam [31:0] IMAXU = 32'b0000101??????????111?????1011011; + localparam [31:0] IMIN = 32'b0000101??????????100?????1011011; + localparam [31:0] IMINU = 32'b0000101??????????110?????1011011; + localparam [31:0] IMSUB = 32'b?????01??????????001?????1011011; + localparam [31:0] IMUL = 32'b0000010??????????000?????1011011; + localparam [31:0] IMULH = 32'b0000010??????????001?????1011011; + localparam [31:0] IMULHSU = 32'b0000010??????????010?????1011011; + localparam [31:0] IMULHU = 32'b0000010??????????011?????1011011; + localparam [31:0] IMV_W_X = 32'b111100000000?????000?????1011011; + localparam [31:0] IMV_X_W = 32'b111000000000?????000?????1011011; + localparam [31:0] INMADD = 32'b?????01??????????011?????1011011; + localparam [31:0] INMSUB = 32'b?????01??????????010?????1011011; + localparam [31:0] IOR = 32'b0000000??????????110?????1011011; + localparam [31:0] IORI = 32'b?????????????????110?????1111011; + localparam [31:0] IORN = 32'b0100000??????????110?????1011011; + localparam [31:0] IPACK = 32'b0000100??????????100?????1011011; + localparam [31:0] IPACKH = 32'b0000100??????????111?????1011011; + localparam [31:0] IPACKU = 32'b0100100??????????100?????1011011; + localparam [31:0] IPCNT = 32'b011000000010?????010?????1011011; + localparam [31:0] IREP = 32'b?????????????????????????0111111; + localparam [31:0] IROL = 32'b0110000??????????001?????1011011; + localparam [31:0] IROR = 32'b0110000??????????101?????1011011; + localparam [31:0] IRORI = 32'b011000???????????101?????1111011; + localparam [31:0] ISBCLR = 32'b0100100??????????001?????1011011; + localparam [31:0] ISBCLRI = 32'b010010???????????001?????1111011; + localparam [31:0] ISBEXT = 32'b0100100??????????101?????1011011; + localparam [31:0] ISBEXTI = 32'b010010???????????101?????1111011; + localparam [31:0] ISBINV = 32'b0110100??????????001?????1011011; + localparam [31:0] ISBINVI = 32'b011010???????????001?????1111011; + localparam [31:0] ISBSET = 32'b0010100??????????001?????1011011; + localparam [31:0] ISBSETI = 32'b001010???????????001?????1111011; + localparam [31:0] ISEXT_B = 32'b011000000100?????010?????1011011; + localparam [31:0] ISEXT_H = 32'b011000000101?????010?????1011011; + localparam [31:0] ISH1ADD = 32'b0010000??????????010?????1011011; + localparam [31:0] ISH2ADD = 32'b0010000??????????100?????1011011; + localparam [31:0] ISH3ADD = 32'b0010000??????????110?????1011011; + localparam [31:0] ISHFL = 32'b0000100??????????001?????1011011; + localparam [31:0] ISHFLI = 32'b0000100??????????001?????1111011; + localparam [31:0] ISLL = 32'b0000000??????????001?????1011011; + localparam [31:0] ISLLI = 32'b000000???????????001?????1111011; + localparam [31:0] ISLO = 32'b0010000??????????001?????1011011; + localparam [31:0] ISLOI = 32'b001000???????????001?????1111011; + localparam [31:0] ISLT = 32'b0000000??????????010?????1011011; + localparam [31:0] ISLTI = 32'b?????????????????010?????1111011; + localparam [31:0] ISLTIU = 32'b?????????????????011?????1111011; + localparam [31:0] ISLTU = 32'b0000000??????????011?????1011011; + localparam [31:0] ISRA = 32'b0100000??????????101?????1011011; + localparam [31:0] ISRAI = 32'b010000???????????101?????1111011; + localparam [31:0] ISRL = 32'b0000000??????????101?????1011011; + localparam [31:0] ISRLI = 32'b000000???????????101?????1111011; + localparam [31:0] ISRO = 32'b0010000??????????101?????1011011; + localparam [31:0] ISROI = 32'b001000???????????101?????1111011; + localparam [31:0] ISUB = 32'b0100000??????????000?????1011011; + localparam [31:0] IUNSHFL = 32'b0000100??????????101?????1011011; + localparam [31:0] IUNSHFLI = 32'b0000100??????????101?????1111011; + localparam [31:0] IXNOR = 32'b0100000??????????100?????1011011; + localparam [31:0] IXOR = 32'b0000000??????????100?????1011011; + localparam [31:0] IXORI = 32'b?????????????????100?????1111011; + localparam [31:0] JAL = 32'b?????????????????????????1101111; + localparam [31:0] JALR = 32'b?????????????????000?????1100111; + localparam [31:0] LB = 32'b?????????????????000?????0000011; + localparam [31:0] LBU = 32'b?????????????????100?????0000011; + localparam [31:0] LD = 32'b?????????????????011?????0000011; + localparam [31:0] LH = 32'b?????????????????001?????0000011; + localparam [31:0] LHU = 32'b?????????????????101?????0000011; + localparam [31:0] LR_D = 32'b00010??00000?????011?????0101111; + localparam [31:0] LR_W = 32'b00010??00000?????010?????0101111; + localparam [31:0] LUI = 32'b?????????????????????????0110111; + localparam [31:0] LW = 32'b?????????????????010?????0000011; + localparam [31:0] LWU = 32'b?????????????????110?????0000011; + localparam [31:0] MAX = 32'b0000101??????????101?????0110011; + localparam [31:0] MAXU = 32'b0000101??????????111?????0110011; + localparam [31:0] MIN = 32'b0000101??????????100?????0110011; + localparam [31:0] MINU = 32'b0000101??????????110?????0110011; + localparam [31:0] MRET = 32'b00110000001000000000000001110011; + localparam [31:0] MUL = 32'b0000001??????????000?????0110011; + localparam [31:0] MULH = 32'b0000001??????????001?????0110011; + localparam [31:0] MULHSU = 32'b0000001??????????010?????0110011; + localparam [31:0] MULHU = 32'b0000001??????????011?????0110011; + localparam [31:0] MULW = 32'b0000001??????????000?????0111011; + localparam [31:0] OR = 32'b0000000??????????110?????0110011; + localparam [31:0] ORI = 32'b?????????????????110?????0010011; + localparam [31:0] ORN = 32'b0100000??????????110?????0110011; + localparam [31:0] P_ABS = 32'b000001000000?????000?????0110011; + localparam [31:0] P_ADDN = 32'b00???????????????010?????1011011; + localparam [31:0] P_ADDUN = 32'b10???????????????010?????1011011; + localparam [31:0] P_BCLR = 32'b11???????????????011?????0110011; + localparam [31:0] P_BCLRR = 32'b1000000??????????011?????0110011; + localparam [31:0] P_BEQIMM = 32'b?????????????????010?????1100011; + localparam [31:0] P_BNEIMM = 32'b?????????????????011?????1100011; + localparam [31:0] P_BSET = 32'b11???????????????100?????0110011; + localparam [31:0] P_BSETR = 32'b1000000??????????100?????0110011; + localparam [31:0] P_CLB = 32'b000100000000?????010?????0110011; + localparam [31:0] P_CLIP = 32'b0001010??????????001?????0110011; + localparam [31:0] P_CLIPR = 32'b0001010??????????101?????0110011; + localparam [31:0] P_CLIPU = 32'b0001010??????????010?????0110011; + localparam [31:0] P_CLIPUR = 32'b0001010??????????110?????0110011; + localparam [31:0] P_CNT = 32'b0001000??????????011?????0110011; + localparam [31:0] P_EXTBS = 32'b000100000000?????110?????0110011; + localparam [31:0] P_EXTBZ = 32'b000100000000?????111?????0110011; + localparam [31:0] P_EXTHS = 32'b000100000000?????100?????0110011; + localparam [31:0] P_EXTHZ = 32'b000100000000?????101?????0110011; + localparam [31:0] P_EXTRACT = 32'b11???????????????000?????0110011; + localparam [31:0] P_EXTRACTR = 32'b1000000??????????000?????0110011; + localparam [31:0] P_EXTRACTU = 32'b11???????????????001?????0110011; + localparam [31:0] P_EXTRACTUR = 32'b1000000??????????001?????0110011; + localparam [31:0] P_FF1 = 32'b000100000000?????000?????0110011; + localparam [31:0] P_FL1 = 32'b000100000000?????001?????0110011; + localparam [31:0] P_INSERT = 32'b11???????????????010?????0110011; + localparam [31:0] P_INSERTR = 32'b1000000??????????010?????0110011; + localparam [31:0] P_LB_IRPOST = 32'b?????????????????000?????0001011; + localparam [31:0] P_LB_RR = 32'b0000000??????????111?????0000011; + localparam [31:0] P_LB_RRPOST = 32'b0000000??????????111?????0001011; + localparam [31:0] P_LBU_IRPOST = 32'b?????????????????100?????0001011; + localparam [31:0] P_LBU_RR = 32'b0100000??????????111?????0000011; + localparam [31:0] P_LBU_RRPOST = 32'b0100000??????????111?????0001011; + localparam [31:0] P_LH_IRPOST = 32'b?????????????????001?????0001011; + localparam [31:0] P_LH_RR = 32'b0001000??????????111?????0000011; + localparam [31:0] P_LH_RRPOST = 32'b0001000??????????111?????0001011; + localparam [31:0] P_LHU_IRPOST = 32'b?????????????????101?????0001011; + localparam [31:0] P_LHU_RR = 32'b0101000??????????111?????0000011; + localparam [31:0] P_LHU_RRPOST = 32'b0101000??????????111?????0001011; + localparam [31:0] P_LW_IRPOST = 32'b?????????????????010?????0001011; + localparam [31:0] P_LW_RR = 32'b0010000??????????111?????0000011; + localparam [31:0] P_LW_RRPOST = 32'b0010000??????????111?????0001011; + localparam [31:0] P_MAC = 32'b0100001??????????000?????0110011; + localparam [31:0] P_MAX = 32'b0000010??????????110?????0110011; + localparam [31:0] P_MAXU = 32'b0000010??????????111?????0110011; + localparam [31:0] P_MIN = 32'b0000010??????????100?????0110011; + localparam [31:0] P_MINU = 32'b0000010??????????101?????0110011; + localparam [31:0] P_MSU = 32'b0100001??????????001?????0110011; + localparam [31:0] P_ROR = 32'b000010000000?????101?????0110011; + localparam [31:0] P_SB_IRPOST = 32'b?????????????????000?????0101011; + localparam [31:0] P_SB_RR = 32'b0000000??????????100?????0100011; + localparam [31:0] P_SB_RRPOST = 32'b0000000??????????100?????0101011; + localparam [31:0] P_SH_IRPOST = 32'b?????????????????001?????0101011; + localparam [31:0] P_SH_RR = 32'b0000000??????????101?????0100011; + localparam [31:0] P_SH_RRPOST = 32'b0000000??????????101?????0101011; + localparam [31:0] P_SLET = 32'b0000010??????????010?????0110011; + localparam [31:0] P_SLETU = 32'b0000010??????????011?????0110011; + localparam [31:0] P_SW_IRPOST = 32'b?????????????????010?????0101011; + localparam [31:0] P_SW_RR = 32'b0000000??????????110?????0100011; + localparam [31:0] P_SW_RRPOST = 32'b0000000??????????110?????0101011; + localparam [31:0] PACK = 32'b0000100??????????100?????0110011; + localparam [31:0] PACKH = 32'b0000100??????????111?????0110011; + localparam [31:0] PACKU = 32'b0100100??????????100?????0110011; + localparam [31:0] PCNT = 32'b011000000010?????001?????0010011; + localparam [31:0] PV_ABS_B = 32'b011100000000?????001?????1010111; + localparam [31:0] PV_ABS_H = 32'b011100000000?????000?????1010111; + localparam [31:0] PV_ADD_B = 32'b0000000??????????001?????1010111; + localparam [31:0] PV_ADD_H = 32'b0000000??????????000?????1010111; + localparam [31:0] PV_ADD_H_DIV2 = 32'b0111010??????????010?????1010111; + localparam [31:0] PV_ADD_H_DIV4 = 32'b0111010??????????100?????1010111; + localparam [31:0] PV_ADD_H_DIV8 = 32'b0111010??????????110?????1010111; + localparam [31:0] PV_ADD_SC_B = 32'b0000000??????????101?????1010111; + localparam [31:0] PV_ADD_SC_H = 32'b0000000??????????100?????1010111; + localparam [31:0] PV_ADD_SCI_B = 32'b000000???????????111?????1010111; + localparam [31:0] PV_ADD_SCI_H = 32'b000000???????????110?????1010111; + localparam [31:0] PV_AND_B = 32'b0110100??????????001?????1010111; + localparam [31:0] PV_AND_H = 32'b0110100??????????000?????1010111; + localparam [31:0] PV_AND_SC_B = 32'b0110100??????????101?????1010111; + localparam [31:0] PV_AND_SC_H = 32'b0110100??????????100?????1010111; + localparam [31:0] PV_AND_SCI_B = 32'b011010???????????111?????1010111; + localparam [31:0] PV_AND_SCI_H = 32'b011010???????????110?????1010111; + localparam [31:0] PV_AVG_B = 32'b0001000??????????001?????1010111; + localparam [31:0] PV_AVG_H = 32'b0001000??????????000?????1010111; + localparam [31:0] PV_AVG_SC_B = 32'b0001000??????????101?????1010111; + localparam [31:0] PV_AVG_SC_H = 32'b0001000??????????100?????1010111; + localparam [31:0] PV_AVG_SCI_B = 32'b000100???????????111?????1010111; + localparam [31:0] PV_AVG_SCI_H = 32'b000100???????????110?????1010111; + localparam [31:0] PV_AVGU_B = 32'b0001100??????????001?????1010111; + localparam [31:0] PV_AVGU_H = 32'b0001100??????????000?????1010111; + localparam [31:0] PV_AVGU_SC_B = 32'b0001100??????????101?????1010111; + localparam [31:0] PV_AVGU_SC_H = 32'b0001100??????????100?????1010111; + localparam [31:0] PV_AVGU_SCI_B = 32'b000110???????????111?????1010111; + localparam [31:0] PV_AVGU_SCI_H = 32'b000110???????????110?????1010111; + localparam [31:0] PV_CMPEQ_B = 32'b0000010??????????001?????1010111; + localparam [31:0] PV_CMPEQ_H = 32'b0000010??????????000?????1010111; + localparam [31:0] PV_CMPEQ_SC_B = 32'b0000010??????????101?????1010111; + localparam [31:0] PV_CMPEQ_SC_H = 32'b0000010??????????100?????1010111; + localparam [31:0] PV_CMPEQ_SCI_B = 32'b000001???????????111?????1010111; + localparam [31:0] PV_CMPEQ_SCI_H = 32'b000001???????????110?????1010111; + localparam [31:0] PV_CMPGE_B = 32'b0001110??????????001?????1010111; + localparam [31:0] PV_CMPGE_H = 32'b0001110??????????000?????1010111; + localparam [31:0] PV_CMPGE_SC_B = 32'b0001110??????????101?????1010111; + localparam [31:0] PV_CMPGE_SC_H = 32'b0001110??????????100?????1010111; + localparam [31:0] PV_CMPGE_SCI_B = 32'b000111???????????111?????1010111; + localparam [31:0] PV_CMPGE_SCI_H = 32'b000111???????????110?????1010111; + localparam [31:0] PV_CMPGEU_B = 32'b0011110??????????001?????1010111; + localparam [31:0] PV_CMPGEU_H = 32'b0011110??????????000?????1010111; + localparam [31:0] PV_CMPGEU_SC_B = 32'b0011110??????????101?????1010111; + localparam [31:0] PV_CMPGEU_SC_H = 32'b0011110??????????100?????1010111; + localparam [31:0] PV_CMPGEU_SCI_B = 32'b001111???????????111?????1010111; + localparam [31:0] PV_CMPGEU_SCI_H = 32'b001111???????????110?????1010111; + localparam [31:0] PV_CMPGT_B = 32'b0001010??????????001?????1010111; + localparam [31:0] PV_CMPGT_H = 32'b0001010??????????000?????1010111; + localparam [31:0] PV_CMPGT_SC_B = 32'b0001010??????????101?????1010111; + localparam [31:0] PV_CMPGT_SC_H = 32'b0001010??????????100?????1010111; + localparam [31:0] PV_CMPGT_SCI_B = 32'b000101???????????111?????1010111; + localparam [31:0] PV_CMPGT_SCI_H = 32'b000101???????????110?????1010111; + localparam [31:0] PV_CMPGTU_B = 32'b0011010??????????001?????1010111; + localparam [31:0] PV_CMPGTU_H = 32'b0011010??????????000?????1010111; + localparam [31:0] PV_CMPGTU_SC_B = 32'b0011010??????????101?????1010111; + localparam [31:0] PV_CMPGTU_SC_H = 32'b0011010??????????100?????1010111; + localparam [31:0] PV_CMPGTU_SCI_B = 32'b001101???????????111?????1010111; + localparam [31:0] PV_CMPGTU_SCI_H = 32'b001101???????????110?????1010111; + localparam [31:0] PV_CMPLE_B = 32'b0010110??????????001?????1010111; + localparam [31:0] PV_CMPLE_H = 32'b0010110??????????000?????1010111; + localparam [31:0] PV_CMPLE_SC_B = 32'b0010110??????????101?????1010111; + localparam [31:0] PV_CMPLE_SC_H = 32'b0010110??????????100?????1010111; + localparam [31:0] PV_CMPLE_SCI_B = 32'b001011???????????111?????1010111; + localparam [31:0] PV_CMPLE_SCI_H = 32'b001011???????????110?????1010111; + localparam [31:0] PV_CMPLEU_B = 32'b0100110??????????001?????1010111; + localparam [31:0] PV_CMPLEU_H = 32'b0100110??????????000?????1010111; + localparam [31:0] PV_CMPLEU_SC_B = 32'b0100110??????????101?????1010111; + localparam [31:0] PV_CMPLEU_SC_H = 32'b0100110??????????100?????1010111; + localparam [31:0] PV_CMPLEU_SCI_B = 32'b010011???????????111?????1010111; + localparam [31:0] PV_CMPLEU_SCI_H = 32'b010011???????????110?????1010111; + localparam [31:0] PV_CMPLT_B = 32'b0010010??????????001?????1010111; + localparam [31:0] PV_CMPLT_H = 32'b0010010??????????000?????1010111; + localparam [31:0] PV_CMPLT_SC_B = 32'b0010010??????????101?????1010111; + localparam [31:0] PV_CMPLT_SC_H = 32'b0010010??????????100?????1010111; + localparam [31:0] PV_CMPLT_SCI_B = 32'b001001???????????111?????1010111; + localparam [31:0] PV_CMPLT_SCI_H = 32'b001001???????????110?????1010111; + localparam [31:0] PV_CMPLTU_B = 32'b0100010??????????001?????1010111; + localparam [31:0] PV_CMPLTU_H = 32'b0100010??????????000?????1010111; + localparam [31:0] PV_CMPLTU_SC_B = 32'b0100010??????????101?????1010111; + localparam [31:0] PV_CMPLTU_SC_H = 32'b0100010??????????100?????1010111; + localparam [31:0] PV_CMPLTU_SCI_B = 32'b010001???????????111?????1010111; + localparam [31:0] PV_CMPLTU_SCI_H = 32'b010001???????????110?????1010111; + localparam [31:0] PV_CMPNE_B = 32'b0000110??????????001?????1010111; + localparam [31:0] PV_CMPNE_H = 32'b0000110??????????000?????1010111; + localparam [31:0] PV_CMPNE_SC_B = 32'b0000110??????????101?????1010111; + localparam [31:0] PV_CMPNE_SC_H = 32'b0000110??????????100?????1010111; + localparam [31:0] PV_CMPNE_SCI_B = 32'b000011???????????111?????1010111; + localparam [31:0] PV_CMPNE_SCI_H = 32'b000011???????????110?????1010111; + localparam [31:0] PV_DOTSP_B = 32'b1001100??????????001?????1010111; + localparam [31:0] PV_DOTSP_H = 32'b1001100??????????000?????1010111; + localparam [31:0] PV_DOTSP_SC_B = 32'b1001100??????????101?????1010111; + localparam [31:0] PV_DOTSP_SC_H = 32'b1001100??????????100?????1010111; + localparam [31:0] PV_DOTSP_SCI_B = 32'b100110???????????111?????1010111; + localparam [31:0] PV_DOTSP_SCI_H = 32'b100110???????????110?????1010111; + localparam [31:0] PV_DOTUP_B = 32'b1000000??????????001?????1010111; + localparam [31:0] PV_DOTUP_H = 32'b1000000??????????000?????1010111; + localparam [31:0] PV_DOTUP_SC_B = 32'b1000000??????????101?????1010111; + localparam [31:0] PV_DOTUP_SC_H = 32'b1000000??????????100?????1010111; + localparam [31:0] PV_DOTUP_SCI_B = 32'b100000???????????111?????1010111; + localparam [31:0] PV_DOTUP_SCI_H = 32'b100000???????????110?????1010111; + localparam [31:0] PV_DOTUSP_B = 32'b1000100??????????001?????1010111; + localparam [31:0] PV_DOTUSP_H = 32'b1000100??????????000?????1010111; + localparam [31:0] PV_DOTUSP_SC_B = 32'b1000100??????????101?????1010111; + localparam [31:0] PV_DOTUSP_SC_H = 32'b1000100??????????100?????1010111; + localparam [31:0] PV_DOTUSP_SCI_B = 32'b100010???????????111?????1010111; + localparam [31:0] PV_DOTUSP_SCI_H = 32'b100010???????????110?????1010111; + localparam [31:0] PV_EXTRACT_B = 32'b011110???????????111?????1010111; + localparam [31:0] PV_EXTRACT_H = 32'b011110???????????110?????1010111; + localparam [31:0] PV_EXTRACTU_B = 32'b100100???????????111?????1010111; + localparam [31:0] PV_EXTRACTU_H = 32'b100100???????????110?????1010111; + localparam [31:0] PV_INSERT_B = 32'b101100???????????111?????1010111; + localparam [31:0] PV_INSERT_H = 32'b101100???????????110?????1010111; + localparam [31:0] PV_MAX_B = 32'b0011000??????????001?????1010111; + localparam [31:0] PV_MAX_H = 32'b0011000??????????000?????1010111; + localparam [31:0] PV_MAX_SC_B = 32'b0011000??????????101?????1010111; + localparam [31:0] PV_MAX_SC_H = 32'b0011000??????????100?????1010111; + localparam [31:0] PV_MAX_SCI_B = 32'b001100???????????111?????1010111; + localparam [31:0] PV_MAX_SCI_H = 32'b001100???????????110?????1010111; + localparam [31:0] PV_MAXU_B = 32'b0011100??????????001?????1010111; + localparam [31:0] PV_MAXU_H = 32'b0011100??????????000?????1010111; + localparam [31:0] PV_MAXU_SC_B = 32'b0011100??????????101?????1010111; + localparam [31:0] PV_MAXU_SC_H = 32'b0011100??????????100?????1010111; + localparam [31:0] PV_MAXU_SCI_B = 32'b001110???????????111?????1010111; + localparam [31:0] PV_MAXU_SCI_H = 32'b001110???????????110?????1010111; + localparam [31:0] PV_MIN_B = 32'b0010000??????????001?????1010111; + localparam [31:0] PV_MIN_H = 32'b0010000??????????000?????1010111; + localparam [31:0] PV_MIN_SC_B = 32'b0010000??????????101?????1010111; + localparam [31:0] PV_MIN_SC_H = 32'b0010000??????????100?????1010111; + localparam [31:0] PV_MIN_SCI_B = 32'b001000???????????111?????1010111; + localparam [31:0] PV_MIN_SCI_H = 32'b001000???????????110?????1010111; + localparam [31:0] PV_MINU_B = 32'b0010100??????????001?????1010111; + localparam [31:0] PV_MINU_H = 32'b0010100??????????000?????1010111; + localparam [31:0] PV_MINU_SC_B = 32'b0010100??????????101?????1010111; + localparam [31:0] PV_MINU_SC_H = 32'b0010100??????????100?????1010111; + localparam [31:0] PV_MINU_SCI_B = 32'b001010???????????111?????1010111; + localparam [31:0] PV_MINU_SCI_H = 32'b001010???????????110?????1010111; + localparam [31:0] PV_OR_B = 32'b0101100??????????001?????1010111; + localparam [31:0] PV_OR_H = 32'b0101100??????????000?????1010111; + localparam [31:0] PV_OR_SC_B = 32'b0101100??????????101?????1010111; + localparam [31:0] PV_OR_SC_H = 32'b0101100??????????100?????1010111; + localparam [31:0] PV_OR_SCI_B = 32'b010110???????????111?????1010111; + localparam [31:0] PV_OR_SCI_H = 32'b010110???????????110?????1010111; + localparam [31:0] PV_PACK = 32'b1101000??????????000?????1010111; + localparam [31:0] PV_PACK_H = 32'b1101001??????????000?????1010111; + localparam [31:0] PV_PACKHI_B = 32'b1101100??????????001?????1010111; + localparam [31:0] PV_PACKLO_B = 32'b1110000??????????001?????1010111; + localparam [31:0] PV_SDOTSP_B = 32'b1011100??????????001?????1010111; + localparam [31:0] PV_SDOTSP_H = 32'b1011100??????????000?????1010111; + localparam [31:0] PV_SDOTSP_SC_B = 32'b1011100??????????101?????1010111; + localparam [31:0] PV_SDOTSP_SC_H = 32'b1011100??????????100?????1010111; + localparam [31:0] PV_SDOTSP_SCI_B = 32'b101110???????????111?????1010111; + localparam [31:0] PV_SDOTSP_SCI_H = 32'b101110???????????110?????1010111; + localparam [31:0] PV_SDOTUP_B = 32'b1010000??????????001?????1010111; + localparam [31:0] PV_SDOTUP_H = 32'b1010000??????????000?????1010111; + localparam [31:0] PV_SDOTUP_SC_B = 32'b1010000??????????101?????1010111; + localparam [31:0] PV_SDOTUP_SC_H = 32'b1010000??????????100?????1010111; + localparam [31:0] PV_SDOTUP_SCI_B = 32'b101000???????????111?????1010111; + localparam [31:0] PV_SDOTUP_SCI_H = 32'b101000???????????110?????1010111; + localparam [31:0] PV_SDOTUSP_B = 32'b1010100??????????001?????1010111; + localparam [31:0] PV_SDOTUSP_H = 32'b1010100??????????000?????1010111; + localparam [31:0] PV_SDOTUSP_SC_B = 32'b1010100??????????101?????1010111; + localparam [31:0] PV_SDOTUSP_SC_H = 32'b1010100??????????100?????1010111; + localparam [31:0] PV_SDOTUSP_SCI_B = 32'b101010???????????111?????1010111; + localparam [31:0] PV_SDOTUSP_SCI_H = 32'b101010???????????110?????1010111; + localparam [31:0] PV_SHUFFLE2_B = 32'b1100100??????????001?????1010111; + localparam [31:0] PV_SHUFFLE2_H = 32'b1100100??????????000?????1010111; + localparam [31:0] PV_SHUFFLE_B = 32'b1100000??????????001?????1010111; + localparam [31:0] PV_SHUFFLE_H = 32'b1100000??????????000?????1010111; + localparam [31:0] PV_SHUFFLE_SCI_H = 32'b110000???????????110?????1010111; + localparam [31:0] PV_SHUFFLEI0_SCI_B = 32'b110000???????????111?????1010111; + localparam [31:0] PV_SHUFFLEI1_SCI_B = 32'b111010???????????111?????1010111; + localparam [31:0] PV_SHUFFLEI2_SCI_B = 32'b111100???????????111?????1010111; + localparam [31:0] PV_SHUFFLEI3_SCI_B = 32'b111110???????????111?????1010111; + localparam [31:0] PV_SLL_B = 32'b0101000??????????001?????1010111; + localparam [31:0] PV_SLL_H = 32'b0101000??????????000?????1010111; + localparam [31:0] PV_SLL_SC_B = 32'b0101000??????????101?????1010111; + localparam [31:0] PV_SLL_SC_H = 32'b0101000??????????100?????1010111; + localparam [31:0] PV_SLL_SCI_B = 32'b010100???????????111?????1010111; + localparam [31:0] PV_SLL_SCI_H = 32'b010100???????????110?????1010111; + localparam [31:0] PV_SRA_B = 32'b0100100??????????001?????1010111; + localparam [31:0] PV_SRA_H = 32'b0100100??????????000?????1010111; + localparam [31:0] PV_SRA_SC_B = 32'b0100100??????????101?????1010111; + localparam [31:0] PV_SRA_SC_H = 32'b0100100??????????100?????1010111; + localparam [31:0] PV_SRA_SCI_B = 32'b010010???????????111?????1010111; + localparam [31:0] PV_SRA_SCI_H = 32'b010010???????????110?????1010111; + localparam [31:0] PV_SRL_B = 32'b0100000??????????001?????1010111; + localparam [31:0] PV_SRL_H = 32'b0100000??????????000?????1010111; + localparam [31:0] PV_SRL_SC_B = 32'b0100000??????????101?????1010111; + localparam [31:0] PV_SRL_SC_H = 32'b0100000??????????100?????1010111; + localparam [31:0] PV_SRL_SCI_B = 32'b010000???????????111?????1010111; + localparam [31:0] PV_SRL_SCI_H = 32'b010000???????????110?????1010111; + localparam [31:0] PV_SUB_B = 32'b0000100??????????001?????1010111; + localparam [31:0] PV_SUB_H = 32'b0000100??????????000?????1010111; + localparam [31:0] PV_SUB_H_DIV2 = 32'b0110010??????????010?????1010111; + localparam [31:0] PV_SUB_H_DIV4 = 32'b0110010??????????100?????1010111; + localparam [31:0] PV_SUB_H_DIV8 = 32'b0110010??????????110?????1010111; + localparam [31:0] PV_SUB_SC_B = 32'b0000100??????????101?????1010111; + localparam [31:0] PV_SUB_SC_H = 32'b0000100??????????100?????1010111; + localparam [31:0] PV_SUB_SCI_B = 32'b000010???????????111?????1010111; + localparam [31:0] PV_SUB_SCI_H = 32'b000010???????????110?????1010111; + localparam [31:0] PV_XOR_B = 32'b0110000??????????001?????1010111; + localparam [31:0] PV_XOR_H = 32'b0110000??????????000?????1010111; + localparam [31:0] PV_XOR_SC_B = 32'b0110000??????????101?????1010111; + localparam [31:0] PV_XOR_SC_H = 32'b0110000??????????100?????1010111; + localparam [31:0] PV_XOR_SCI_B = 32'b011000???????????111?????1010111; + localparam [31:0] PV_XOR_SCI_H = 32'b011000???????????110?????1010111; + localparam [31:0] REM = 32'b0000001??????????110?????0110011; + localparam [31:0] REMU = 32'b0000001??????????111?????0110011; + localparam [31:0] REMUW = 32'b0000001??????????111?????0111011; + localparam [31:0] REMW = 32'b0000001??????????110?????0111011; + localparam [31:0] ROL = 32'b0110000??????????001?????0110011; + localparam [31:0] ROR = 32'b0110000??????????101?????0110011; + localparam [31:0] RORI = 32'b011000???????????101?????0010011; + localparam [31:0] SB = 32'b?????????????????000?????0100011; + localparam [31:0] SBCLR = 32'b0100100??????????001?????0110011; + localparam [31:0] SBCLRI = 32'b010010???????????001?????0010011; + localparam [31:0] SBEXT = 32'b0100100??????????101?????0110011; + localparam [31:0] SBEXTI = 32'b010010???????????101?????0010011; + localparam [31:0] SBINV = 32'b0110100??????????001?????0110011; + localparam [31:0] SBINVI = 32'b011010???????????001?????0010011; + localparam [31:0] SBSET = 32'b0010100??????????001?????0110011; + localparam [31:0] SBSETI = 32'b001010???????????001?????0010011; + localparam [31:0] SC_D = 32'b00011????????????011?????0101111; + localparam [31:0] SC_W = 32'b00011????????????010?????0101111; + localparam [31:0] SCFGR = 32'b0000000?????00001001?????0101011; + localparam [31:0] SCFGRI = 32'b????????????00000001?????0101011; + localparam [31:0] SCFGW = 32'b0000000??????????010000010101011; + localparam [31:0] SCFGWI = 32'b?????????????????010000000101011; + localparam [31:0] SD = 32'b?????????????????011?????0100011; + localparam [31:0] SEXT_B = 32'b011000000100?????001?????0010011; + localparam [31:0] SEXT_H = 32'b011000000101?????001?????0010011; + localparam [31:0] SFENCE_VMA = 32'b0001001??????????000000001110011; + localparam [31:0] SH = 32'b?????????????????001?????0100011; + localparam [31:0] SH1ADD = 32'b0010000??????????010?????0110011; + localparam [31:0] SH2ADD = 32'b0010000??????????100?????0110011; + localparam [31:0] SH3ADD = 32'b0010000??????????110?????0110011; + localparam [31:0] SHFL = 32'b0000100??????????001?????0110011; + localparam [31:0] SHFLI = 32'b0000100??????????001?????0010011; + localparam [31:0] SLL = 32'b0000000??????????001?????0110011; + localparam [31:0] SLLI = 32'b000000???????????001?????0010011; + localparam [31:0] SLLIW = 32'b0000000??????????001?????0011011; + localparam [31:0] SLLW = 32'b0000000??????????001?????0111011; + localparam [31:0] SLO = 32'b0010000??????????001?????0110011; + localparam [31:0] SLOI = 32'b001000???????????001?????0010011; + localparam [31:0] SLT = 32'b0000000??????????010?????0110011; + localparam [31:0] SLTI = 32'b?????????????????010?????0010011; + localparam [31:0] SLTIU = 32'b?????????????????011?????0010011; + localparam [31:0] SLTU = 32'b0000000??????????011?????0110011; + localparam [31:0] SRA = 32'b0100000??????????101?????0110011; + localparam [31:0] SRAI = 32'b010000???????????101?????0010011; + localparam [31:0] SRAIW = 32'b0100000??????????101?????0011011; + localparam [31:0] SRAW = 32'b0100000??????????101?????0111011; + localparam [31:0] SRET = 32'b00010000001000000000000001110011; + localparam [31:0] SRL = 32'b0000000??????????101?????0110011; + localparam [31:0] SRLI = 32'b000000???????????101?????0010011; + localparam [31:0] SRLIW = 32'b0000000??????????101?????0011011; + localparam [31:0] SRLW = 32'b0000000??????????101?????0111011; + localparam [31:0] SRO = 32'b0010000??????????101?????0110011; + localparam [31:0] SROI = 32'b001000???????????101?????0010011; + localparam [31:0] SUB = 32'b0100000??????????000?????0110011; + localparam [31:0] SUBW = 32'b0100000??????????000?????0111011; + localparam [31:0] SW = 32'b?????????????????010?????0100011; + localparam [31:0] UNSHFL = 32'b0000100??????????101?????0110011; + localparam [31:0] UNSHFLI = 32'b0000100??????????101?????0010011; + localparam [31:0] VFADD_AB = 32'b1000001??????????011?????0110011; + localparam [31:0] VFADD_AH = 32'b1000001??????????010?????0110011; + localparam [31:0] VFADD_B = 32'b1000001??????????011?????0110011; + localparam [31:0] VFADD_H = 32'b1000001??????????010?????0110011; + localparam [31:0] VFADD_R_AB = 32'b1000001??????????111?????0110011; + localparam [31:0] VFADD_R_AH = 32'b1000001??????????110?????0110011; + localparam [31:0] VFADD_R_B = 32'b1000001??????????111?????0110011; + localparam [31:0] VFADD_R_H = 32'b1000001??????????110?????0110011; + localparam [31:0] VFADD_R_S = 32'b1000001??????????100?????0110011; + localparam [31:0] VFADD_S = 32'b1000001??????????000?????0110011; + localparam [31:0] VFCLASS_AB = 32'b100110000001?????011?????0110011; + localparam [31:0] VFCLASS_AH = 32'b100110000001?????010?????0110011; + localparam [31:0] VFCLASS_B = 32'b100110000001?????011?????0110011; + localparam [31:0] VFCLASS_H = 32'b100110000001?????010?????0110011; + localparam [31:0] VFCLASS_S = 32'b100110000001?????000?????0110011; + localparam [31:0] VFCPKA_AB_D = 32'b1011010??????????011?????0110011; + localparam [31:0] VFCPKA_AB_S = 32'b1011000??????????011?????0110011; + localparam [31:0] VFCPKA_AH_D = 32'b1011010??????????010?????0110011; + localparam [31:0] VFCPKA_AH_S = 32'b1011000??????????010?????0110011; + localparam [31:0] VFCPKA_B_D = 32'b1011010??????????011?????0110011; + localparam [31:0] VFCPKA_B_S = 32'b1011000??????????011?????0110011; + localparam [31:0] VFCPKA_H_D = 32'b1011010??????????010?????0110011; + localparam [31:0] VFCPKA_H_S = 32'b1011000??????????010?????0110011; + localparam [31:0] VFCPKA_S_D = 32'b1011010??????????000?????0110011; + localparam [31:0] VFCPKA_S_S = 32'b1011000??????????000?????0110011; + localparam [31:0] VFCPKB_AB_D = 32'b1011010??????????111?????0110011; + localparam [31:0] VFCPKB_AB_S = 32'b1011000??????????111?????0110011; + localparam [31:0] VFCPKB_AH_D = 32'b1011010??????????110?????0110011; + localparam [31:0] VFCPKB_AH_S = 32'b1011000??????????110?????0110011; + localparam [31:0] VFCPKB_B_D = 32'b1011010??????????111?????0110011; + localparam [31:0] VFCPKB_B_S = 32'b1011000??????????111?????0110011; + localparam [31:0] VFCPKB_H_D = 32'b1011010??????????110?????0110011; + localparam [31:0] VFCPKB_H_S = 32'b1011000??????????110?????0110011; + localparam [31:0] VFCPKB_S_D = 32'b1011010??????????100?????0110011; + localparam [31:0] VFCPKB_S_S = 32'b1011000??????????100?????0110011; + localparam [31:0] VFCPKC_AB_D = 32'b1011011??????????011?????0110011; + localparam [31:0] VFCPKC_AB_S = 32'b1011001??????????011?????0110011; + localparam [31:0] VFCPKC_AH_D = 32'b1011011??????????010?????0110011; + localparam [31:0] VFCPKC_AH_S = 32'b1011001??????????010?????0110011; + localparam [31:0] VFCPKC_B_D = 32'b1011011??????????011?????0110011; + localparam [31:0] VFCPKC_B_S = 32'b1011001??????????011?????0110011; + localparam [31:0] VFCPKC_H_D = 32'b1011011??????????010?????0110011; + localparam [31:0] VFCPKC_H_S = 32'b1011001??????????010?????0110011; + localparam [31:0] VFCPKC_S_D = 32'b1011011??????????000?????0110011; + localparam [31:0] VFCPKC_S_S = 32'b1011001??????????000?????0110011; + localparam [31:0] VFCPKD_AB_D = 32'b1011011??????????111?????0110011; + localparam [31:0] VFCPKD_AB_S = 32'b1011001??????????111?????0110011; + localparam [31:0] VFCPKD_AH_D = 32'b1011011??????????110?????0110011; + localparam [31:0] VFCPKD_AH_S = 32'b1011001??????????110?????0110011; + localparam [31:0] VFCPKD_B_D = 32'b1011011??????????111?????0110011; + localparam [31:0] VFCPKD_B_S = 32'b1011001??????????111?????0110011; + localparam [31:0] VFCPKD_H_D = 32'b1011011??????????110?????0110011; + localparam [31:0] VFCPKD_H_S = 32'b1011001??????????110?????0110011; + localparam [31:0] VFCPKD_S_D = 32'b1011011??????????100?????0110011; + localparam [31:0] VFCPKD_S_S = 32'b1011001??????????100?????0110011; + localparam [31:0] VFCVT_AB_AH = 32'b100110000110?????011?????0110011; + localparam [31:0] VFCVT_AB_B = 32'b100110000111?????011?????0110011; + localparam [31:0] VFCVT_AB_H = 32'b100110000110?????011?????0110011; + localparam [31:0] VFCVT_AB_S = 32'b100110000100?????011?????0110011; + localparam [31:0] VFCVT_AB_X = 32'b100110000011?????011?????0110011; + localparam [31:0] VFCVT_AB_XU = 32'b100110000011?????111?????0110011; + localparam [31:0] VFCVT_AH_AB = 32'b100110000111?????010?????0110011; + localparam [31:0] VFCVT_AH_B = 32'b100110000111?????010?????0110011; + localparam [31:0] VFCVT_AH_H = 32'b100110000101?????010?????0110011; + localparam [31:0] VFCVT_AH_S = 32'b100110000100?????010?????0110011; + localparam [31:0] VFCVT_AH_X = 32'b100110000011?????010?????0110011; + localparam [31:0] VFCVT_AH_XU = 32'b100110000011?????110?????0110011; + localparam [31:0] VFCVT_B_AB = 32'b100110000111?????011?????0110011; + localparam [31:0] VFCVT_B_AH = 32'b100110000110?????011?????0110011; + localparam [31:0] VFCVT_B_B = 32'b100110000111?????011?????0110011; + localparam [31:0] VFCVT_B_H = 32'b100110000110?????011?????0110011; + localparam [31:0] VFCVT_B_S = 32'b100110000100?????011?????0110011; + localparam [31:0] VFCVT_B_X = 32'b100110000011?????011?????0110011; + localparam [31:0] VFCVT_B_XU = 32'b100110000011?????111?????0110011; + localparam [31:0] VFCVT_D_S = 32'b100110000100?????001?????0110011; + localparam [31:0] VFCVT_H_AB = 32'b100110000111?????010?????0110011; + localparam [31:0] VFCVT_H_AH = 32'b100110000101?????010?????0110011; + localparam [31:0] VFCVT_H_B = 32'b100110000111?????010?????0110011; + localparam [31:0] VFCVT_H_H = 32'b100110000101?????010?????0110011; + localparam [31:0] VFCVT_H_S = 32'b100110000100?????010?????0110011; + localparam [31:0] VFCVT_H_X = 32'b100110000011?????010?????0110011; + localparam [31:0] VFCVT_H_XU = 32'b100110000011?????110?????0110011; + localparam [31:0] VFCVT_S_AB = 32'b100110000111?????000?????0110011; + localparam [31:0] VFCVT_S_AH = 32'b100110000110?????000?????0110011; + localparam [31:0] VFCVT_S_B = 32'b100110000111?????000?????0110011; + localparam [31:0] VFCVT_S_H = 32'b100110000110?????000?????0110011; + localparam [31:0] VFCVT_S_X = 32'b100110000011?????000?????0110011; + localparam [31:0] VFCVT_S_XU = 32'b100110000011?????100?????0110011; + localparam [31:0] VFCVT_X_AB = 32'b100110000010?????011?????0110011; + localparam [31:0] VFCVT_X_AH = 32'b100110000010?????010?????0110011; + localparam [31:0] VFCVT_X_B = 32'b100110000010?????011?????0110011; + localparam [31:0] VFCVT_X_H = 32'b100110000010?????010?????0110011; + localparam [31:0] VFCVT_X_S = 32'b100110000010?????000?????0110011; + localparam [31:0] VFCVT_XU_AB = 32'b100110000010?????111?????0110011; + localparam [31:0] VFCVT_XU_AH = 32'b100110000010?????110?????0110011; + localparam [31:0] VFCVT_XU_B = 32'b100110000010?????111?????0110011; + localparam [31:0] VFCVT_XU_H = 32'b100110000010?????110?????0110011; + localparam [31:0] VFCVT_XU_S = 32'b100110000010?????100?????0110011; + localparam [31:0] VFCVTU_AB_AH = 32'b100110000110?????111?????0110011; + localparam [31:0] VFCVTU_AB_B = 32'b100110000111?????111?????0110011; + localparam [31:0] VFCVTU_AB_H = 32'b100110000110?????111?????0110011; + localparam [31:0] VFCVTU_AB_S = 32'b100110000100?????111?????0110011; + localparam [31:0] VFCVTU_AH_AB = 32'b100110000111?????110?????0110011; + localparam [31:0] VFCVTU_AH_B = 32'b100110000111?????110?????0110011; + localparam [31:0] VFCVTU_AH_H = 32'b100110000101?????110?????0110011; + localparam [31:0] VFCVTU_AH_S = 32'b100110000100?????110?????0110011; + localparam [31:0] VFCVTU_B_AB = 32'b100110000111?????111?????0110011; + localparam [31:0] VFCVTU_B_AH = 32'b100110000110?????111?????0110011; + localparam [31:0] VFCVTU_B_B = 32'b100110000111?????111?????0110011; + localparam [31:0] VFCVTU_B_H = 32'b100110000110?????111?????0110011; + localparam [31:0] VFCVTU_B_S = 32'b100110000100?????111?????0110011; + localparam [31:0] VFCVTU_D_S = 32'b100110000100?????101?????0110011; + localparam [31:0] VFCVTU_H_AB = 32'b100110000111?????110?????0110011; + localparam [31:0] VFCVTU_H_AH = 32'b100110000101?????110?????0110011; + localparam [31:0] VFCVTU_H_B = 32'b100110000111?????110?????0110011; + localparam [31:0] VFCVTU_H_H = 32'b100110000101?????110?????0110011; + localparam [31:0] VFCVTU_H_S = 32'b100110000100?????110?????0110011; + localparam [31:0] VFCVTU_S_AB = 32'b100110000111?????100?????0110011; + localparam [31:0] VFCVTU_S_AH = 32'b100110000110?????100?????0110011; + localparam [31:0] VFCVTU_S_B = 32'b100110000111?????100?????0110011; + localparam [31:0] VFCVTU_S_H = 32'b100110000110?????100?????0110011; + localparam [31:0] VFDIV_AB = 32'b1000100??????????011?????0110011; + localparam [31:0] VFDIV_AH = 32'b1000100??????????010?????0110011; + localparam [31:0] VFDIV_B = 32'b1000100??????????011?????0110011; + localparam [31:0] VFDIV_H = 32'b1000100??????????010?????0110011; + localparam [31:0] VFDIV_R_AB = 32'b1000100??????????111?????0110011; + localparam [31:0] VFDIV_R_AH = 32'b1000100??????????110?????0110011; + localparam [31:0] VFDIV_R_B = 32'b1000100??????????111?????0110011; + localparam [31:0] VFDIV_R_H = 32'b1000100??????????110?????0110011; + localparam [31:0] VFDIV_R_S = 32'b1000100??????????100?????0110011; + localparam [31:0] VFDIV_S = 32'b1000100??????????000?????0110011; + localparam [31:0] VFDOTPEX_AH_AB = 32'b1001011??????????010?????0110011; + localparam [31:0] VFDOTPEX_AH_B = 32'b1001011??????????010?????0110011; + localparam [31:0] VFDOTPEX_AH_R_AB = 32'b1001011??????????110?????0110011; + localparam [31:0] VFDOTPEX_AH_R_B = 32'b1001011??????????110?????0110011; + localparam [31:0] VFDOTPEX_H_AB = 32'b1001011??????????010?????0110011; + localparam [31:0] VFDOTPEX_H_B = 32'b1001011??????????010?????0110011; + localparam [31:0] VFDOTPEX_H_R_AB = 32'b1001011??????????110?????0110011; + localparam [31:0] VFDOTPEX_H_R_B = 32'b1001011??????????110?????0110011; + localparam [31:0] VFDOTPEX_S_AH = 32'b1001011??????????000?????0110011; + localparam [31:0] VFDOTPEX_S_H = 32'b1001011??????????000?????0110011; + localparam [31:0] VFDOTPEX_S_R_AH = 32'b1001011??????????100?????0110011; + localparam [31:0] VFDOTPEX_S_R_H = 32'b1001011??????????100?????0110011; + localparam [31:0] VFEQ_AB = 32'b1010000??????????011?????0110011; + localparam [31:0] VFEQ_AH = 32'b1010000??????????010?????0110011; + localparam [31:0] VFEQ_B = 32'b1010000??????????011?????0110011; + localparam [31:0] VFEQ_H = 32'b1010000??????????010?????0110011; + localparam [31:0] VFEQ_R_AB = 32'b1010000??????????111?????0110011; + localparam [31:0] VFEQ_R_AH = 32'b1010000??????????110?????0110011; + localparam [31:0] VFEQ_R_B = 32'b1010000??????????111?????0110011; + localparam [31:0] VFEQ_R_H = 32'b1010000??????????110?????0110011; + localparam [31:0] VFEQ_R_S = 32'b1010000??????????100?????0110011; + localparam [31:0] VFEQ_S = 32'b1010000??????????000?????0110011; + localparam [31:0] VFGE_AB = 32'b1010011??????????011?????0110011; + localparam [31:0] VFGE_AH = 32'b1010011??????????010?????0110011; + localparam [31:0] VFGE_B = 32'b1010011??????????011?????0110011; + localparam [31:0] VFGE_H = 32'b1010011??????????010?????0110011; + localparam [31:0] VFGE_R_AB = 32'b1010011??????????111?????0110011; + localparam [31:0] VFGE_R_AH = 32'b1010011??????????110?????0110011; + localparam [31:0] VFGE_R_B = 32'b1010011??????????111?????0110011; + localparam [31:0] VFGE_R_H = 32'b1010011??????????110?????0110011; + localparam [31:0] VFGE_R_S = 32'b1010011??????????100?????0110011; + localparam [31:0] VFGE_S = 32'b1010011??????????000?????0110011; + localparam [31:0] VFGT_AB = 32'b1010101??????????011?????0110011; + localparam [31:0] VFGT_AH = 32'b1010101??????????010?????0110011; + localparam [31:0] VFGT_B = 32'b1010101??????????011?????0110011; + localparam [31:0] VFGT_H = 32'b1010101??????????010?????0110011; + localparam [31:0] VFGT_R_AB = 32'b1010101??????????111?????0110011; + localparam [31:0] VFGT_R_AH = 32'b1010101??????????110?????0110011; + localparam [31:0] VFGT_R_B = 32'b1010101??????????111?????0110011; + localparam [31:0] VFGT_R_H = 32'b1010101??????????110?????0110011; + localparam [31:0] VFGT_R_S = 32'b1010101??????????100?????0110011; + localparam [31:0] VFGT_S = 32'b1010101??????????000?????0110011; + localparam [31:0] VFLE_AB = 32'b1010100??????????011?????0110011; + localparam [31:0] VFLE_AH = 32'b1010100??????????010?????0110011; + localparam [31:0] VFLE_B = 32'b1010100??????????011?????0110011; + localparam [31:0] VFLE_H = 32'b1010100??????????010?????0110011; + localparam [31:0] VFLE_R_AB = 32'b1010100??????????111?????0110011; + localparam [31:0] VFLE_R_AH = 32'b1010100??????????110?????0110011; + localparam [31:0] VFLE_R_B = 32'b1010100??????????111?????0110011; + localparam [31:0] VFLE_R_H = 32'b1010100??????????110?????0110011; + localparam [31:0] VFLE_R_S = 32'b1010100??????????100?????0110011; + localparam [31:0] VFLE_S = 32'b1010100??????????000?????0110011; + localparam [31:0] VFLT_AB = 32'b1010010??????????011?????0110011; + localparam [31:0] VFLT_AH = 32'b1010010??????????010?????0110011; + localparam [31:0] VFLT_B = 32'b1010010??????????011?????0110011; + localparam [31:0] VFLT_H = 32'b1010010??????????010?????0110011; + localparam [31:0] VFLT_R_AB = 32'b1010010??????????111?????0110011; + localparam [31:0] VFLT_R_AH = 32'b1010010??????????110?????0110011; + localparam [31:0] VFLT_R_B = 32'b1010010??????????111?????0110011; + localparam [31:0] VFLT_R_H = 32'b1010010??????????110?????0110011; + localparam [31:0] VFLT_R_S = 32'b1010010??????????100?????0110011; + localparam [31:0] VFLT_S = 32'b1010010??????????000?????0110011; + localparam [31:0] VFMAC_AB = 32'b1001000??????????011?????0110011; + localparam [31:0] VFMAC_AH = 32'b1001000??????????010?????0110011; + localparam [31:0] VFMAC_B = 32'b1001000??????????011?????0110011; + localparam [31:0] VFMAC_H = 32'b1001000??????????010?????0110011; + localparam [31:0] VFMAC_R_AB = 32'b1001000??????????111?????0110011; + localparam [31:0] VFMAC_R_AH = 32'b1001000??????????110?????0110011; + localparam [31:0] VFMAC_R_B = 32'b1001000??????????111?????0110011; + localparam [31:0] VFMAC_R_H = 32'b1001000??????????110?????0110011; + localparam [31:0] VFMAC_R_S = 32'b1001000??????????100?????0110011; + localparam [31:0] VFMAC_S = 32'b1001000??????????000?????0110011; + localparam [31:0] VFMAX_AB = 32'b1000110??????????011?????0110011; + localparam [31:0] VFMAX_AH = 32'b1000110??????????010?????0110011; + localparam [31:0] VFMAX_B = 32'b1000110??????????011?????0110011; + localparam [31:0] VFMAX_H = 32'b1000110??????????010?????0110011; + localparam [31:0] VFMAX_R_AB = 32'b1000110??????????111?????0110011; + localparam [31:0] VFMAX_R_AH = 32'b1000110??????????110?????0110011; + localparam [31:0] VFMAX_R_B = 32'b1000110??????????111?????0110011; + localparam [31:0] VFMAX_R_H = 32'b1000110??????????110?????0110011; + localparam [31:0] VFMAX_R_S = 32'b1000110??????????100?????0110011; + localparam [31:0] VFMAX_S = 32'b1000110??????????000?????0110011; + localparam [31:0] VFMIN_AB = 32'b1000101??????????011?????0110011; + localparam [31:0] VFMIN_AH = 32'b1000101??????????010?????0110011; + localparam [31:0] VFMIN_B = 32'b1000101??????????011?????0110011; + localparam [31:0] VFMIN_H = 32'b1000101??????????010?????0110011; + localparam [31:0] VFMIN_R_AB = 32'b1000101??????????111?????0110011; + localparam [31:0] VFMIN_R_AH = 32'b1000101??????????110?????0110011; + localparam [31:0] VFMIN_R_B = 32'b1000101??????????111?????0110011; + localparam [31:0] VFMIN_R_H = 32'b1000101??????????110?????0110011; + localparam [31:0] VFMIN_R_S = 32'b1000101??????????100?????0110011; + localparam [31:0] VFMIN_S = 32'b1000101??????????000?????0110011; + localparam [31:0] VFMRE_AB = 32'b1001001??????????011?????0110011; + localparam [31:0] VFMRE_AH = 32'b1001001??????????010?????0110011; + localparam [31:0] VFMRE_B = 32'b1001001??????????011?????0110011; + localparam [31:0] VFMRE_H = 32'b1001001??????????010?????0110011; + localparam [31:0] VFMRE_R_AB = 32'b1001001??????????111?????0110011; + localparam [31:0] VFMRE_R_AH = 32'b1001001??????????110?????0110011; + localparam [31:0] VFMRE_R_B = 32'b1001001??????????111?????0110011; + localparam [31:0] VFMRE_R_H = 32'b1001001??????????110?????0110011; + localparam [31:0] VFMRE_R_S = 32'b1001001??????????100?????0110011; + localparam [31:0] VFMRE_S = 32'b1001001??????????000?????0110011; + localparam [31:0] VFMUL_AB = 32'b1000011??????????011?????0110011; + localparam [31:0] VFMUL_AH = 32'b1000011??????????010?????0110011; + localparam [31:0] VFMUL_B = 32'b1000011??????????011?????0110011; + localparam [31:0] VFMUL_H = 32'b1000011??????????010?????0110011; + localparam [31:0] VFMUL_R_AB = 32'b1000011??????????111?????0110011; + localparam [31:0] VFMUL_R_AH = 32'b1000011??????????110?????0110011; + localparam [31:0] VFMUL_R_B = 32'b1000011??????????111?????0110011; + localparam [31:0] VFMUL_R_H = 32'b1000011??????????110?????0110011; + localparam [31:0] VFMUL_R_S = 32'b1000011??????????100?????0110011; + localparam [31:0] VFMUL_S = 32'b1000011??????????000?????0110011; + localparam [31:0] VFMV_AB_X = 32'b100110000000?????111?????0110011; + localparam [31:0] VFMV_AH_X = 32'b100110000000?????110?????0110011; + localparam [31:0] VFMV_B_X = 32'b100110000000?????111?????0110011; + localparam [31:0] VFMV_H_X = 32'b100110000000?????110?????0110011; + localparam [31:0] VFMV_S_X = 32'b100110000000?????100?????0110011; + localparam [31:0] VFMV_X_AB = 32'b100110000000?????011?????0110011; + localparam [31:0] VFMV_X_AH = 32'b100110000000?????010?????0110011; + localparam [31:0] VFMV_X_B = 32'b100110000000?????011?????0110011; + localparam [31:0] VFMV_X_H = 32'b100110000000?????010?????0110011; + localparam [31:0] VFMV_X_S = 32'b100110000000?????000?????0110011; + localparam [31:0] VFNDOTPEX_AH_AB = 32'b1011101??????????010?????0110011; + localparam [31:0] VFNDOTPEX_AH_B = 32'b1011101??????????010?????0110011; + localparam [31:0] VFNDOTPEX_AH_R_AB = 32'b1011101??????????110?????0110011; + localparam [31:0] VFNDOTPEX_AH_R_B = 32'b1011101??????????110?????0110011; + localparam [31:0] VFNDOTPEX_H_AB = 32'b1011101??????????010?????0110011; + localparam [31:0] VFNDOTPEX_H_B = 32'b1011101??????????010?????0110011; + localparam [31:0] VFNDOTPEX_H_R_AB = 32'b1011101??????????110?????0110011; + localparam [31:0] VFNDOTPEX_H_R_B = 32'b1011101??????????110?????0110011; + localparam [31:0] VFNDOTPEX_S_AH = 32'b1011101??????????000?????0110011; + localparam [31:0] VFNDOTPEX_S_H = 32'b1011101??????????000?????0110011; + localparam [31:0] VFNDOTPEX_S_R_AH = 32'b1011101??????????100?????0110011; + localparam [31:0] VFNDOTPEX_S_R_H = 32'b1011101??????????100?????0110011; + localparam [31:0] VFNE_AB = 32'b1010001??????????011?????0110011; + localparam [31:0] VFNE_AH = 32'b1010001??????????010?????0110011; + localparam [31:0] VFNE_B = 32'b1010001??????????011?????0110011; + localparam [31:0] VFNE_H = 32'b1010001??????????010?????0110011; + localparam [31:0] VFNE_R_AB = 32'b1010001??????????111?????0110011; + localparam [31:0] VFNE_R_AH = 32'b1010001??????????110?????0110011; + localparam [31:0] VFNE_R_B = 32'b1010001??????????111?????0110011; + localparam [31:0] VFNE_R_H = 32'b1010001??????????110?????0110011; + localparam [31:0] VFNE_R_S = 32'b1010001??????????100?????0110011; + localparam [31:0] VFNE_S = 32'b1010001??????????000?????0110011; + localparam [31:0] VFNSUM_AB = 32'b101011100111?????011?????0110011; + localparam [31:0] VFNSUM_AH = 32'b101011111110?????010?????0110011; + localparam [31:0] VFNSUM_B = 32'b101011100111?????011?????0110011; + localparam [31:0] VFNSUM_H = 32'b101011111110?????010?????0110011; + localparam [31:0] VFNSUM_S = 32'b101011111100?????000?????0110011; + localparam [31:0] VFNSUMEX_AH_AB = 32'b101011110111?????010?????0110011; + localparam [31:0] VFNSUMEX_AH_B = 32'b101011110111?????010?????0110011; + localparam [31:0] VFNSUMEX_H_AB = 32'b101011110111?????010?????0110011; + localparam [31:0] VFNSUMEX_H_B = 32'b101011110111?????010?????0110011; + localparam [31:0] VFNSUMEX_S_AH = 32'b101011110110?????000?????0110011; + localparam [31:0] VFNSUMEX_S_H = 32'b101011110110?????000?????0110011; + localparam [31:0] VFSGNJ_AB = 32'b1001101??????????011?????0110011; + localparam [31:0] VFSGNJ_AH = 32'b1001101??????????010?????0110011; + localparam [31:0] VFSGNJ_B = 32'b1001101??????????011?????0110011; + localparam [31:0] VFSGNJ_H = 32'b1001101??????????010?????0110011; + localparam [31:0] VFSGNJ_R_AB = 32'b1001101??????????111?????0110011; + localparam [31:0] VFSGNJ_R_AH = 32'b1001101??????????110?????0110011; + localparam [31:0] VFSGNJ_R_B = 32'b1001101??????????111?????0110011; + localparam [31:0] VFSGNJ_R_H = 32'b1001101??????????110?????0110011; + localparam [31:0] VFSGNJ_R_S = 32'b1001101??????????100?????0110011; + localparam [31:0] VFSGNJ_S = 32'b1001101??????????000?????0110011; + localparam [31:0] VFSGNJN_AB = 32'b1001110??????????011?????0110011; + localparam [31:0] VFSGNJN_AH = 32'b1001110??????????010?????0110011; + localparam [31:0] VFSGNJN_B = 32'b1001110??????????011?????0110011; + localparam [31:0] VFSGNJN_H = 32'b1001110??????????010?????0110011; + localparam [31:0] VFSGNJN_R_AB = 32'b1001110??????????111?????0110011; + localparam [31:0] VFSGNJN_R_AH = 32'b1001110??????????110?????0110011; + localparam [31:0] VFSGNJN_R_B = 32'b1001110??????????111?????0110011; + localparam [31:0] VFSGNJN_R_H = 32'b1001110??????????110?????0110011; + localparam [31:0] VFSGNJN_R_S = 32'b1001110??????????100?????0110011; + localparam [31:0] VFSGNJN_S = 32'b1001110??????????000?????0110011; + localparam [31:0] VFSGNJX_AB = 32'b1001111??????????011?????0110011; + localparam [31:0] VFSGNJX_AH = 32'b1001111??????????010?????0110011; + localparam [31:0] VFSGNJX_B = 32'b1001111??????????011?????0110011; + localparam [31:0] VFSGNJX_H = 32'b1001111??????????010?????0110011; + localparam [31:0] VFSGNJX_R_AB = 32'b1001111??????????111?????0110011; + localparam [31:0] VFSGNJX_R_AH = 32'b1001111??????????110?????0110011; + localparam [31:0] VFSGNJX_R_B = 32'b1001111??????????111?????0110011; + localparam [31:0] VFSGNJX_R_H = 32'b1001111??????????110?????0110011; + localparam [31:0] VFSGNJX_R_S = 32'b1001111??????????100?????0110011; + localparam [31:0] VFSGNJX_S = 32'b1001111??????????000?????0110011; + localparam [31:0] VFSQRT_AB = 32'b100011100000?????011?????0110011; + localparam [31:0] VFSQRT_AH = 32'b100011100000?????010?????0110011; + localparam [31:0] VFSQRT_B = 32'b100011100000?????011?????0110011; + localparam [31:0] VFSQRT_H = 32'b100011100000?????010?????0110011; + localparam [31:0] VFSQRT_S = 32'b100011100000?????000?????0110011; + localparam [31:0] VFSUB_AB = 32'b1000010??????????011?????0110011; + localparam [31:0] VFSUB_AH = 32'b1000010??????????010?????0110011; + localparam [31:0] VFSUB_B = 32'b1000010??????????011?????0110011; + localparam [31:0] VFSUB_H = 32'b1000010??????????010?????0110011; + localparam [31:0] VFSUB_R_AB = 32'b1000010??????????111?????0110011; + localparam [31:0] VFSUB_R_AH = 32'b1000010??????????110?????0110011; + localparam [31:0] VFSUB_R_B = 32'b1000010??????????111?????0110011; + localparam [31:0] VFSUB_R_H = 32'b1000010??????????110?????0110011; + localparam [31:0] VFSUB_R_S = 32'b1000010??????????100?????0110011; + localparam [31:0] VFSUB_S = 32'b1000010??????????000?????0110011; + localparam [31:0] VFSUM_AB = 32'b100011100111?????011?????0110011; + localparam [31:0] VFSUM_AH = 32'b100011111110?????010?????0110011; + localparam [31:0] VFSUM_B = 32'b100011100111?????011?????0110011; + localparam [31:0] VFSUM_H = 32'b100011111110?????010?????0110011; + localparam [31:0] VFSUM_S = 32'b100011111100?????000?????0110011; + localparam [31:0] VFSUMEX_AH_AB = 32'b100011110111?????010?????0110011; + localparam [31:0] VFSUMEX_AH_B = 32'b100011110111?????010?????0110011; + localparam [31:0] VFSUMEX_H_AB = 32'b100011110111?????010?????0110011; + localparam [31:0] VFSUMEX_H_B = 32'b100011110111?????010?????0110011; + localparam [31:0] VFSUMEX_S_AH = 32'b100011110110?????000?????0110011; + localparam [31:0] VFSUMEX_S_H = 32'b100011110110?????000?????0110011; + localparam [31:0] WFI = 32'b00010000010100000000000001110011; + localparam [31:0] XNOR = 32'b0100000??????????100?????0110011; + localparam [31:0] XOR = 32'b0000000??????????100?????0110011; + localparam [31:0] XORI = 32'b?????????????????100?????0010011; /* CSR Addresses */ localparam logic [11:0] CSR_FFLAGS = 12'h1; localparam logic [11:0] CSR_FRM = 12'h2; localparam logic [11:0] CSR_FCSR = 12'h3; - localparam logic [11:0] CSR_USTATUS = 12'h0; - localparam logic [11:0] CSR_UIE = 12'h4; - localparam logic [11:0] CSR_UTVEC = 12'h5; localparam logic [11:0] CSR_VSTART = 12'h8; localparam logic [11:0] CSR_VXSAT = 12'h9; localparam logic [11:0] CSR_VXRM = 12'ha; localparam logic [11:0] CSR_VCSR = 12'hf; - localparam logic [11:0] CSR_USCRATCH = 12'h40; - localparam logic [11:0] CSR_UEPC = 12'h41; - localparam logic [11:0] CSR_UCAUSE = 12'h42; - localparam logic [11:0] CSR_UTVAL = 12'h43; - localparam logic [11:0] CSR_UIP = 12'h44; - localparam logic [11:0] CSR_FMODE = 12'h800; + localparam logic [11:0] CSR_SSP = 12'h11; + localparam logic [11:0] CSR_SEED = 12'h15; + localparam logic [11:0] CSR_JVT = 12'h17; localparam logic [11:0] CSR_CYCLE = 12'hc00; localparam logic [11:0] CSR_TIME = 12'hc01; localparam logic [11:0] CSR_INSTRET = 12'hc02; @@ -1247,17 +1177,36 @@ package riscv_instr; localparam logic [11:0] CSR_VTYPE = 12'hc21; localparam logic [11:0] CSR_VLENB = 12'hc22; localparam logic [11:0] CSR_SSTATUS = 12'h100; - localparam logic [11:0] CSR_SEDELEG = 12'h102; - localparam logic [11:0] CSR_SIDELEG = 12'h103; localparam logic [11:0] CSR_SIE = 12'h104; localparam logic [11:0] CSR_STVEC = 12'h105; localparam logic [11:0] CSR_SCOUNTEREN = 12'h106; + localparam logic [11:0] CSR_SENVCFG = 12'h10a; + localparam logic [11:0] CSR_SSTATEEN0 = 12'h10c; + localparam logic [11:0] CSR_SSTATEEN1 = 12'h10d; + localparam logic [11:0] CSR_SSTATEEN2 = 12'h10e; + localparam logic [11:0] CSR_SSTATEEN3 = 12'h10f; + localparam logic [11:0] CSR_SCOUNTINHIBIT = 12'h120; localparam logic [11:0] CSR_SSCRATCH = 12'h140; localparam logic [11:0] CSR_SEPC = 12'h141; localparam logic [11:0] CSR_SCAUSE = 12'h142; localparam logic [11:0] CSR_STVAL = 12'h143; localparam logic [11:0] CSR_SIP = 12'h144; + localparam logic [11:0] CSR_STIMECMP = 12'h14d; + localparam logic [11:0] CSR_SCTRCTL = 12'h14e; + localparam logic [11:0] CSR_SCTRSTATUS = 12'h14f; + localparam logic [11:0] CSR_SISELECT = 12'h150; + localparam logic [11:0] CSR_SIREG = 12'h151; + localparam logic [11:0] CSR_SIREG2 = 12'h152; + localparam logic [11:0] CSR_SIREG3 = 12'h153; + localparam logic [11:0] CSR_SIREG4 = 12'h155; + localparam logic [11:0] CSR_SIREG5 = 12'h156; + localparam logic [11:0] CSR_SIREG6 = 12'h157; + localparam logic [11:0] CSR_STOPEI = 12'h15c; + localparam logic [11:0] CSR_SCTRDEPTH = 12'h15f; localparam logic [11:0] CSR_SATP = 12'h180; + localparam logic [11:0] CSR_SRMCFG = 12'h181; + localparam logic [11:0] CSR_SPMPEN = 12'h183; + localparam logic [11:0] CSR_SCONTEXT = 12'h5a8; localparam logic [11:0] CSR_VSSTATUS = 12'h200; localparam logic [11:0] CSR_VSIE = 12'h204; localparam logic [11:0] CSR_VSTVEC = 12'h205; @@ -1266,6 +1215,16 @@ package riscv_instr; localparam logic [11:0] CSR_VSCAUSE = 12'h242; localparam logic [11:0] CSR_VSTVAL = 12'h243; localparam logic [11:0] CSR_VSIP = 12'h244; + localparam logic [11:0] CSR_VSTIMECMP = 12'h24d; + localparam logic [11:0] CSR_VSCTRCTL = 12'h24e; + localparam logic [11:0] CSR_VSISELECT = 12'h250; + localparam logic [11:0] CSR_VSIREG = 12'h251; + localparam logic [11:0] CSR_VSIREG2 = 12'h252; + localparam logic [11:0] CSR_VSIREG3 = 12'h253; + localparam logic [11:0] CSR_VSIREG4 = 12'h255; + localparam logic [11:0] CSR_VSIREG5 = 12'h256; + localparam logic [11:0] CSR_VSIREG6 = 12'h257; + localparam logic [11:0] CSR_VSTOPEI = 12'h25c; localparam logic [11:0] CSR_VSATP = 12'h280; localparam logic [11:0] CSR_HSTATUS = 12'h600; localparam logic [11:0] CSR_HEDELEG = 12'h602; @@ -1274,12 +1233,25 @@ package riscv_instr; localparam logic [11:0] CSR_HTIMEDELTA = 12'h605; localparam logic [11:0] CSR_HCOUNTEREN = 12'h606; localparam logic [11:0] CSR_HGEIE = 12'h607; + localparam logic [11:0] CSR_HVIEN = 12'h608; + localparam logic [11:0] CSR_HVICTL = 12'h609; + localparam logic [11:0] CSR_HENVCFG = 12'h60a; + localparam logic [11:0] CSR_HSTATEEN0 = 12'h60c; + localparam logic [11:0] CSR_HSTATEEN1 = 12'h60d; + localparam logic [11:0] CSR_HSTATEEN2 = 12'h60e; + localparam logic [11:0] CSR_HSTATEEN3 = 12'h60f; localparam logic [11:0] CSR_HTVAL = 12'h643; localparam logic [11:0] CSR_HIP = 12'h644; localparam logic [11:0] CSR_HVIP = 12'h645; + localparam logic [11:0] CSR_HVIPRIO1 = 12'h646; + localparam logic [11:0] CSR_HVIPRIO2 = 12'h647; localparam logic [11:0] CSR_HTINST = 12'h64a; localparam logic [11:0] CSR_HGATP = 12'h680; + localparam logic [11:0] CSR_HCONTEXT = 12'h6a8; localparam logic [11:0] CSR_HGEIP = 12'he12; + localparam logic [11:0] CSR_VSTOPI = 12'heb0; + localparam logic [11:0] CSR_SCOUNTOVF = 12'hda0; + localparam logic [11:0] CSR_STOPI = 12'hdb0; localparam logic [11:0] CSR_UTVT = 12'h7; localparam logic [11:0] CSR_UNXTI = 12'h45; localparam logic [11:0] CSR_UINTSTATUS = 12'h46; @@ -1291,6 +1263,7 @@ package riscv_instr; localparam logic [11:0] CSR_SSCRATCHCSW = 12'h148; localparam logic [11:0] CSR_SSCRATCHCSWL = 12'h149; localparam logic [11:0] CSR_MTVT = 12'h307; + localparam logic [11:0] CSR_MPMPDELEG = 12'h316; localparam logic [11:0] CSR_MNXTI = 12'h345; localparam logic [11:0] CSR_MINTSTATUS = 12'h346; localparam logic [11:0] CSR_MSCRATCHCSW = 12'h348; @@ -1302,6 +1275,13 @@ package riscv_instr; localparam logic [11:0] CSR_MIE = 12'h304; localparam logic [11:0] CSR_MTVEC = 12'h305; localparam logic [11:0] CSR_MCOUNTEREN = 12'h306; + localparam logic [11:0] CSR_MVIEN = 12'h308; + localparam logic [11:0] CSR_MVIP = 12'h309; + localparam logic [11:0] CSR_MENVCFG = 12'h30a; + localparam logic [11:0] CSR_MSTATEEN0 = 12'h30c; + localparam logic [11:0] CSR_MSTATEEN1 = 12'h30d; + localparam logic [11:0] CSR_MSTATEEN2 = 12'h30e; + localparam logic [11:0] CSR_MSTATEEN3 = 12'h30f; localparam logic [11:0] CSR_MCOUNTINHIBIT = 12'h320; localparam logic [11:0] CSR_MSCRATCH = 12'h340; localparam logic [11:0] CSR_MEPC = 12'h341; @@ -1310,10 +1290,31 @@ package riscv_instr; localparam logic [11:0] CSR_MIP = 12'h344; localparam logic [11:0] CSR_MTINST = 12'h34a; localparam logic [11:0] CSR_MTVAL2 = 12'h34b; + localparam logic [11:0] CSR_MCTRCTL = 12'h34e; + localparam logic [11:0] CSR_MISELECT = 12'h350; + localparam logic [11:0] CSR_MIREG = 12'h351; + localparam logic [11:0] CSR_MIREG2 = 12'h352; + localparam logic [11:0] CSR_MIREG3 = 12'h353; + localparam logic [11:0] CSR_MIREG4 = 12'h355; + localparam logic [11:0] CSR_MIREG5 = 12'h356; + localparam logic [11:0] CSR_MIREG6 = 12'h357; + localparam logic [11:0] CSR_MTOPEI = 12'h35c; localparam logic [11:0] CSR_PMPCFG0 = 12'h3a0; localparam logic [11:0] CSR_PMPCFG1 = 12'h3a1; localparam logic [11:0] CSR_PMPCFG2 = 12'h3a2; localparam logic [11:0] CSR_PMPCFG3 = 12'h3a3; + localparam logic [11:0] CSR_PMPCFG4 = 12'h3a4; + localparam logic [11:0] CSR_PMPCFG5 = 12'h3a5; + localparam logic [11:0] CSR_PMPCFG6 = 12'h3a6; + localparam logic [11:0] CSR_PMPCFG7 = 12'h3a7; + localparam logic [11:0] CSR_PMPCFG8 = 12'h3a8; + localparam logic [11:0] CSR_PMPCFG9 = 12'h3a9; + localparam logic [11:0] CSR_PMPCFG10 = 12'h3aa; + localparam logic [11:0] CSR_PMPCFG11 = 12'h3ab; + localparam logic [11:0] CSR_PMPCFG12 = 12'h3ac; + localparam logic [11:0] CSR_PMPCFG13 = 12'h3ad; + localparam logic [11:0] CSR_PMPCFG14 = 12'h3ae; + localparam logic [11:0] CSR_PMPCFG15 = 12'h3af; localparam logic [11:0] CSR_PMPADDR0 = 12'h3b0; localparam logic [11:0] CSR_PMPADDR1 = 12'h3b1; localparam logic [11:0] CSR_PMPADDR2 = 12'h3b2; @@ -1330,14 +1331,77 @@ package riscv_instr; localparam logic [11:0] CSR_PMPADDR13 = 12'h3bd; localparam logic [11:0] CSR_PMPADDR14 = 12'h3be; localparam logic [11:0] CSR_PMPADDR15 = 12'h3bf; + localparam logic [11:0] CSR_PMPADDR16 = 12'h3c0; + localparam logic [11:0] CSR_PMPADDR17 = 12'h3c1; + localparam logic [11:0] CSR_PMPADDR18 = 12'h3c2; + localparam logic [11:0] CSR_PMPADDR19 = 12'h3c3; + localparam logic [11:0] CSR_PMPADDR20 = 12'h3c4; + localparam logic [11:0] CSR_PMPADDR21 = 12'h3c5; + localparam logic [11:0] CSR_PMPADDR22 = 12'h3c6; + localparam logic [11:0] CSR_PMPADDR23 = 12'h3c7; + localparam logic [11:0] CSR_PMPADDR24 = 12'h3c8; + localparam logic [11:0] CSR_PMPADDR25 = 12'h3c9; + localparam logic [11:0] CSR_PMPADDR26 = 12'h3ca; + localparam logic [11:0] CSR_PMPADDR27 = 12'h3cb; + localparam logic [11:0] CSR_PMPADDR28 = 12'h3cc; + localparam logic [11:0] CSR_PMPADDR29 = 12'h3cd; + localparam logic [11:0] CSR_PMPADDR30 = 12'h3ce; + localparam logic [11:0] CSR_PMPADDR31 = 12'h3cf; + localparam logic [11:0] CSR_PMPADDR32 = 12'h3d0; + localparam logic [11:0] CSR_PMPADDR33 = 12'h3d1; + localparam logic [11:0] CSR_PMPADDR34 = 12'h3d2; + localparam logic [11:0] CSR_PMPADDR35 = 12'h3d3; + localparam logic [11:0] CSR_PMPADDR36 = 12'h3d4; + localparam logic [11:0] CSR_PMPADDR37 = 12'h3d5; + localparam logic [11:0] CSR_PMPADDR38 = 12'h3d6; + localparam logic [11:0] CSR_PMPADDR39 = 12'h3d7; + localparam logic [11:0] CSR_PMPADDR40 = 12'h3d8; + localparam logic [11:0] CSR_PMPADDR41 = 12'h3d9; + localparam logic [11:0] CSR_PMPADDR42 = 12'h3da; + localparam logic [11:0] CSR_PMPADDR43 = 12'h3db; + localparam logic [11:0] CSR_PMPADDR44 = 12'h3dc; + localparam logic [11:0] CSR_PMPADDR45 = 12'h3dd; + localparam logic [11:0] CSR_PMPADDR46 = 12'h3de; + localparam logic [11:0] CSR_PMPADDR47 = 12'h3df; + localparam logic [11:0] CSR_PMPADDR48 = 12'h3e0; + localparam logic [11:0] CSR_PMPADDR49 = 12'h3e1; + localparam logic [11:0] CSR_PMPADDR50 = 12'h3e2; + localparam logic [11:0] CSR_PMPADDR51 = 12'h3e3; + localparam logic [11:0] CSR_PMPADDR52 = 12'h3e4; + localparam logic [11:0] CSR_PMPADDR53 = 12'h3e5; + localparam logic [11:0] CSR_PMPADDR54 = 12'h3e6; + localparam logic [11:0] CSR_PMPADDR55 = 12'h3e7; + localparam logic [11:0] CSR_PMPADDR56 = 12'h3e8; + localparam logic [11:0] CSR_PMPADDR57 = 12'h3e9; + localparam logic [11:0] CSR_PMPADDR58 = 12'h3ea; + localparam logic [11:0] CSR_PMPADDR59 = 12'h3eb; + localparam logic [11:0] CSR_PMPADDR60 = 12'h3ec; + localparam logic [11:0] CSR_PMPADDR61 = 12'h3ed; + localparam logic [11:0] CSR_PMPADDR62 = 12'h3ee; + localparam logic [11:0] CSR_PMPADDR63 = 12'h3ef; + localparam logic [11:0] CSR_MSECCFG = 12'h747; localparam logic [11:0] CSR_TSELECT = 12'h7a0; localparam logic [11:0] CSR_TDATA1 = 12'h7a1; localparam logic [11:0] CSR_TDATA2 = 12'h7a2; localparam logic [11:0] CSR_TDATA3 = 12'h7a3; + localparam logic [11:0] CSR_TINFO = 12'h7a4; + localparam logic [11:0] CSR_TCONTROL = 12'h7a5; + localparam logic [11:0] CSR_MCONTEXT = 12'h7a8; + localparam logic [11:0] CSR_MSCONTEXT = 12'h7aa; localparam logic [11:0] CSR_DCSR = 12'h7b0; localparam logic [11:0] CSR_DPC = 12'h7b1; localparam logic [11:0] CSR_DSCRATCH0 = 12'h7b2; localparam logic [11:0] CSR_DSCRATCH1 = 12'h7b3; + localparam logic [11:0] CSR_SSR = 12'h7c0; + localparam logic [11:0] CSR_FPMODE = 12'h7c1; + localparam logic [11:0] CSR_BARRIER = 12'h7c2; + localparam logic [11:0] CSR_SC = 12'h7c3; + localparam logic [11:0] CSR_USER_LOW = 12'h7c4; + localparam logic [11:0] CSR_USER_HIGH = 12'h7c5; + localparam logic [11:0] CSR_COPIFT = 12'h7c6; + localparam logic [11:0] CSR_DUMP = 12'h7c7; + localparam logic [11:0] CSR_STACKLIMIT = 12'h7d1; + localparam logic [11:0] CSR_FMODE = 12'h800; localparam logic [11:0] CSR_MCYCLE = 12'hb00; localparam logic [11:0] CSR_MINSTRET = 12'hb02; localparam logic [11:0] CSR_MHPMCOUNTER3 = 12'hb03; @@ -1369,6 +1433,8 @@ package riscv_instr; localparam logic [11:0] CSR_MHPMCOUNTER29 = 12'hb1d; localparam logic [11:0] CSR_MHPMCOUNTER30 = 12'hb1e; localparam logic [11:0] CSR_MHPMCOUNTER31 = 12'hb1f; + localparam logic [11:0] CSR_MCYCLECFG = 12'h321; + localparam logic [11:0] CSR_MINSTRETCFG = 12'h322; localparam logic [11:0] CSR_MHPMEVENT3 = 12'h323; localparam logic [11:0] CSR_MHPMEVENT4 = 12'h324; localparam logic [11:0] CSR_MHPMEVENT5 = 12'h325; @@ -1398,21 +1464,32 @@ package riscv_instr; localparam logic [11:0] CSR_MHPMEVENT29 = 12'h33d; localparam logic [11:0] CSR_MHPMEVENT30 = 12'h33e; localparam logic [11:0] CSR_MHPMEVENT31 = 12'h33f; - localparam logic [11:0] CSR_TRACE = 12'h7d0; - localparam logic [11:0] CSR_STACKLIMIT = 12'h7d1; localparam logic [11:0] CSR_MVENDORID = 12'hf11; localparam logic [11:0] CSR_MARCHID = 12'hf12; localparam logic [11:0] CSR_MIMPID = 12'hf13; localparam logic [11:0] CSR_MHARTID = 12'hf14; - localparam logic [11:0] CSR_SSR = 12'h7c0; - localparam logic [11:0] CSR_FPMODE = 12'h7c1; - localparam logic [11:0] CSR_BARRIER = 12'h7c2; - localparam logic [11:0] CSR_SC = 12'h7c3; - localparam logic [11:0] CSR_USER_LOW = 12'h7c4; - localparam logic [11:0] CSR_USER_HIGH = 12'h7c5; - localparam logic [11:0] CSR_COPIFT = 12'h7c6; - localparam logic [11:0] CSR_DUMP = 12'h7c7; + localparam logic [11:0] CSR_MCONFIGPTR = 12'hf15; + localparam logic [11:0] CSR_MTOPI = 12'hfb0; + localparam logic [11:0] CSR_SIEH = 12'h114; + localparam logic [11:0] CSR_SIPH = 12'h154; + localparam logic [11:0] CSR_STIMECMPH = 12'h15d; + localparam logic [11:0] CSR_SPMPENH = 12'h193; + localparam logic [11:0] CSR_VSIEH = 12'h214; + localparam logic [11:0] CSR_VSIPH = 12'h254; + localparam logic [11:0] CSR_VSTIMECMPH = 12'h25d; + localparam logic [11:0] CSR_MEDELEGH = 12'h312; + localparam logic [11:0] CSR_HEDELEGH = 12'h612; localparam logic [11:0] CSR_HTIMEDELTAH = 12'h615; + localparam logic [11:0] CSR_HIDELEGH = 12'h613; + localparam logic [11:0] CSR_HVIENH = 12'h618; + localparam logic [11:0] CSR_HENVCFGH = 12'h61a; + localparam logic [11:0] CSR_HVIPH = 12'h655; + localparam logic [11:0] CSR_HVIPRIO1H = 12'h656; + localparam logic [11:0] CSR_HVIPRIO2H = 12'h657; + localparam logic [11:0] CSR_HSTATEEN0H = 12'h61c; + localparam logic [11:0] CSR_HSTATEEN1H = 12'h61d; + localparam logic [11:0] CSR_HSTATEEN2H = 12'h61e; + localparam logic [11:0] CSR_HSTATEEN3H = 12'h61f; localparam logic [11:0] CSR_CYCLEH = 12'hc80; localparam logic [11:0] CSR_TIMEH = 12'hc81; localparam logic [11:0] CSR_INSTRETH = 12'hc82; @@ -1446,6 +1523,52 @@ package riscv_instr; localparam logic [11:0] CSR_HPMCOUNTER30H = 12'hc9e; localparam logic [11:0] CSR_HPMCOUNTER31H = 12'hc9f; localparam logic [11:0] CSR_MSTATUSH = 12'h310; + localparam logic [11:0] CSR_MIDELEGH = 12'h313; + localparam logic [11:0] CSR_MIEH = 12'h314; + localparam logic [11:0] CSR_MVIENH = 12'h318; + localparam logic [11:0] CSR_MVIPH = 12'h319; + localparam logic [11:0] CSR_MENVCFGH = 12'h31a; + localparam logic [11:0] CSR_MSTATEEN0H = 12'h31c; + localparam logic [11:0] CSR_MSTATEEN1H = 12'h31d; + localparam logic [11:0] CSR_MSTATEEN2H = 12'h31e; + localparam logic [11:0] CSR_MSTATEEN3H = 12'h31f; + localparam logic [11:0] CSR_MIPH = 12'h354; + localparam logic [11:0] CSR_MCYCLECFGH = 12'h721; + localparam logic [11:0] CSR_MINSTRETCFGH = 12'h722; + localparam logic [11:0] CSR_MHPMEVENT3H = 12'h723; + localparam logic [11:0] CSR_MHPMEVENT4H = 12'h724; + localparam logic [11:0] CSR_MHPMEVENT5H = 12'h725; + localparam logic [11:0] CSR_MHPMEVENT6H = 12'h726; + localparam logic [11:0] CSR_MHPMEVENT7H = 12'h727; + localparam logic [11:0] CSR_MHPMEVENT8H = 12'h728; + localparam logic [11:0] CSR_MHPMEVENT9H = 12'h729; + localparam logic [11:0] CSR_MHPMEVENT10H = 12'h72a; + localparam logic [11:0] CSR_MHPMEVENT11H = 12'h72b; + localparam logic [11:0] CSR_MHPMEVENT12H = 12'h72c; + localparam logic [11:0] CSR_MHPMEVENT13H = 12'h72d; + localparam logic [11:0] CSR_MHPMEVENT14H = 12'h72e; + localparam logic [11:0] CSR_MHPMEVENT15H = 12'h72f; + localparam logic [11:0] CSR_MHPMEVENT16H = 12'h730; + localparam logic [11:0] CSR_MHPMEVENT17H = 12'h731; + localparam logic [11:0] CSR_MHPMEVENT18H = 12'h732; + localparam logic [11:0] CSR_MHPMEVENT19H = 12'h733; + localparam logic [11:0] CSR_MHPMEVENT20H = 12'h734; + localparam logic [11:0] CSR_MHPMEVENT21H = 12'h735; + localparam logic [11:0] CSR_MHPMEVENT22H = 12'h736; + localparam logic [11:0] CSR_MHPMEVENT23H = 12'h737; + localparam logic [11:0] CSR_MHPMEVENT24H = 12'h738; + localparam logic [11:0] CSR_MHPMEVENT25H = 12'h739; + localparam logic [11:0] CSR_MHPMEVENT26H = 12'h73a; + localparam logic [11:0] CSR_MHPMEVENT27H = 12'h73b; + localparam logic [11:0] CSR_MHPMEVENT28H = 12'h73c; + localparam logic [11:0] CSR_MHPMEVENT29H = 12'h73d; + localparam logic [11:0] CSR_MHPMEVENT30H = 12'h73e; + localparam logic [11:0] CSR_MHPMEVENT31H = 12'h73f; + localparam logic [11:0] CSR_MNSCRATCH = 12'h740; + localparam logic [11:0] CSR_MNEPC = 12'h741; + localparam logic [11:0] CSR_MNCAUSE = 12'h742; + localparam logic [11:0] CSR_MNSTATUS = 12'h744; + localparam logic [11:0] CSR_MSECCFGH = 12'h757; localparam logic [11:0] CSR_MCYCLEH = 12'hb80; localparam logic [11:0] CSR_MINSTRETH = 12'hb82; localparam logic [11:0] CSR_MHPMCOUNTER3H = 12'hb83; @@ -1477,5 +1600,6 @@ package riscv_instr; localparam logic [11:0] CSR_MHPMCOUNTER29H = 12'hb9d; localparam logic [11:0] CSR_MHPMCOUNTER30H = 12'hb9e; localparam logic [11:0] CSR_MHPMCOUNTER31H = 12'hb9f; + endpackage // verilog_lint: waive-stop parameter-name-style diff --git a/hw/snitch/src/snitch.sv b/hw/snitch/src/snitch.sv index 23f5f42cd0..bbeb66a013 100644 --- a/hw/snitch/src/snitch.sv +++ b/hw/snitch/src/snitch.sv @@ -195,7 +195,12 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( // Number of read ports localparam int unsigned NumRfReadPorts = EnableXif | Xpulppostmod ? 3 : 2; - logic illegal_inst, illegal_csr; + logic illegal_csr; + // Non-native instruction, unsupported by Snitch and ACC coprocessors, but possibly + // supported by CV-X-IF coprocessors. + logic unsupported_inst; + // Illegal instruction, unsupported by Snitch, ACC and CV-X-IF coprocessors. + logic illegal_inst; logic interrupt, ecall, ebreak; logic zero_lsb; @@ -638,6 +643,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( assign rs3 = inst_rsp_i.data[27 + RegWidth - 1:27]; always_comb begin + unsupported_inst = 1'b0; illegal_inst = 1'b0; ecall = 1'b0; ebreak = 1'b0; @@ -1184,7 +1190,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_EXTHS, // Xpulpv2: p.exths @@ -1198,7 +1204,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Immediate branching @@ -1212,7 +1218,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = PBImmediate; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_BNEIMM: begin // Xpulpv2: p.bneimm @@ -1225,7 +1231,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = PBImmediate; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_CLIP, // Xpulpv2: p.clip @@ -1237,7 +1243,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_CLIPR, // Xpulpv2: p.clipr @@ -1250,7 +1256,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // 3 source registers (rs1, rs2, rd) @@ -1266,7 +1272,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // 2 source registers (rs1, rs2) @@ -1283,7 +1289,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // 2 source registers (rs1, rs2) @@ -1298,7 +1304,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Off-load to IPU coprocessor @@ -1350,7 +1356,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // 2 source registers (rs1, rs2) @@ -1431,7 +1437,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // 2 source registers (rs1, rd) @@ -1451,7 +1457,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // 3 source registers (rs1, rs2, rd) @@ -1476,7 +1482,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Offload FP-FP Instructions - fire and forget @@ -1501,7 +1507,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Vectors @@ -1535,7 +1541,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFSUM_S, @@ -1544,7 +1550,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Double Precision Floating-Point @@ -1566,7 +1572,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_S_D, @@ -1575,7 +1581,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // [Alt] Half Precision Floating-Point @@ -1602,7 +1608,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FMACEX_S_H, @@ -1611,7 +1617,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_S_H: begin @@ -1622,7 +1628,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_H_S: begin @@ -1633,7 +1639,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_D_H: begin @@ -1644,7 +1650,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_H_D: begin @@ -1655,7 +1661,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // FCVT_H_H: begin @@ -1664,7 +1670,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( // write_rd = 1'b0; // is_acc_inst = 1'b1; // end else begin - // illegal_inst = 1'b1; + // unsupported_inst = 1'b1; // end // end @@ -1702,10 +1708,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFSUM_H, @@ -1716,10 +1722,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCVT_D_S, @@ -1729,10 +1735,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCPKA_H_S, @@ -1747,10 +1753,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCVT_S_H, @@ -1763,10 +1769,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCPKA_H_D, @@ -1779,10 +1785,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCVT_H_H, @@ -1792,10 +1798,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFDOTPEX_S_H, @@ -1810,10 +1816,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // [Alternate] Quarter Precision Floating-Point @@ -1838,7 +1844,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FMACEX_S_B, @@ -1847,7 +1853,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_S_B: begin @@ -1858,7 +1864,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_B_S: begin @@ -1869,7 +1875,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_D_B: begin @@ -1880,7 +1886,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_B_D: begin @@ -1891,7 +1897,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_H_B: begin @@ -1903,13 +1909,13 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_B_H: begin @@ -1921,13 +1927,13 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Vectorized [Alternate] Quarter Precision Floating-Point @@ -1959,7 +1965,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFSUM_B, @@ -1970,10 +1976,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCVT_B_S, @@ -1990,10 +1996,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCVT_S_B, @@ -2006,10 +2012,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCPKA_B_D, @@ -2024,10 +2030,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCVT_B_H, @@ -2040,13 +2046,13 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCVT_H_B, @@ -2059,13 +2065,13 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFCVT_B_B, @@ -2075,10 +2081,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end VFDOTPEX_H_B, @@ -2095,13 +2101,13 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Offload FP-Int Instructions - fire and forget @@ -2118,7 +2124,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; acc_register_rd = 1'b1; // No RS in GPR but RD in GPR, register in int scoreboard end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Single Precision Floating-Point @@ -2135,7 +2141,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; acc_register_rd = 1'b1; // No RS in GPR but RD in GPR, register in int scoreboard end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Vectors @@ -2158,7 +2164,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; acc_register_rd = 1'b1; // No RS in GPR but RD in GPR, register in int scoreboard end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // [Alternate] Half Precision Floating-Point @@ -2180,7 +2186,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; acc_register_rd = 1'b1; // No RS in GPR but RD in GPR, register in int scoreboard end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Vectors @@ -2209,7 +2215,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; acc_register_rd = 1'b1; // No RS in GPR but RD in GPR, register in int scoreboard end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end end @@ -2228,7 +2234,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; acc_register_rd = 1'b1; // No RS in GPR but RD in GPR, register in int scoreboard end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end end @@ -2251,7 +2257,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; acc_register_rd = 1'b1; // No RS in GPR but RD in GPR, register in int scoreboard end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Vectors @@ -2279,7 +2285,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; acc_register_rd = 1'b1; // No RS in GPR but RD in GPR, register in int scoreboard end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end end @@ -2299,7 +2305,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; acc_register_rd = 1'b1; // No RS in GPR but RD in GPR, register in int scoreboard end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end end @@ -2312,7 +2318,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Single Precision Floating-Point @@ -2324,7 +2330,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // [Alternate] Half Precision Floating-Point @@ -2340,7 +2346,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Vectors @@ -2355,7 +2361,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end end @@ -2372,7 +2378,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Vectors @@ -2387,7 +2393,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end end @@ -2498,7 +2504,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = RegRs2; end default: begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end endcase end else begin @@ -2507,7 +2513,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end end @@ -2519,7 +2525,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opa_select = RegRs1; opb_select = RegRs2; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_LBU_RR: begin // p.lbu @@ -2529,7 +2535,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opa_select = RegRs1; opb_select = RegRs2; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_LH_RR: begin // p.lh @@ -2541,7 +2547,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opa_select = RegRs1; opb_select = RegRs2; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_LHU_RR: begin // p.lhu @@ -2552,7 +2558,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opa_select = RegRs1; opb_select = RegRs2; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_LW_RR: begin // p.lw @@ -2564,7 +2570,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opa_select = RegRs1; opb_select = RegRs2; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // opb is usually assigned with the content of rs2; in stores with reg-reg @@ -2581,7 +2587,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = RegRd; // rd offset opc_select = RegRs2; // rs2 source data end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_SH_RRPOST: begin // p.sh @@ -2595,7 +2601,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = RegRd; opc_select = RegRs2; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_SW_RRPOST: begin // p.sw @@ -2609,7 +2615,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = RegRd; opc_select = RegRs2; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_SB_RR: begin // p.sb rs2,rs3(rs1) @@ -2620,7 +2626,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = RegRd; opc_select = RegRs2; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_SH_RR: begin // p.sh @@ -2632,7 +2638,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = RegRd; opc_select = RegRs2; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end P_SW_RR: begin // p.sw @@ -2644,7 +2650,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = RegRd; opc_select = RegRs2; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Floating-Point Load/Store @@ -2658,7 +2664,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( ls_size = Word; is_fp_load = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FSW: begin @@ -2670,7 +2676,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( ls_size = Word; is_fp_store = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Double Precision Floating-Point @@ -2683,7 +2689,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( ls_size = Double; is_fp_load = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FSD: begin @@ -2695,7 +2701,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( ls_size = Double; is_fp_store = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Half Precision Floating-Point @@ -2708,7 +2714,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( ls_size = HalfWord; is_fp_load = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FSH: begin @@ -2720,7 +2726,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( ls_size = HalfWord; is_fp_store = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // Quarter Precision Floating-Point @@ -2733,7 +2739,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( ls_size = Byte; is_fp_load = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FSB: begin @@ -2745,7 +2751,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( ls_size = Byte; is_fp_store = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end // DMA instructions @@ -2782,7 +2788,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; write_rd = 1'b0; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end DMCPYI: begin @@ -2794,7 +2800,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( uses_rd = 1'b1; acc_register_rd = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end DMCPY: begin @@ -2807,7 +2813,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( uses_rd = 1'b1; acc_register_rd = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end DMSTATI: begin @@ -2818,7 +2824,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( uses_rd = 1'b1; acc_register_rd = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end DMSTAT: begin @@ -2830,7 +2836,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( uses_rd = 1'b1; acc_register_rd = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end DMREP: begin @@ -2840,7 +2846,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; write_rd = 1'b0; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end FCVT_D_W_COPIFT, @@ -2849,11 +2855,11 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( write_rd = 1'b0; is_acc_inst = 1'b1; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end default: begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end endcase end @@ -2885,7 +2891,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( is_acc_inst = 1'b1; acc_register_rd = 1'b1; // No RS in GPR but RD in GPR, register in int scoreboard end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end SCFGR: begin @@ -2896,10 +2902,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = RegRs2; is_acc_inst = 1'b1; acc_register_rd = 1'b1; - end else illegal_inst = 1'b1; + end else unsupported_inst = 1'b1; end default: begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end endcase end @@ -2925,7 +2931,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opa_select = RegRs1; is_acc_inst = 1'b1; write_rd = 1'b0; - end else illegal_inst = 1'b1; + end else unsupported_inst = 1'b1; end SCFGW: begin if (Xssr) begin @@ -2934,10 +2940,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( opb_select = RegRs2; is_acc_inst = 1'b1; write_rd = 1'b0; - end else illegal_inst = 1'b1; + end else unsupported_inst = 1'b1; end default: begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end endcase end @@ -2955,51 +2961,58 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( acc_register_rd = 1'b1; acc_req_o.q.addr = IPU; end else begin - illegal_inst = 1'b1; + unsupported_inst = 1'b1; end end + default: begin + unsupported_inst = 1'b1; + end + endcase - default: begin // Offload the instruction to the coprocessor - if (EnableXif) begin - write_rd = x_issue_ready_i & x_issue_valid_o & x_issue_resp_i.writeback; - - opa_select = RegRs1; - opb_select = RegRs2; - opc_select = RegRs3; - - x_issue_req_o.instr = inst_rsp_i.data; - x_issue_req_o.id = xif_offload_counter_q; - x_issue_req_o.hartid = hart_id_i; - - x_register_o.hartid = hart_id_i; - x_register_o.id = xif_offload_counter_q; - x_register_o.rs = {opc, opb, opa}; - x_register_o.rs_valid = {~sb_q[rs3], ~sb_q[rs2], ~sb_q[rs1]}; - - x_commit_o.hartid = hart_id_i; - x_commit_o.id = xif_offload_counter_q; - // We do not speculate so the commit_kill signal can be set statically to zero - x_commit_o.commit_kill = 1'b0; - - // Since we cannot know whether a source register will be used or not by the processor, - // here we do not use valid_instr as in the other instructions - x_issue_valid_o = inst_rsp_i.q_ready - & inst_req_o.q_valid - & ((itlb_valid & itlb_ready) | ~trans_active); - - // Same as x_issue_valid since reigsters are provided instantly - x_register_valid_o = x_issue_valid_o; - - // Assert x_commit_valid as soon as there's a valid issue handshake - x_commit_valid_o = x_issue_valid_o & x_issue_ready_i; + // If the CV-X-IF interface is enabled, we try offloading unsupported instructions to the + // CV-X-IF coprocessors. Otherwise, unsupported instructions are illegal instructions. + if (unsupported_inst) begin + if (EnableXif) begin + write_rd = x_issue_ready_i & x_issue_valid_o & x_issue_resp_i.writeback; - // Flag the instruction as illegal if not accepted by the coprocessor - illegal_inst = x_issue_ready_i & x_issue_valid_o & ~x_issue_resp_i.accept; - end else begin - illegal_inst = 1'b1; - end + opa_select = RegRs1; + opb_select = RegRs2; + opc_select = RegRs3; + + x_issue_req_o.instr = inst_rsp_i.data; + x_issue_req_o.id = xif_offload_counter_q; + x_issue_req_o.hartid = hart_id_i; + + x_register_o.hartid = hart_id_i; + x_register_o.id = xif_offload_counter_q; + x_register_o.rs = {opc, opb, opa}; + x_register_o.rs_valid = {~sb_q[rs3], ~sb_q[rs2], ~sb_q[rs1]}; + + x_commit_o.hartid = hart_id_i; + x_commit_o.id = xif_offload_counter_q; + // We do not speculate so the commit_kill signal can be set statically to zero + x_commit_o.commit_kill = 1'b0; + + // Since we cannot know whether a source register will be used or not by the processor, + // here we do not use valid_instr as in the other instructions + x_issue_valid_o = inst_rsp_i.q_ready + & inst_req_o.q_valid + & ((itlb_valid & itlb_ready) | ~trans_active); + + // Same as x_issue_valid since registers are provided instantly + x_register_valid_o = x_issue_valid_o; + + // Assert x_commit_valid as soon as there's a valid issue handshake + x_commit_valid_o = x_issue_valid_o & x_issue_ready_i; + + // Unsupported instructions that are not accepted by any coprocessor are flagged as + // illegal. We currently assume that the coprocessor will accept the instruction in the + // same cycle as the issue handshake. + illegal_inst = x_issue_ready_i & x_issue_valid_o & ~x_issue_resp_i.accept; + end else begin + illegal_inst = 1'b1; end - endcase + end // Sanitize illegal instructions so that they don't exert any side-effects. if (exception) begin diff --git a/hw/snitch_fp_ss/src/snitch_sequencer.sv b/hw/snitch_fp_ss/src/snitch_sequencer.sv index 21e51591df..836905fdbb 100644 --- a/hw/snitch_fp_ss/src/snitch_sequencer.sv +++ b/hw/snitch_fp_ss/src/snitch_sequencer.sv @@ -445,7 +445,7 @@ module snitch_sequencer import snitch_pkg::*; #( if (core_frep_valid && core_frep_ready) begin nest_cfg_d[loop_cnt_d].is_streamctl = inp_qdata_op_i[31]; - nest_cfg_d[loop_cnt_d].max_inst = inp_qdata_op_i[20+:DepthBits]; + nest_cfg_d[loop_cnt_d].max_inst = inp_qdata_op_i[20+:DepthBits] - 1; nest_cfg_d[loop_cnt_d].stagger_max = inp_qdata_op_i[14:12]; nest_cfg_d[loop_cnt_d].stagger_mask = inp_qdata_op_i[11:8]; nest_cfg_d[loop_cnt_d].max_iter = inp_qdata_arga_i[LoopIterBits-1:0]; @@ -717,7 +717,7 @@ module snitch_sequencer import snitch_pkg::*; #( // pragma translate_off assign trace_port_o.source = snitch_pkg::SrcFpuSeq; assign trace_port_o.cbuf_push = core_frep_valid && core_frep_ready; - assign trace_port_o.max_inst = inp_qdata_op_i[20+:DepthBits]; + assign trace_port_o.max_inst = inp_qdata_op_i[20+:DepthBits] - 1; assign trace_port_o.max_iter = inp_qdata_arga_i[LoopIterBits-1:0]; assign trace_port_o.stg_max = inp_qdata_op_i[14:12]; assign trace_port_o.stg_mask = inp_qdata_op_i[11:8]; diff --git a/iis-setup.sh b/iis-setup.sh index dd7221fc4b..bce7b13c34 100755 --- a/iis-setup.sh +++ b/iis-setup.sh @@ -12,7 +12,7 @@ export SN_VCS_SEPP=vcs-2024.09 export SN_VERILATOR_SEPP=$SN_OSEDA export SN_QUESTA_SEPP=questa-2023.4 export SN_YOSYS="$SN_OSEDA yosys" -export SN_LLVM_BINROOT=/usr/scratch2/vulcano/colluca/tools/riscv32-snitch-llvm-almalinux8-15.0.0-snitch-0.5.0/bin +export SN_LLVM_BINROOT=/usr/scratch2/vulcano/colluca/workspace/REPOS/LLVM_PROJECT/install/bin/ # We need Make >4.3 for grouped targets export PATH=$PWD/util/bin:$PATH diff --git a/make/common.mk b/make/common.mk index df935fa867..7a13362ea2 100644 --- a/make/common.mk +++ b/make/common.mk @@ -24,8 +24,6 @@ SN_BENDER ?= bender SN_PEAKRDL ?= peakrdl SN_VERIBLE_FMT ?= verible-verilog-format SN_CLANG_FORMAT ?= $(SN_LLVM_BINROOT)/clang-format -SN_RISCV_MC ?= $(SN_LLVM_BINROOT)/llvm-mc -SN_ADDR2LINE ?= $(SN_LLVM_BINROOT)/llvm-addr2line # tail is required for nonsense oseda output SN_VERILATOR_SEPP ?= SN_VLT_BIN = $(shell $(SN_VERILATOR_SEPP) which verilator_bin | tail -n1 | $(SN_VERILATOR_SEPP) xargs realpath | tail -n1) @@ -57,10 +55,6 @@ SN_BENDER_YML = $(SN_ROOT)/Bender.yml # Flags SN_COMMON_BENDER_FLAGS += -t rtl -t snitch_cluster SN_COMMON_BENDER_SIM_FLAGS += -t simulation -t test -SN_MCPU ?= snitch -SN_RISCV_MC_FLAGS ?= -disassemble -SN_RISCV_MC_FLAGS += -mcpu=$(SN_MCPU) -SN_ANNOTATE_FLAGS ?= -q --keep-time --addr2line=$(SN_ADDR2LINE) SN_LAYOUT_EVENTS_FLAGS ?= --cfg=$(SN_CFG) # Internal state diff --git a/make/traces.mk b/make/traces.mk index 514d5fc071..dfb2fe2df6 100644 --- a/make/traces.mk +++ b/make/traces.mk @@ -4,10 +4,6 @@ # # Luca Colagrande -########## -# Traces # -########## - # Reads the binary from the logs/.rtlbinary file that is written at start # of simulation in the vsim script SN_BINARY ?= $(shell cat $(SN_SIM_DIR)/.rtlbinary) @@ -22,7 +18,9 @@ SN_JOINT_PERF_DUMP = $(SN_LOGS_DIR)/perf.json SN_ROI_DUMP = $(SN_LOGS_DIR)/roi.json SN_VISUAL_TRACE = $(SN_LOGS_DIR)/trace.json -SN_VISUALIZE_PY_FLAGS += --tracevis "$(SN_BINARY) $(SN_TXT_TRACES) --addr2line $(SN_ADDR2LINE) -f snitch" +SN_RISCV_MC_FLAGS ?= -disassemble $(SN_RISCV_MATTR_FLAG) +SN_ANNOTATE_FLAGS ?= -q --keep-time --addr2line=$(SN_RISCV_ADDR2LINE) +SN_VISUALIZE_PY_FLAGS += --tracevis "$(SN_BINARY) $(SN_TXT_TRACES) --addr2line $(SN_RISCV_ADDR2LINE) -f snitch" SN_GENTRACE_PY_FLAGS += --mc-exec $(SN_RISCV_MC) --mc-flags "$(SN_RISCV_MC_FLAGS)" # Do not suspend trace generation upon gentrace errors when debugging diff --git a/pyproject.toml b/pyproject.toml index a2de6959b2..ae428b0205 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,6 +38,7 @@ dependencies = [ "pytest", "pyyaml", "reuse", + "riscv-opcodes", "tabulate", "termcolor", "yamllint", @@ -67,6 +68,7 @@ nonfree = [ ] [tool.uv.sources] +riscv-opcodes = { path = "sw/deps/riscv-opcodes", editable = true } torch = [ { index = "pytorch-cpu" }, ] diff --git a/sw/deps/riscv-opcodes b/sw/deps/riscv-opcodes index ab6d886ac3..839f26d2d1 160000 --- a/sw/deps/riscv-opcodes +++ b/sw/deps/riscv-opcodes @@ -1 +1 @@ -Subproject commit ab6d886ac3f8d4447cb11a79d696c085fae76651 +Subproject commit 839f26d2d1fccf5c4e69aeafc0798367ccd83b0a diff --git a/sw/kernels/blas/gemm/src/gemm_fp16.h b/sw/kernels/blas/gemm/src/gemm_fp16.h index 4b9798c10a..6f94ed0f55 100644 --- a/sw/kernels/blas/gemm/src/gemm_fp16.h +++ b/sw/kernels/blas/gemm/src/gemm_fp16.h @@ -61,8 +61,6 @@ void gemm_fp16_baseline(uint32_t setup_ssr, uint32_t transa, uint32_t transb, v4f16 a, b; volatile __fp16* c_ptr; const float zero = 0.0; - double c = 0.0; - v4f16 reduce_reg; a_ptr = (v4f16*)(&A[m * lda]); b_ptr = (v4f16*)(&B[n * ldb]); @@ -96,8 +94,7 @@ void gemm_fp16_baseline(uint32_t setup_ssr, uint32_t transa, uint32_t transb, // Store results "fsh ft3, 0(%[C]) \n" : [ a_ptr ] "+r"(a_ptr), [ b_ptr ] "+r"(b_ptr) - : [ c ] "f"(c), [ reduce_reg ] "f"(reduce_reg), - [ C ] "r"(c_ptr), [ beta ] "r"(beta), [ K ] "r"(K), + : [ C ] "r"(c_ptr), [ beta ] "r"(beta), [ K ] "r"(K), [ zero ] "f"(zero) : "ft0", "ft1", "ft2", "ft3", "ft4", "t0"); } @@ -155,8 +152,8 @@ void gemm_fp16_opt(uint32_t setup_ssr, uint32_t partition_banks, for (uint32_t n0 = 0; n0 < N / unroll; n0++) { __fp16* _C = &C[m * ldc + n]; const float zero = 0.0; - v4f16 c[unroll]; - v2f32 reduce_reg[unroll]; + double c[unroll]; + double reduce_reg[unroll]; asm volatile( "beqz %[beta], 1f \n" @@ -349,8 +346,8 @@ void gemm_fp16_opt_ex(uint32_t setup_ssr, uint32_t partition_banks, for (uint32_t n0 = 0; n0 < N / unroll; n0++) { __fp16* _C = &C[m * ldc + n]; const float zero = 0.0; - v4f16 c[unroll]; - v2f32 reduce_reg[unroll]; + double c[unroll]; + double reduce_reg[unroll]; asm volatile( "beqz %[beta], 1f \n" diff --git a/sw/kernels/blas/gemm/src/gemm_fp32.h b/sw/kernels/blas/gemm/src/gemm_fp32.h index af0b59af4e..915a02a883 100644 --- a/sw/kernels/blas/gemm/src/gemm_fp32.h +++ b/sw/kernels/blas/gemm/src/gemm_fp32.h @@ -160,8 +160,6 @@ void gemm_fp32_baseline(uint32_t setup_ssr, uint32_t partition_banks, v2f32 a, b; volatile float* c_ptr; const float zero = 0.0; - double c = 0.0; - v2f32 reduce_reg; a_ptr = (v2f32*)(&A[m * lda]); b_ptr = (v2f32*)(&B[n * ldb]); @@ -198,8 +196,7 @@ void gemm_fp32_baseline(uint32_t setup_ssr, uint32_t partition_banks, // Store results "fsw ft2, 0(%[C]) \n" : [ a_ptr ] "+r"(a_ptr), [ b_ptr ] "+r"(b_ptr) - : [ c ] "f"(c), [ reduce_reg ] "f"(reduce_reg), - [ C ] "r"(c_ptr), [ beta ] "r"(beta), [ K ] "r"(K), + : [ C ] "r"(c_ptr), [ beta ] "r"(beta), [ K ] "r"(K), [ zero ] "f"(zero) : "ft0", "ft1", "ft2", "ft3", "ft4", "t0"); } @@ -255,10 +252,10 @@ void gemm_fp32_opt(uint32_t setup_ssr, uint32_t partition_banks, for (uint32_t n0 = 0; n0 < N / unroll; n0++) { float* _C = &C[m * ldc + n / 2]; const float zero = 0.0; - v2f32 c[unroll], reduce_reg[unroll]; + double c[unroll], reduce_reg[unroll]; asm volatile( - "beqz %[beta], 1f \n" + "beqz %[beta], 1f \n" // Load intermediate results "flw %[reduce_reg0], 0(%[C]) \n" "flw %[reduce_reg1], 4(%[C]) \n" diff --git a/sw/kernels/blas/gemm/src/gemm_fp8.h b/sw/kernels/blas/gemm/src/gemm_fp8.h index 8319531ae5..80289bfb0f 100644 --- a/sw/kernels/blas/gemm/src/gemm_fp8.h +++ b/sw/kernels/blas/gemm/src/gemm_fp8.h @@ -70,8 +70,6 @@ void gemm_fp8_baseline(uint32_t setup_ssr, uint32_t partition_banks, v8f8 a, b; volatile char* c_ptr; const float zero = 0.0; - double c = 0.0; - v8f8 reduce_reg; a_ptr = (v8f8*)(&A[m * lda]); b_ptr = (v8f8*)(&B[n * ldb]); @@ -106,8 +104,7 @@ void gemm_fp8_baseline(uint32_t setup_ssr, uint32_t partition_banks, // Store results "fsb ft2, 0(%[C]) \n" : [ a_ptr ] "+r"(a_ptr), [ b_ptr ] "+r"(b_ptr) - : [ c ] "f"(c), [ reduce_reg ] "f"(reduce_reg), - [ C ] "r"(c_ptr), [ beta ] "r"(beta), [ K ] "r"(K), + : [ C ] "r"(c_ptr), [ beta ] "r"(beta), [ K ] "r"(K), [ zero ] "f"(zero) : "ft0", "ft1", "ft2", "ft3", "ft4", "t0"); } @@ -162,8 +159,8 @@ void gemm_fp8_opt_ex(uint32_t setup_ssr, uint32_t partition_banks, for (uint32_t n0 = 0; n0 < N / unroll; n0++) { char* _C = &C[m * ldc + n]; const float zero = 0.0; - v8f8 c[unroll]; - v4f16 reduce_reg[unroll]; + double c[unroll]; + double reduce_reg[unroll]; asm volatile( "beqz %[beta], 1f \n" @@ -287,7 +284,7 @@ void gemm_fp8_opt_ex(uint32_t setup_ssr, uint32_t partition_banks, : "ft0", "ft1", "ft2"); // Store results back - ((v8f8*)_C)[0] = c[0]; + ((double*)_C)[0] = c[0]; n += unroll; } diff --git a/sw/kernels/dnn/layernorm/src/layernorm_fp32.h b/sw/kernels/dnn/layernorm/src/layernorm_fp32.h index 9d6c7888f1..f3200cb292 100644 --- a/sw/kernels/dnn/layernorm/src/layernorm_fp32.h +++ b/sw/kernels/dnn/layernorm/src/layernorm_fp32.h @@ -80,7 +80,7 @@ static inline void layernorm_fp32_opt(float *input, float *output, // compute the mean and variance along the last dimension float mean_tot = 0.0; // max value of the current core float var_tot = 0.0; // sum of the exp values of the current core - v2f32 mean_reg = {0.0, 0.0}; + double mean_reg; const int num_elems_per_vector = sizeof(double) / sizeof(float); for (int32_t b = 0; b < batch_size; b++) { const uint32_t ssr0_b[4] = { @@ -119,9 +119,13 @@ static inline void layernorm_fp32_opt(float *input, float *output, float var[UNROLL] = {0.0, 0.0}; mean_tot = 0.0; var_tot = 0.0; - v2f32 var_reg[UNROLL]; - v2f32 pow[UNROLL]; + double var_reg[UNROLL]; + double pow[UNROLL]; v2f32 one_reg = {1.0f, 1.0f}; + // Must convert to double since operands other than float and + // double cannot use the "f" constraint in LLVM 18 and there is + // no constraint for vector registers + double one_reg_d = *((double *)&one_reg); var_tot = 0.0; snrt_ssr_enable(); @@ -191,7 +195,7 @@ static inline void layernorm_fp32_opt(float *input, float *output, : [ n_frep ] "r"(n_frep - 1), [ mean_tot ] "f"(mean_tot), [ embeddings ] "f"((float)embeddings), [ eps ] "f"((float)eps), [ zero ] "f"(0.0), - [ one_reg ] "f"(one_reg) + [ one_reg ] "f"(one_reg_d) : "ft0", "ft1", "ft2" ); diff --git a/sw/runtime/api/dma_decls.h b/sw/runtime/api/dma_decls.h index b2a549176d..444f9feba4 100644 --- a/sw/runtime/api/dma_decls.h +++ b/sw/runtime/api/dma_decls.h @@ -6,4 +6,19 @@ #include +/// A DMA transfer identifier. +typedef uint32_t snrt_dma_txid_t; + +static inline uint32_t snrt_dma_busy(const uint32_t channel = 0); + +static inline uint32_t snrt_dma_would_block(const uint32_t channel = 0); + +inline snrt_dma_txid_t snrt_dma_start_2d(uint64_t dst, uint64_t src, + size_t size, size_t dst_stride, + size_t src_stride, size_t repeat, + const uint32_t channel = 0); + +inline uint32_t snrt_dma_start_1d(uint64_t dst, uint64_t src, size_t size, + const uint32_t channel = 0); + inline void snrt_dma_memset(void *ptr, uint8_t value, uint32_t len); diff --git a/sw/runtime/src/dm.h b/sw/runtime/src/dm.h index ca258a447c..c09c8fc237 100644 --- a/sw/runtime/src/dm.h +++ b/sw/runtime/src/dm.h @@ -183,18 +183,18 @@ inline void dm_main(void) { /// New transaction to issue? if (dm_p->queue_fill) { // wait until DMA is ready - while (__builtin_sdma_stat(DM_STATUS_WOULD_BLOCK)) + while (snrt_dma_would_block()) ; t = &dm_p->queue[dm_p->queue_back]; if (t->twod) { DM_PRINTF(10, "start twod\n"); - __builtin_sdma_start_twod(t->src, t->dst, t->size, t->sstrd, - t->dstrd, t->nreps, t->cfg); + snrt_dma_start_2d(t->dst, t->src, t->size, t->dstrd, t->sstrd, + t->nreps, t->cfg); } else { DM_PRINTF(10, "start oned\n"); - __builtin_sdma_start_oned(t->src, t->dst, t->size, t->cfg); + snrt_dma_start_1d(t->dst, t->src, t->size, 0); } // bump @@ -208,7 +208,7 @@ inline void dm_main(void) { case STAT_WAIT_IDLE: // check status and set pvalid if DMA is idle and clear // request - if (__builtin_sdma_stat(DM_STATUS_BUSY) == 0) { + if (!snrt_dma_busy()) { DM_PRINTF(50, "idle\n"); dm_p->stat_pvalid = 1; dm_p->stat_q = (en_stat_t)0; diff --git a/sw/runtime/src/dma.h b/sw/runtime/src/dma.h index 5874420caf..0ad76f4b7e 100644 --- a/sw/runtime/src/dma.h +++ b/sw/runtime/src/dma.h @@ -15,9 +15,6 @@ #include -/// A DMA transfer identifier. -typedef uint32_t snrt_dma_txid_t; - /** * @brief Start an asynchronous 1D DMA transfer with 64-bit wide pointers on a * specific DMA channel. @@ -26,31 +23,25 @@ typedef uint32_t snrt_dma_txid_t; * @param size The size of the transfer in bytes. * @param channel The index of the channel. * @return The DMA transfer ID. - * @note The function passes the @p channel argument as an immediate, - * thus this must be known at compile time. As a consequence, the - * function must use internal linkage (`static` keyword) and must be - * always inlined. This is true also for all functions invoking this - * function, and passing down an argument to @p channel. */ -static inline uint32_t snrt_dma_start_1d(uint64_t dst, uint64_t src, - size_t size, - const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_1d(uint64_t dst, uint64_t src, size_t size, + uint32_t channel) { #ifdef SNRT_SUPPORTS_DMA uint32_t dst_lo = dst & 0xFFFFFFFF; uint32_t dst_hi = dst >> 32; uint32_t src_lo = src & 0xFFFFFFFF; uint32_t src_hi = src >> 32; + uint32_t cfg = (channel << 2) | 0b00; uint32_t txid; asm volatile( "dmsrc %[src_lo], %[src_hi] \n" "dmdst %[dst_lo], %[dst_hi] \n" - "dmcpyi %[txid], %[size], (%[channel] << 2) | 0b00 \n" + "dmcpy %[txid], %[size], %[cfg] \n" : [ txid ] "=r"(txid) : [ src_lo ] "r"(src_lo), [ src_hi ] "r"(src_hi), [ dst_lo ] "r"(dst_lo), [ dst_hi ] "r"(dst_hi), [ size ] "r"(size), - [ channel ] "i"(channel)); - + [ cfg ] "r"(cfg)); return txid; #else memcpy((void *)dst, (const void *)src, size); @@ -64,9 +55,8 @@ static inline uint32_t snrt_dma_start_1d(uint64_t dst, uint64_t src, * This is a convenience overload of snrt_dma_start_1d(uint64_t, uint64_t, size_t, uint32_t) * using `void*` pointers. */ -static inline uint32_t snrt_dma_start_1d(volatile void *dst, volatile void *src, - size_t size, - const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_1d(volatile void *dst, volatile void *src, + size_t size, uint32_t channel = 0) { return snrt_dma_start_1d((uint64_t)dst, (uint64_t)src, size, channel); } @@ -137,9 +127,10 @@ inline void snrt_dma_disable_reduction() { snrt_dma_set_awuser(0); } * @see snrt_dma_start_1d(uint64_t, uint64_t, size_t, uint32_t) for a * description of the other parameters. */ -static inline uint32_t snrt_dma_start_1d_reduction( - uint64_t dst, uint64_t src, size_t size, uint64_t mask, - snrt_collective_opcode_t opcode, const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_1d_reduction(uint64_t dst, uint64_t src, + size_t size, uint64_t mask, + snrt_collective_opcode_t opcode, + uint32_t channel = 0) { snrt_dma_enable_reduction(mask, opcode); uint32_t txid = snrt_dma_start_1d(dst, src, size, channel); snrt_dma_disable_reduction(); @@ -154,9 +145,10 @@ static inline uint32_t snrt_dma_start_1d_reduction( * @see snrt_dma_start_1d(uint64_t, uint64_t, size_t, uint32_t) for a * description of the other parameters. */ -static inline uint32_t snrt_dma_start_1d_reduction( - uint64_t dst, uint64_t src, size_t size, snrt_comm_t comm, - snrt_collective_opcode_t opcode, const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_1d_reduction(uint64_t dst, uint64_t src, + size_t size, snrt_comm_t comm, + snrt_collective_opcode_t opcode, + uint32_t channel = 0) { uint64_t mask = snrt_get_collective_mask(comm); uint32_t txid = snrt_dma_start_1d_reduction(dst, src, size, mask, opcode, channel); @@ -170,9 +162,8 @@ static inline uint32_t snrt_dma_start_1d_reduction( * @see snrt_dma_start_1d(uint64_t, uint64_t, size_t, uint32_t) for a * description of the other parameters. */ -static inline uint32_t snrt_dma_start_1d_mcast(uint64_t dst, uint64_t src, - size_t size, uint64_t mask, - const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_1d_mcast(uint64_t dst, uint64_t src, size_t size, + uint64_t mask, uint32_t channel = 0) { snrt_dma_enable_multicast(mask); uint32_t txid = snrt_dma_start_1d(dst, src, size, channel); snrt_dma_disable_multicast(); @@ -186,9 +177,9 @@ static inline uint32_t snrt_dma_start_1d_mcast(uint64_t dst, uint64_t src, * @see snrt_dma_start_1d(uint64_t, uint64_t, size_t, uint32_t) for a * description of the other parameters. */ -static inline uint32_t snrt_dma_start_1d_mcast(uint64_t dst, uint64_t src, - size_t size, snrt_comm_t comm, - const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_1d_mcast(uint64_t dst, uint64_t src, size_t size, + snrt_comm_t comm, + uint32_t channel = 0) { uint64_t mask = snrt_get_collective_mask(comm); uint32_t txid = snrt_dma_start_1d_mcast(dst, src, size, mask, channel); return txid; @@ -202,9 +193,11 @@ static inline uint32_t snrt_dma_start_1d_mcast(uint64_t dst, uint64_t src, * snrt_dma_start_1d_reduction(uint64_t, uint64_t, size_t, uint64_t, uint32_t, uint32_t) * using `void*` pointers. */ -static inline uint32_t snrt_dma_start_1d_reduction( - volatile void *dst, volatile void *src, size_t size, uint64_t mask, - snrt_collective_opcode_t opcode, const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_1d_reduction(volatile void *dst, + volatile void *src, size_t size, + uint64_t mask, + snrt_collective_opcode_t opcode, + uint32_t channel = 0) { return snrt_dma_start_1d_reduction((uint64_t)dst, (uint64_t)src, size, mask, opcode, channel); } @@ -217,10 +210,9 @@ static inline uint32_t snrt_dma_start_1d_reduction( * snrt_dma_start_1d_mcast(uint64_t, uint64_t, size_t, uint64_t, uint32_t) * using `void*` pointers. */ -static inline uint32_t snrt_dma_start_1d_mcast(volatile void *dst, - volatile void *src, size_t size, - uint64_t mask, - const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_1d_mcast(volatile void *dst, volatile void *src, + size_t size, uint64_t mask, + uint32_t channel = 0) { return snrt_dma_start_1d_mcast((uint64_t)dst, (uint64_t)src, size, mask, channel); } @@ -237,22 +229,17 @@ static inline uint32_t snrt_dma_start_1d_mcast(volatile void *dst, * @param repeat The number of 1D transfers composing the 2D transfer. * @param channel The index of the channel. * @return The DMA transfer ID. - * @note The function passes the @p channel argument as an immediate, - * thus this must be known at compile time. As a consequence, the - * function must use internal linkage (`static` keyword) and must be - * always inlined. This is true also for all functions invoking this - * function, and passing down an argument to @p channel. */ -static inline snrt_dma_txid_t snrt_dma_start_2d(uint64_t dst, uint64_t src, - size_t size, size_t dst_stride, - size_t src_stride, - size_t repeat, - const uint32_t channel = 0) { +inline snrt_dma_txid_t snrt_dma_start_2d(uint64_t dst, uint64_t src, + size_t size, size_t dst_stride, + size_t src_stride, size_t repeat, + uint32_t channel) { #ifdef SNRT_SUPPORTS_DMA uint32_t dst_lo = dst & 0xFFFFFFFF; uint32_t dst_hi = dst >> 32; uint32_t src_lo = src & 0xFFFFFFFF; uint32_t src_hi = src >> 32; + uint32_t cfg = (channel << 2) | 0b10; uint32_t txid; asm volatile( @@ -260,12 +247,12 @@ static inline snrt_dma_txid_t snrt_dma_start_2d(uint64_t dst, uint64_t src, "dmdst %[dst_lo], %[dst_hi] \n" "dmstr %[src_stride], %[dst_stride] \n" "dmrep %[repeat] \n" - "dmcpyi %[txid], %[size], (%[channel] << 2) | 0b10 \n" + "dmcpy %[txid], %[size], %[cfg] \n" : [ txid ] "=r"(txid) : [ src_lo ] "r"(src_lo), [ src_hi ] "r"(src_hi), [ dst_lo ] "r"(dst_lo), [ dst_hi ] "r"(dst_hi), [ dst_stride ] "r"(dst_stride), [ src_stride ] "r"(src_stride), - [ repeat ] "r"(repeat), [ size ] "r"(size), [ channel ] "i"(channel)); + [ repeat ] "r"(repeat), [ size ] "r"(size), [ cfg ] "r"(cfg)); return txid; #else @@ -281,10 +268,10 @@ static inline snrt_dma_txid_t snrt_dma_start_2d(uint64_t dst, uint64_t src, * snrt_dma_start_2d(uint64_t, uint64_t, size_t, size_t, size_t, size_t, uint32_t) * using `void*` pointers. */ -static inline uint32_t snrt_dma_start_2d(volatile void *dst, volatile void *src, - size_t size, size_t dst_stride, - size_t src_stride, size_t repeat, - const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_2d(volatile void *dst, volatile void *src, + size_t size, size_t dst_stride, + size_t src_stride, size_t repeat, + uint32_t channel = 0) { return snrt_dma_start_2d((uint64_t)dst, (uint64_t)src, size, dst_stride, src_stride, repeat, channel); } @@ -298,11 +285,10 @@ static inline uint32_t snrt_dma_start_2d(volatile void *dst, volatile void *src, * @see snrt_dma_start_2d(uint64_t, uint64_t, size_t, size_t, size_t, size_t, uint32_t) * for a description of the other parameters. */ -static inline uint32_t snrt_dma_start_2d_mcast(uint64_t dst, uint64_t src, - size_t size, size_t dst_stride, - size_t src_stride, size_t repeat, - uint32_t mask, - const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_2d_mcast(uint64_t dst, uint64_t src, size_t size, + size_t dst_stride, size_t src_stride, + size_t repeat, uint32_t mask, + uint32_t channel = 0) { snrt_dma_enable_multicast(mask); uint32_t txid = snrt_dma_start_2d(dst, src, size, dst_stride, src_stride, repeat, channel); @@ -318,17 +304,59 @@ static inline uint32_t snrt_dma_start_2d_mcast(uint64_t dst, uint64_t src, * snrt_dma_start_2d_mcast(uint64_t, uint64_t, size_t, size_t, size_t, size_t, uint32_t, uint32_t) * using `void*` pointers. */ -static inline uint32_t snrt_dma_start_2d_mcast(volatile void *dst, - volatile void *src, size_t size, - size_t dst_stride, - size_t src_stride, size_t repeat, - uint32_t mask, - const uint32_t channel = 0) { +inline uint32_t snrt_dma_start_2d_mcast(volatile void *dst, volatile void *src, + size_t size, size_t dst_stride, + size_t src_stride, size_t repeat, + uint32_t mask, uint32_t channel = 0) { return snrt_dma_start_2d_mcast((uint64_t)dst, (uint64_t)src, size, dst_stride, src_stride, repeat, mask, channel); } +/** + * @brief Read DMA busy flag. + * @param channel The index of the channel. + * @note The function passes the @p channel argument as an immediate, + * thus this must be known at compile time. As a consequence, the + * function must use internal linkage (`static` keyword) and must be + * always inlined. This is true also for all functions invoking this + * function, and passing down an argument to @p channel. + */ +static inline uint32_t snrt_dma_busy(const uint32_t channel) { +#ifdef SNRT_SUPPORTS_DMA + uint32_t busy; + asm volatile("dmstati %[busy], (%[channel] << 2) | 2 \n" + : [ busy ] "=r"(busy) + : [ channel ] "i"(channel) + :); + return busy; +#else + return 0; +#endif +} + +/** + * @brief Read DMA would_block flag. + * @param channel The index of the channel. + * @note The function passes the @p channel argument as an immediate, + * thus this must be known at compile time. As a consequence, the + * function must use internal linkage (`static` keyword) and must be + * always inlined. This is true also for all functions invoking this + * function, and passing down an argument to @p channel. + */ +static inline uint32_t snrt_dma_would_block(const uint32_t channel) { +#ifdef SNRT_SUPPORTS_DMA + uint32_t would_block; + asm volatile("dmstati %[would_block], (%[channel] << 2) | 3 \n" + : [ would_block ] "=r"(would_block) + : [ channel ] "i"(channel) + :); + return would_block; +#else + return 0; +#endif +} + /** * @brief Block until a DMA transfer finishes on a specific DMA channel. * @param txid The DMA transfer's ID. @@ -363,13 +391,8 @@ static inline void snrt_dma_wait(snrt_dma_txid_t txid, */ static inline void snrt_dma_wait_all(const uint32_t channel = 0) { #ifdef SNRT_SUPPORTS_DMA - uint32_t busy; - asm volatile( - "1: \n" - "dmstati %[busy], (%[channel] << 2) | 2 \n" - "bne %[busy], zero, 1b \n" - : [ busy ] "=r"(busy) - : [ channel ] "i"(channel)); + while (snrt_dma_busy(channel)) + ; #endif } diff --git a/sw/tests/src/openmp_for_static_schedule.c b/sw/tests/src/openmp_for_static_schedule.c index 843210a2b7..785937d3de 100644 --- a/sw/tests/src/openmp_for_static_schedule.c +++ b/sw/tests/src/openmp_for_static_schedule.c @@ -25,26 +25,24 @@ unsigned __attribute__((noinline)) static_schedule(void) { #pragma omp parallel firstprivate(data_a, data_x, data_y) { int nthreads = omp_get_num_threads(); - // DM, rep, bound, stride, data - __builtin_ssr_setup_1d_r( - 0, 0, AXPY_N / nthreads - 1, sizeof(double), - &data_x[AXPY_N / nthreads * omp_get_thread_num()]); - __builtin_ssr_setup_1d_r( - 1, 0, AXPY_N / nthreads - 1, sizeof(double), - &data_y[AXPY_N / nthreads * omp_get_thread_num()]); - __builtin_ssr_setup_1d_w( - 2, 0, AXPY_N / nthreads - 1, sizeof(double), - &data_y[AXPY_N / nthreads * omp_get_thread_num()]); - __builtin_ssr_enable(); + snrt_ssr_loop_1d(SNRT_SSR_DM0, AXPY_N / nthreads, sizeof(double)); + snrt_ssr_read(SNRT_SSR_DM0, SNRT_SSR_1D, + &data_x[AXPY_N / nthreads * omp_get_thread_num()]); + snrt_ssr_loop_1d(SNRT_SSR_DM1, AXPY_N / nthreads, sizeof(double)); + snrt_ssr_read(SNRT_SSR_DM1, SNRT_SSR_1D, + &data_y[AXPY_N / nthreads * omp_get_thread_num()]); + snrt_ssr_loop_1d(SNRT_SSR_DM2, AXPY_N / nthreads, sizeof(double)); + snrt_ssr_write(SNRT_SSR_DM2, SNRT_SSR_1D, + &data_y[AXPY_N / nthreads * omp_get_thread_num()]); + snrt_ssr_enable(); #pragma omp for schedule(static) for (unsigned i = 0; i < AXPY_N; i++) { - // data_y[i] = data_a * data_x[i] + data_y[i]; - // data_y[i] = data_a * __builtin_ssr_pop(0) + - __builtin_ssr_pop(1); - __builtin_ssr_push( - 2, data_a * __builtin_ssr_pop(0) + __builtin_ssr_pop(1)); + asm volatile("fmadd.d ft2, %[a], ft0, ft1\n" + : + : [ a ] "f"(data_a) + : "ft0", "ft1", "ft2", "memory"); } - __builtin_ssr_disable(); + snrt_ssr_disable(); } // check data diff --git a/sw/toolchain.mk b/sw/toolchain.mk index c028c09372..055676e0a5 100644 --- a/sw/toolchain.mk +++ b/sw/toolchain.mk @@ -5,26 +5,39 @@ # Luca Colagrande # Viviane Potocnik +######## +# Util # +######## + +empty := +space := $(empty) $(empty) +comma := , + +comma-join = $(subst $(space),$(comma),$(strip $(1))) + ################### # Build variables # ################### # Compiler toolchain -SN_LLVM_BINROOT ?= $(dir $(shell which riscv32-unknown-elf-clang)) -SN_RISCV_CC ?= $(SN_LLVM_BINROOT)/clang -SN_RISCV_CXX ?= $(SN_LLVM_BINROOT)/clang++ -SN_RISCV_LD ?= $(SN_LLVM_BINROOT)/ld.lld -SN_RISCV_AR ?= $(SN_LLVM_BINROOT)/llvm-ar -SN_RISCV_OBJCOPY ?= $(SN_LLVM_BINROOT)/llvm-objcopy -SN_RISCV_OBJDUMP ?= $(SN_LLVM_BINROOT)/llvm-objdump +SN_LLVM_BINROOT ?= $(dir $(shell which riscv32-unknown-elf-clang)) +SN_RISCV_CC ?= $(SN_LLVM_BINROOT)/clang +SN_RISCV_CXX ?= $(SN_LLVM_BINROOT)/clang++ +SN_RISCV_LD ?= $(SN_LLVM_BINROOT)/ld.lld +SN_RISCV_AR ?= $(SN_LLVM_BINROOT)/llvm-ar +SN_RISCV_OBJCOPY ?= $(SN_LLVM_BINROOT)/llvm-objcopy +SN_RISCV_OBJDUMP ?= $(SN_LLVM_BINROOT)/llvm-objdump +SN_RISCV_MC ?= $(SN_LLVM_BINROOT)/llvm-mc +SN_RISCV_ADDR2LINE ?= $(SN_LLVM_BINROOT)/llvm-addr2line # Compiler flags -SN_MCPU ?= snitch -SN_RISCV_CFLAGS := -mcpu=$(SN_MCPU) +SN_RISCV_FEATURES = xfrep xssr xdma xcopift xsmallfloat +SN_RISCV_CFLAGS := -march=rv32imafd_zfh_zifencei +SN_RISCV_CFLAGS += $(foreach feat,$(SN_RISCV_FEATURES),-Xclang -target-feature -Xclang +$(feat)) SN_RISCV_CFLAGS += -menable-experimental-extensions SN_RISCV_CFLAGS += -mabi=ilp32d SN_RISCV_CFLAGS += -mcmodel=medany -SN_RISCV_CFLAGS += -mno-fdiv +# SN_RISCV_CFLAGS += -mno-fdiv SN_RISCV_CFLAGS += -fno-builtin-printf SN_RISCV_CFLAGS += -fno-builtin-sqrtf SN_RISCV_CFLAGS += -fno-common @@ -49,5 +62,7 @@ SN_RISCV_LDFLAGS += -lm SN_RISCV_ARFLAGS := rcs # Objdump flags -SN_RISCV_OBJDUMP_FLAGS := --mcpu=$(SN_MCPU) -SN_RISCV_OBJDUMP_FLAGS += -D +SN_RISCV_MATTR_FEATURES = $(call comma-join,$(addprefix +,$(SN_RISCV_FEATURES))) +SN_RISCV_MATTR_FLAG = --mattr=+m,+a,+f,+d,+zfh,+zifencei,$(SN_RISCV_MATTR_FEATURES) +SN_RISCV_OBJDUMP_FLAGS := --triple=riscv32 $(SN_RISCV_MATTR_FLAG) +SN_RISCV_OBJDUMP_FLAGS += -D diff --git a/util/clustergen/generate-opcodes.sh b/util/clustergen/generate-opcodes.sh index 9cb02915bf..2e2808277c 100755 --- a/util/clustergen/generate-opcodes.sh +++ b/util/clustergen/generate-opcodes.sh @@ -7,13 +7,8 @@ set -e ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd) -RISCV_OPCODES=$ROOT/sw/deps/riscv-opcodes -OPCODES=(opcodes-pseudo opcodes-rv32i opcodes-rv64i opcodes-rv32m opcodes-rv64m opcodes-rv32a opcodes-rv64a opcodes-rv32h opcodes-rv64h opcodes-rv32f opcodes-rv64f opcodes-rv32d opcodes-rv64d opcodes-rv32q opcodes-rv64q opcodes-system opcodes-custom opcodes-rv32b_CUSTOM opcodes-dma_CUSTOM opcodes-frep_CUSTOM opcodes-ssr_CUSTOM opcodes-copift_CUSTOM opcodes-flt-occamy_CUSTOM opcodes-rvv-pseudo opcodes-xpulppostmod_CUSTOM opcodes-xpulpabs_CUSTOM opcodes-xpulpbitop_CUSTOM opcodes-xpulpbr_CUSTOM opcodes-xpulpclip_CUSTOM opcodes-xpulpmacsi_CUSTOM opcodes-xpulpminmax_CUSTOM opcodes-xpulpslet_CUSTOM opcodes-xpulpvect_CUSTOM opcodes-xpulpvectshufflepack_CUSTOM) +OPCODES=($(cat "$(dirname "${BASH_SOURCE[0]}")/opcodes.txt")) -####### -# RTL # -####### -OPCODES+=(opcodes-ipu_CUSTOM) INSTR_SV=$ROOT/hw/snitch/src/riscv_instr.sv cat > $INSTR_SV <<- EOM @@ -23,5 +18,9 @@ cat > $INSTR_SV <<- EOM EOM echo -e "// verilog_lint: waive-start parameter-name-style" >> $INSTR_SV -cd $RISCV_OPCODES && cat ${OPCODES[@]} | ./parse_opcodes -sverilog --warn-overlap >> $INSTR_SV +riscv_opcodes -sverilog --warn-overlap ${OPCODES[@]} +# Dump riscv_opcodes output to the instruction file +cat inst.sverilog >> $INSTR_SV +# Delete riscv_opcodes artifacts +rm inst.sverilog instr_dict.json echo -e "// verilog_lint: waive-stop parameter-name-style" >> $INSTR_SV diff --git a/util/clustergen/opcodes.txt b/util/clustergen/opcodes.txt new file mode 100644 index 0000000000..2899dc0b17 --- /dev/null +++ b/util/clustergen/opcodes.txt @@ -0,0 +1,38 @@ +rv_i +rv32_i +rv64_i +rv_zicsr +rv_zifencei +rv_s +rv_m +rv_sdext +rv32_m +rv64_m +rv_a +rv64_a +rv32_h +rv64_h +rv_f +rv64_f +rv_d +rv64_d +rv_q +rv64_q +rv_system +unratified/rv_xdma +unratified/rv_xfrep +unratified/rv_xssr +unratified/rv_xipu +unratified/rv_xcopift +unratified/rv_xsmallfloat +unratified/rv32_xb +unratified/rv32_xpulppostmod +unratified/rv32_xpulpabs +unratified/rv32_xpulpbitop +unratified/rv32_xpulpbr +unratified/rv32_xpulpclip +unratified/rv32_xpulpmacsi +unratified/rv32_xpulpminmax +unratified/rv32_xpulpslet +unratified/rv32_xpulpvect +unratified/rv32_xpulpvectshufflepack diff --git a/util/trace/gen_trace.py b/util/trace/gen_trace.py index e71e52e378..778aa59226 100755 --- a/util/trace/gen_trace.py +++ b/util/trace/gen_trace.py @@ -365,7 +365,7 @@ def load_opcodes(): @lru_cache -def disasm_inst(hex_inst, mc_exec='llvm-mc', mc_flags='-disassemble -mcpu=snitch'): +def disasm_inst(hex_inst, mc_exec='llvm-mc', mc_flags='-disassemble'): """Disassemble a single RISC-V instruction using llvm-mc.""" # Reverse the endianness of the hex instruction inst_fmt = ' '.join(f'0x{byte:02x}' for byte in bytes.fromhex(hex_inst)[::-1]) @@ -1266,7 +1266,7 @@ def main(): ) parser.add_argument( '--mc-flags', - default='-disassemble -mcpu=snitch', + default='-disassemble', help='Flags to pass to the llvm-mc executable' ) diff --git a/uv.lock b/uv.lock index fcc4a51598..30cb745af7 100644 --- a/uv.lock +++ b/uv.lock @@ -1870,6 +1870,20 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/05/35/298d9410b3635107ce586725cdfbca4c219c08d77a3511551f5e479a78db/reuse-6.2.0.tar.gz", hash = "sha256:4feae057a2334c9a513e6933cdb9be819d8b822f3b5b435a36138bd218897d23", size = 1615611, upload-time = "2025-10-27T15:25:46.336Z" } +[[package]] +name = "riscv-opcodes" +version = "0.1.0" +source = { editable = "sw/deps/riscv-opcodes" } +dependencies = [ + { name = "matplotlib" }, +] + +[package.metadata] +requires-dist = [{ name = "matplotlib", specifier = ">=3.9.0,<4" }] + +[package.metadata.requires-dev] +dev = [{ name = "coverage", specifier = ">=7,<8" }] + [[package]] name = "rpds-py" version = "0.27.1" @@ -2142,6 +2156,7 @@ dependencies = [ { name = "pytest" }, { name = "pyyaml" }, { name = "reuse" }, + { name = "riscv-opcodes" }, { name = "tabulate" }, { name = "termcolor" }, { name = "yamllint" }, @@ -2214,6 +2229,7 @@ requires-dist = [ { name = "pytest" }, { name = "pyyaml" }, { name = "reuse" }, + { name = "riscv-opcodes", editable = "sw/deps/riscv-opcodes" }, { name = "scikit-learn", marker = "extra == 'kernels'" }, { name = "snitch", extras = ["docs", "kernels"], marker = "extra == 'all'" }, { name = "tabulate" }, @@ -2345,12 +2361,12 @@ dependencies = [ { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, ] wheels = [ - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:aa4483602586cc9a35d1cf33771a9977f05f642b9161518a289e36548a0b77c2" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:4de0ed8cbc457a506dbca40376e206a29efee10756a00f1f3404bf67ad737d04" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:259548471194ab63d7ea273873053a6e3cc23530c1510f01e9d7ad259187bbd0" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:e24836d968b54ef4dfb05594001a61958711ac9224026291e4e3f92f83a6fd7f" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d8e2ab7f86010330bdcc39c8b2c795590cc75e37df4823cdaee2c98d6e3ff4a3" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a3e859039c985d8e3ea60d7a54ca7e97ea2ae15e31beced4f3260128a161bb01" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:aa4483602586cc9a35d1cf33771a9977f05f642b9161518a289e36548a0b77c2", upload-time = "2025-10-14T17:26:16Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:4de0ed8cbc457a506dbca40376e206a29efee10756a00f1f3404bf67ad737d04", upload-time = "2025-10-14T17:26:17Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:259548471194ab63d7ea273873053a6e3cc23530c1510f01e9d7ad259187bbd0", upload-time = "2025-10-14T17:26:17Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:e24836d968b54ef4dfb05594001a61958711ac9224026291e4e3f92f83a6fd7f", upload-time = "2025-10-14T17:26:17Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d8e2ab7f86010330bdcc39c8b2c795590cc75e37df4823cdaee2c98d6e3ff4a3", upload-time = "2025-10-14T17:26:18Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a3e859039c985d8e3ea60d7a54ca7e97ea2ae15e31beced4f3260128a161bb01", upload-time = "2025-10-14T17:26:18Z" }, ] [[package]] @@ -2371,27 +2387,27 @@ dependencies = [ { name = "typing-extensions", marker = "sys_platform != 'darwin'" }, ] wheels = [ - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:da77341ccaba31762d9238b0942c165c4582a26818f3045b052b39cebdd7ad9d" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:add3e93ecc1eeaa6853f6a973ce60ffb3cb14ed2e80f5055e139b09385dce0a7" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:389e1e0b8083fd355f7caf5ba82356b5e01c318998bd575dbf2285a0d8137089" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp311-cp311-win_arm64.whl", hash = "sha256:5ce3d01aef91dc078fbb121814e556d55bc886d303efaf42c4fe67e411f5f9ad" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3a651434ae1248b0568c12b5f9e3acc8942eb28378d9d04a79302938b68c6f24" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:28f6eb31b08180a5c5e98d5bc14eef6909c9f5a1dbff9632c3e02a8773449349" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:e438061b87ec7dd6018fca9f975219889aa0a3f6cdc3ea10dd0ae2bc7f1c47ce" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp312-cp312-win_arm64.whl", hash = "sha256:eb13ff1c34e338d722e76a4fd83b8d282782505bd1b99af4b3c32da66eba6eb4" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:be4438d8dad7f0d5a5e54f0feef8a893446894ec87f102bb1d82dcc4518542e4" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6c9b217584400963d5b4daddb3711ec7a3778eab211e18654fba076cce3b8682" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:728372e3f58c5826445f677746e5311c1935c1a7c59599f73a49ded850e038e8" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313-win_arm64.whl", hash = "sha256:95e56c26f919fbb98f16e7a0b87af494b893f9da9a65a020f17a01c13e520a81" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:6c777160288b08555820781ae0f3a2c67a59bd24b065e88ca1ec20e2f9dc8ac7" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:528fd338311f31c9fb18038cafd00e6eae0bf5ad5577521701acb62510753d18" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:d572863990e7d2762b547735ef589f6350d9eb4e441d38753a1c33636698cf4c" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:44aadb735774d4a99525d2ec29126b23016c44a07b02ce6c237dfa61a223dd52" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:b355e07b7f0c369cb031adfcbff5c37a609abcea091b918a39886412afd2e07d" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:c2698999361d73c2d25d7cc8a787130188d49b183abb18b554228daa102e1594" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:fa0d1373d04b30ff8f12d542135d292f1a1ddb7c0d852a3d487a320360e5dab9" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:2f49bb57a5fe0dc7f8e73ea9e5d36ebda2ea25b8a714a788f0fc2fc47d20a830" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:3a60d1ecf27a9cce839b3aa665b26f0af1b1007b9c9f1e7f597f6b7bdf107617" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:da77341ccaba31762d9238b0942c165c4582a26818f3045b052b39cebdd7ad9d", upload-time = "2025-10-14T17:26:04Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:add3e93ecc1eeaa6853f6a973ce60ffb3cb14ed2e80f5055e139b09385dce0a7", upload-time = "2025-10-14T17:26:06Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:389e1e0b8083fd355f7caf5ba82356b5e01c318998bd575dbf2285a0d8137089", upload-time = "2025-10-14T17:26:00Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp311-cp311-win_arm64.whl", hash = "sha256:5ce3d01aef91dc078fbb121814e556d55bc886d303efaf42c4fe67e411f5f9ad", upload-time = "2025-10-14T17:26:01Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3a651434ae1248b0568c12b5f9e3acc8942eb28378d9d04a79302938b68c6f24", upload-time = "2025-10-14T17:26:02Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:28f6eb31b08180a5c5e98d5bc14eef6909c9f5a1dbff9632c3e02a8773449349", upload-time = "2025-10-14T17:26:03Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:e438061b87ec7dd6018fca9f975219889aa0a3f6cdc3ea10dd0ae2bc7f1c47ce", upload-time = "2025-10-14T17:26:05Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp312-cp312-win_arm64.whl", hash = "sha256:eb13ff1c34e338d722e76a4fd83b8d282782505bd1b99af4b3c32da66eba6eb4", upload-time = "2025-10-14T17:26:06Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:be4438d8dad7f0d5a5e54f0feef8a893446894ec87f102bb1d82dcc4518542e4", upload-time = "2025-10-14T17:26:07Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6c9b217584400963d5b4daddb3711ec7a3778eab211e18654fba076cce3b8682", upload-time = "2025-10-14T17:26:07Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:728372e3f58c5826445f677746e5311c1935c1a7c59599f73a49ded850e038e8", upload-time = "2025-10-14T17:26:10Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313-win_arm64.whl", hash = "sha256:95e56c26f919fbb98f16e7a0b87af494b893f9da9a65a020f17a01c13e520a81", upload-time = "2025-10-14T17:26:08Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:6c777160288b08555820781ae0f3a2c67a59bd24b065e88ca1ec20e2f9dc8ac7", upload-time = "2025-10-14T17:26:09Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:528fd338311f31c9fb18038cafd00e6eae0bf5ad5577521701acb62510753d18", upload-time = "2025-10-14T17:26:09Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:d572863990e7d2762b547735ef589f6350d9eb4e441d38753a1c33636698cf4c", upload-time = "2025-10-14T17:26:11Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:44aadb735774d4a99525d2ec29126b23016c44a07b02ce6c237dfa61a223dd52", upload-time = "2025-10-14T17:26:12Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:b355e07b7f0c369cb031adfcbff5c37a609abcea091b918a39886412afd2e07d", upload-time = "2025-10-14T17:26:14Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:c2698999361d73c2d25d7cc8a787130188d49b183abb18b554228daa102e1594", upload-time = "2025-10-14T17:26:12Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:fa0d1373d04b30ff8f12d542135d292f1a1ddb7c0d852a3d487a320360e5dab9", upload-time = "2025-10-14T17:26:13Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:2f49bb57a5fe0dc7f8e73ea9e5d36ebda2ea25b8a714a788f0fc2fc47d20a830", upload-time = "2025-10-14T17:26:13Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.9.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:3a60d1ecf27a9cce839b3aa665b26f0af1b1007b9c9f1e7f597f6b7bdf107617", upload-time = "2025-10-14T17:26:15Z" }, ] [[package]]