Refactor kelvin bin_fmt file Split kelvin.bin_fmt file into groups PiperOrigin-RevId: 553832004
diff --git a/sim/BUILD b/sim/BUILD index 47c560d..bf3ec90 100644 --- a/sim/BUILD +++ b/sim/BUILD
@@ -71,7 +71,14 @@ name = "kelvin_bin_fmt", src = "kelvin.bin_fmt", decoder_name = "Kelvin", - includes = [], + includes = [ + "kelvin_arith.bin_fmt", + "kelvin_base.bin_fmt", + "kelvin_format.bin_fmt", + "kelvin_memory.bin_fmt", + "kelvin_mul.bin_fmt", + "kelvin_shift.bin_fmt", + ], deps = [ ":kelvin_isa", ],
diff --git a/sim/kelvin.bin_fmt b/sim/kelvin.bin_fmt index 71b48d3..39703dc 100644 --- a/sim/kelvin.bin_fmt +++ b/sim/kelvin.bin_fmt
@@ -1,4 +1,3 @@ - // Kelvin instruction decoder. decoder Kelvin { namespace kelvin::sim::encoding; @@ -7,1456 +6,15 @@ #include "sim/kelvin_decoder.h" } KelvinInst; - KelvinVectorInst; + KelvinVectorArithInst; + KelvinVectorMemoryInst; + KelvinVectorMulInst; + KelvinVectorShiftInst; }; -format Inst32Format[32] { - fields: - unsigned bits[25]; - unsigned opcode[7]; -}; - -// Risc-V R-Type format. -format RType[32] : Inst32Format { - fields: - unsigned func7[7]; - unsigned rs2[5]; - unsigned rs1[5]; - unsigned func3[3]; - unsigned rd[5]; - unsigned opcode[7]; - overlays: - unsigned r_uimm5[5] = rs2; -}; - -// Risc-V R4-Type format. -format R4Type[32] : Inst32Format { - fields: - unsigned rs3[5]; - unsigned func2[2]; - unsigned rs2[5]; - unsigned rs1[5]; - unsigned func3[3]; - unsigned rd[5]; - unsigned opcode[7]; -}; - -// Risc-V I-Type format. -format IType[32] : Inst32Format { - fields: - signed imm12[12]; - unsigned rs1[5]; - unsigned func3[3]; - unsigned rd[5]; - unsigned opcode[7]; - overlays: - unsigned u_imm12[12] = imm12; - unsigned i_uimm5[5] = rs1; -}; - -// Risc-V S-Type format. -format SType[32] : Inst32Format { - fields: - unsigned imm7[7]; - unsigned rs2[5]; - unsigned rs1[5]; - unsigned func3[3]; - unsigned imm5[5]; - unsigned opcode[7]; - overlays: - signed s_imm[12] = imm7, imm5; -}; - -// Risc-V B-Type format. -format BType[32] : Inst32Format { - fields: - unsigned imm7[7]; - unsigned rs2[5]; - unsigned rs1[5]; - unsigned func3[3]; - unsigned imm5[5]; - unsigned opcode[7]; - overlays: - signed b_imm[13] = imm7[6], imm5[0], imm7[5..0], imm5[4..1], 0b0; -}; - -// Risc-V U-Type format. -format UType[32] : Inst32Format { - fields: - unsigned imm20[20]; - unsigned rd[5]; - unsigned opcode[7]; - overlays: - unsigned u_imm[32] = imm20, 0b0000'0000'0000; -}; - -// Risc-V J-Type format. -format JType[32] : Inst32Format { - fields: - unsigned imm20[20]; - unsigned rd[5]; - unsigned opcode[7]; - overlays: - signed j_imm[21] = imm20[19, 7..0, 8, 18..9], 0b0; -}; - -// Risc-V Fence format. -format Fence[32] : Inst32Format { - fields: - unsigned fm[4]; - unsigned pred[4]; - unsigned succ[4]; - unsigned rs1[5]; - unsigned func3[3]; - unsigned rd[5]; - unsigned opcode[7]; -}; - -// Risc-V A-Type format. -format AType[32] : Inst32Format { - fields: - unsigned func5[5]; - unsigned aq[1]; - unsigned rl[1]; - unsigned rs2[5]; - unsigned rs1[5]; - unsigned func3[3]; - unsigned rd[5]; - unsigned opcode[7]; -}; - -// Kelvin 2 args Vector format. -format KelvinV2ArgsType[32] { - fields: - unsigned func2[6]; - unsigned vs2[6]; - unsigned vs1[6]; - unsigned sz[2]; // .b==0b00, .h==0b01, .w==0b10 - unsigned vd[6]; - unsigned m[1]; - unsigned func1[3]; - unsigned form[2]; // .vv==0b00, .vx==0b10, .xx==0b11 -}; - -// Kelvin system instruction format (cache, getvl). -format KelvinSystemType[32] : Inst32Format { - fields: - unsigned func2[4]; - unsigned m[1]; - unsigned mode[2]; - unsigned rs2[5]; - unsigned rs1[5]; - unsigned func1[3]; - unsigned rd[5]; - unsigned opcode[7]; -}; - -instruction group KelvinInst[32] : Inst32Format { - lui : UType : opcode == 0b011'0111; - auipc : UType : opcode == 0b001'0111; - jal : JType : rd != 0, opcode == 0b110'1111; - j : JType : rd == 0, opcode == 0b110'1111; - jalr : IType : rd != 0, func3 == 0b000, opcode == 0b110'0111; - jr : IType : rd == 0, func3 == 0b000, opcode == 0b110'0111; - beq : BType : func3 == 0b000, opcode == 0b110'0011; - bne : BType : func3 == 0b001, opcode == 0b110'0011; - blt : BType : func3 == 0b100, opcode == 0b110'0011; - bge : BType : func3 == 0b101, opcode == 0b110'0011; - bltu : BType : func3 == 0b110, opcode == 0b110'0011; - bgeu : BType : func3 == 0b111, opcode == 0b110'0011; - lb : BType : func3 == 0b000, opcode == 0b000'0011; - lh : BType : func3 == 0b001, opcode == 0b000'0011; - lw : BType : func3 == 0b010, opcode == 0b000'0011; - lbu : BType : func3 == 0b100, opcode == 0b000'0011; - lhu : BType : func3 == 0b101, opcode == 0b000'0011; - sb : SType : func3 == 0b000, opcode == 0b010'0011; - sh : SType : func3 == 0b001, opcode == 0b010'0011; - sw : SType : func3 == 0b010, opcode == 0b010'0011; - addi : IType : func3 == 0b000, opcode == 0b001'0011; - slti : IType : func3 == 0b010, opcode == 0b001'0011; - sltiu : IType : func3 == 0b011, opcode == 0b001'0011; - xori : IType : func3 == 0b100, opcode == 0b001'0011; - ori : IType : func3 == 0b110, opcode == 0b001'0011; - andi : IType : func3 == 0b111, opcode == 0b001'0011; - slli : RType : func7 == 0b000'0000, func3==0b001, opcode == 0b001'0011; - srli : RType : func7 == 0b000'0000, func3==0b101, opcode == 0b001'0011; - srai : RType : func7 == 0b010'0000, func3==0b101, opcode == 0b001'0011; - add : RType : func7 == 0b000'0000, func3==0b000, opcode == 0b011'0011; - sub : RType : func7 == 0b010'0000, func3==0b000, opcode == 0b011'0011; - sll : RType : func7 == 0b000'0000, func3==0b001, opcode == 0b011'0011; - slt : RType : func7 == 0b000'0000, func3==0b010, opcode == 0b011'0011; - sltu : RType : func7 == 0b000'0000, func3==0b011, opcode == 0b011'0011; - xor : RType : func7 == 0b000'0000, func3==0b100, opcode == 0b011'0011; - srl : RType : func7 == 0b000'0000, func3==0b101, opcode == 0b011'0011; - sra : RType : func7 == 0b010'0000, func3==0b101, opcode == 0b011'0011; - or : RType : func7 == 0b000'0000, func3==0b110, opcode == 0b011'0011; - and : RType : func7 == 0b000'0000, func3==0b111, opcode == 0b011'0011; - fence : Fence : func3 == 0b000, opcode == 0b000'1111; - ecall : Inst32Format : bits == 0b0000'0000'0000'00000'000'00000, opcode == 0b111'0011; - ebreak : Inst32Format : bits == 0b0000'0000'0001'00000'000'00000, opcode == 0b111'0011; - // RiscV32 Instruction fence. - fencei : IType : func3 == 001, opcode == 0b000'1111; - // RiscV32 multiply divide. - mul : RType : func7 == 0b000'0001, func3 == 0b000, opcode == 0b011'0011; - mulh : RType : func7 == 0b000'0001, func3 == 0b001, opcode == 0b011'0011; - mulhsu : RType : func7 == 0b000'0001, func3 == 0b010, opcode == 0b011'0011; - mulhu : RType : func7 == 0b000'0001, func3 == 0b011, opcode == 0b011'0011; - div : RType : func7 == 0b000'0001, func3 == 0b100, opcode == 0b011'0011; - divu : RType : func7 == 0b000'0001, func3 == 0b101, opcode == 0b011'0011; - rem : RType : func7 == 0b000'0001, func3 == 0b110, opcode == 0b011'0011; - remu : RType : func7 == 0b000'0001, func3 == 0b111, opcode == 0b011'0011; - // RiscV32 CSR manipulation instructions. - csrrw : IType : func3 == 0b001, rd != 0, opcode == 0b111'0011; - csrrs : IType : func3 == 0b010, rs1 != 0, rd != 0, opcode == 0b111'0011; - csrrc : IType : func3 == 0b011, rs1 != 0, rd != 0, opcode == 0b111'0011; - csrrs_nr : IType : func3 == 0b010, rs1 != 0, rd == 0, opcode == 0b111'0011; - csrrc_nr : IType : func3 == 0b011, rs1 != 0, rd == 0, opcode == 0b111'0011; - csrrw_nr : IType : func3 == 0b001, rd == 0, opcode == 0b111'0011; - csrrs_nw : IType : func3 == 0b010, rs1 == 0, opcode == 0b111'0011; - csrrc_nw : IType : func3 == 0b011, rs1 == 0, opcode == 0b111'0011; - csrrwi : IType : func3 == 0b101, rd != 0, opcode == 0b111'0011; - csrrsi : IType : func3 == 0b110, rs1 != 0, rd != 0, opcode == 0b111'0011; - csrrci : IType : func3 == 0b111, rs1 != 0, rd != 0, opcode == 0b111'0011; - csrrsi_nr: IType : func3 == 0b110, rs1 != 0, rd == 0, opcode == 0b111'0011; - csrrci_nr: IType : func3 == 0b111, rs1 != 0, rd == 0, opcode == 0b111'0011; - csrrwi_nr: IType : func3 == 0b101, rd == 0, opcode == 0b111'0011; - csrrsi_nw: IType : func3 == 0b110, rs1 == 0, opcode == 0b111'0011; - csrrci_nw: IType : func3 == 0b111, rs1 == 0, opcode == 0b111'0011; - // RiscV32 Privileged instructions. - uret : Inst32Format : bits == 0b000'0000'00010'00000'000'00000, opcode == 0b111'0011; - sret : Inst32Format : bits == 0b000'1000'00010'00000'000'00000, opcode == 0b111'0011; - mret : Inst32Format : bits == 0b001'1000'00010'00000'000'00000, opcode == 0b111'0011; - wfi : Inst32Format : bits == 0b000'1000'00101'00000'000'00000, opcode == 0b111'0011; - mpause : Inst32Format : bits == 0b000'0100'00000'00000'000'00000, opcode == 0b111'0011; - sfence_vma_zz : RType : func7 == 0b000'1001, rs2 == 0, rs1 == 0, func3 == 0, rd == 0, opcode == 0b111'0011; - sfence_vma_zn : RType : func7 == 0b000'1001, rs2 != 0, rs1 == 0, func3 == 0, rd == 0, opcode == 0b111'0011; - sfence_vma_nz : RType : func7 == 0b000'1001, rs2 == 0, rs1 != 0, func3 == 0, rd == 0, opcode == 0b111'0011; - sfence_vma_nn : RType : func7 == 0b000'1001, rs2 != 0, rs1 != 0, func3 == 0, rd == 0, opcode == 0b111'0011; - // Kelvin memory flush instructions. - flushall : Inst32Format : bits == 0b001'0011'00000'00000'000'00000, opcode == 0b111'0111; - flushat : RType : func7 == 0b001'0011, rs2 == 0, rs1 != 0, func3 == 0, rd == 0, opcode == 0b111'0111; - // Kelvin system instructions. - getmaxvl_b : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b00, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getmaxvl_h : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b01, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getmaxvl_w : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b10, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_b_x : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b00, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_h_x : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b01, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_w_x : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b10, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_b_xx : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b00, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_h_xx : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b01, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_w_xx : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b10, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getmaxvl_b_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b00, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getmaxvl_h_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b01, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getmaxvl_w_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b10, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_b_x_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b00, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_h_x_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b01, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_w_x_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b10, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_b_xx_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b00, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_h_xx_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b01, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - getvl_w_xx_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b10, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; - // Kelvin log instructions. - flog : KelvinSystemType : func2 == 0b0111, m == 1, mode == 0, rs2 == 0, rs1 != 0, func1 == 0, rd == 0, opcode == 0b111'0111; - slog : KelvinSystemType : func2 == 0b0111, m == 1, mode == 0, rs2 == 0, rs1 != 0, func1 == 1, rd == 0, opcode == 0b111'0111; - clog : KelvinSystemType : func2 == 0b0111, m == 1, mode == 0, rs2 == 0, rs1 != 0, func1 == 2, rd == 0, opcode == 0b111'0111; - klog : KelvinSystemType : func2 == 0b0111, m == 1, mode == 0, rs2 == 0, rs1 != 0, func1 == 3, rd == 0, opcode == 0b111'0111; -}; - -instruction group KelvinVectorInst[32] : KelvinV2ArgsType { - // Kelvin Vector instructions. - - // vadd - vadd_b_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vadd_b_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vadd_b_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vadd_b_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vadd_h_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vadd_h_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vadd_h_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vadd_h_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vadd_w_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vadd_w_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vadd_w_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vadd_w_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vsub - vsub_b_vv : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vsub_b_vx : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vsub_b_vv_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vsub_b_vx_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vsub_h_vv : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vsub_h_vx : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vsub_h_vv_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vsub_h_vx_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vsub_w_vv : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vsub_w_vx : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vsub_w_vv_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vsub_w_vx_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vrsub - vrsub_b_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vrsub_b_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vrsub_b_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vrsub_b_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vrsub_h_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vrsub_h_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vrsub_h_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vrsub_h_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vrsub_w_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vrsub_w_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vrsub_w_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vrsub_w_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // veq - veq_b_vv : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - veq_b_vx : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - veq_b_vv_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - veq_b_vx_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - veq_h_vv : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - veq_h_vx : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - veq_h_vv_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - veq_h_vx_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - veq_w_vv : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - veq_w_vx : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - veq_w_vv_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - veq_w_vx_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vne - vne_b_vv : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vne_b_vx : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vne_b_vv_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vne_b_vx_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vne_h_vv : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vne_h_vx : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vne_h_vv_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vne_h_vx_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vne_w_vv : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vne_w_vx : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vne_w_vv_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vne_w_vx_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vlt - vlt_b_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vlt_b_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vlt_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vlt_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vlt_h_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vlt_h_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vlt_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vlt_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vlt_w_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vlt_w_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vlt_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vlt_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vltu - vlt_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vlt_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vlt_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vlt_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vlt_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vlt_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vlt_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vlt_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vlt_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vlt_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vlt_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vlt_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vle - vle_b_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vle_b_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vle_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vle_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vle_h_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vle_h_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vle_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vle_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vle_w_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vle_w_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vle_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vle_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vleu - vle_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vle_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vle_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vle_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vle_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vle_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vle_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vle_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vle_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vle_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vle_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vle_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vgt - vgt_b_vv : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vgt_b_vx : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vgt_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vgt_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vgt_h_vv : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vgt_h_vx : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vgt_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vgt_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vgt_w_vv : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vgt_w_vx : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vgt_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vgt_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vgtu - vgt_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vgt_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vgt_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vgt_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vgt_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vgt_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vgt_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vgt_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vgt_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vgt_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vgt_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vgt_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vge - vge_b_vv : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vge_b_vx : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vge_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vge_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vge_h_vv : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vge_h_vx : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vge_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vge_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vge_w_vv : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vge_w_vx : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vge_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vge_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vgeu - vge_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vge_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vge_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vge_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vge_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vge_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vge_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vge_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vge_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vge_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vge_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vge_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vabsd - vabsd_b_vv : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vabsd_b_vx : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vabsd_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vabsd_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vabsd_h_vv : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vabsd_h_vx : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vabsd_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vabsd_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vabsd_w_vv : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vabsd_w_vx : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vabsd_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vabsd_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vabsdu - vabsd_u_b_vv : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vabsd_u_b_vx : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vabsd_u_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vabsd_u_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vabsd_u_h_vv : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vabsd_u_h_vx : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vabsd_u_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vabsd_u_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vabsd_u_w_vv : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vabsd_u_w_vx : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vabsd_u_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vabsd_u_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vmax - vmax_b_vv : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vmax_b_vx : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vmax_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vmax_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vmax_h_vv : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vmax_h_vx : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vmax_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vmax_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vmax_w_vv : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vmax_w_vx : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vmax_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vmax_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vmaxu - vmax_u_b_vv : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vmax_u_b_vx : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vmax_u_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vmax_u_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vmax_u_h_vv : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vmax_u_h_vx : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vmax_u_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vmax_u_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vmax_u_w_vv : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vmax_u_w_vx : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vmax_u_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vmax_u_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vmin - vmin_b_vv : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vmin_b_vx : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vmin_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vmin_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vmin_h_vv : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vmin_h_vx : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vmin_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vmin_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vmin_w_vv : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vmin_w_vx : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vmin_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vmin_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vminu - vmin_u_b_vv : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vmin_u_b_vx : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vmin_u_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vmin_u_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vmin_u_h_vv : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vmin_u_h_vx : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vmin_u_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vmin_u_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vmin_u_w_vv : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vmin_u_w_vx : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vmin_u_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vmin_u_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - // vadd3 - vadd3_b_vv : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; - vadd3_b_vx : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; - vadd3_b_vv_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; - vadd3_b_vx_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; - vadd3_h_vv : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; - vadd3_h_vx : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; - vadd3_h_vv_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; - vadd3_h_vx_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; - vadd3_w_vv : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; - vadd3_w_vx : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; - vadd3_w_vv_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; - vadd3_w_vx_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; - - //vadds - vadds_b_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vadds_b_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vadds_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vadds_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vadds_h_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vadds_h_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vadds_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vadds_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vadds_w_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vadds_w_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vadds_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vadds_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - // vaddsu - vadds_u_b_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vadds_u_b_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vadds_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vadds_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vadds_u_h_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vadds_u_h_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vadds_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vadds_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vadds_u_w_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vadds_u_w_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vadds_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vadds_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vsubs - vsubs_b_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vsubs_b_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vsubs_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vsubs_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vsubs_h_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vsubs_h_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vsubs_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vsubs_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vsubs_w_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vsubs_w_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vsubs_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vsubs_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - // vsubsu - vsubs_u_b_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vsubs_u_b_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vsubs_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vsubs_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vsubs_u_h_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vsubs_u_h_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vsubs_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vsubs_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vsubs_u_w_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vsubs_u_w_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vsubs_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vsubs_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vaddw - vaddw_h_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vaddw_h_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vaddw_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vaddw_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vaddw_w_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vaddw_w_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vaddw_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vaddw_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vaddwu - vaddw_h_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vaddw_h_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vaddw_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vaddw_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vaddw_w_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vaddw_w_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vaddw_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vaddw_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vsubw - vsubw_h_vv : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vsubw_h_vx : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vsubw_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vsubw_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vsubw_w_vv : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vsubw_w_vx : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vsubw_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vsubw_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vsubwu - vsubw_h_u_vv : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vsubw_h_u_vx : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vsubw_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vsubw_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vsubw_w_u_vv : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vsubw_w_u_vx : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vsubw_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vsubw_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vacc - vacc_h_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vacc_h_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vacc_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vacc_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vacc_w_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vacc_w_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vacc_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vacc_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vaccu - vacc_h_u_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vacc_h_u_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vacc_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vacc_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vacc_w_u_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vacc_w_u_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vacc_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vacc_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vpadd - vpadd_h_v : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vpadd_h_v_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vpadd_w_v : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vpadd_w_v_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vpaddu - vpadd_h_u_v : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vpadd_h_u_v_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vpadd_w_u_v : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vpadd_w_u_v_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vpsub - vpsub_h_v : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vpsub_h_v_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vpsub_w_v : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vpsub_w_v_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vpsubu - vpsub_h_u_v : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vpsub_h_u_v_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vpsub_w_u_v : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vpsub_w_u_v_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vhadd - vhadd_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vhadd_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vhadd_w_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_w_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vhadd.r - vhadd_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vhadd_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vhadd_w_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_w_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_w_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_w_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vhadd.u - vhadd_b_u_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_b_u_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_b_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_b_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vhadd_h_u_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_h_u_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_h_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_h_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vhadd_w_u_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_w_u_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_w_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_w_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vhadd.ur - vhadd_b_ur_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_b_ur_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_b_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_b_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vhadd_h_ur_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_h_ur_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_h_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_h_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vhadd_w_ur_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vhadd_w_ur_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vhadd_w_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vhadd_w_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vhsub - vhsub_b_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_b_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vhsub_h_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_h_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vhsub_w_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_w_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vhsub.r - vhsub_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vhsub_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vhsub_w_r_vv : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_w_r_vx : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_w_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_w_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vhsub.u - vhsub_b_u_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_b_u_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_b_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_b_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vhsub_h_u_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_h_u_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_h_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_h_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vhsub_w_u_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_w_u_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_w_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_w_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vhsub.ur - vhsub_b_ur_vv : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_b_ur_vx : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_b_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_b_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; - vhsub_h_ur_vv : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_h_ur_vx : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_h_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_h_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; - vhsub_w_ur_vv : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; - vhsub_w_ur_vx : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; - vhsub_w_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; - vhsub_w_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; - - //vand - vand_vv : KelvinV2ArgsType : func2 == 0b00'0000, m == 0b00, func1 == 0b001, form == 0b00; - vand_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, m == 0b01, func1 == 0b001, form == 0b00; - vand_b_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; - vand_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; - vand_h_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; - vand_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; - vand_w_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; - vand_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; - - //vor - vor_vv : KelvinV2ArgsType : func2 == 0b00'0001, m == 0b00, func1 == 0b001, form == 0b00; - vor_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, m == 0b01, func1 == 0b001, form == 0b00; - vor_b_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; - vor_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; - vor_h_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; - vor_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; - vor_w_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; - vor_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; - - //vxor - vxor_vv : KelvinV2ArgsType : func2 == 0b00'0010, m == 0b00, func1 == 0b001, form == 0b00; - vxor_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, m == 0b01, func1 == 0b001, form == 0b00; - vxor_b_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; - vxor_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; - vxor_h_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; - vxor_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; - vxor_w_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; - vxor_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; - - //vrev - vrev_b_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; - vrev_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; - vrev_h_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; - vrev_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; - vrev_w_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; - vrev_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; - - //vror - vror_b_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; - vror_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; - vror_h_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; - vror_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; - vror_w_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; - vror_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; - - //vmvp - vmvp_vv : KelvinV2ArgsType : func2 == 0b00'1101, m == 0b00, func1 == 0b001, form == 0b00; - vmvp_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, m == 0b01, func1 == 0b001, form == 0b00; - vmvp_b_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; - vmvp_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; - vmvp_h_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; - vmvp_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; - vmvp_w_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; - vmvp_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; - - //vsll - vsll_b_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsll_b_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsll_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsll_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsll_h_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsll_h_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vsll_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsll_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - vsll_w_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vsll_w_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b10; - vsll_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - vsll_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b10; - - //vsra - vsra_b_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsra_b_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsra_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsra_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsra_h_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsra_h_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vsra_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsra_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - vsra_w_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vsra_w_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b10; - vsra_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - vsra_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b10; - - //vsrl - vsrl_b_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsrl_b_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsrl_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsrl_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsrl_h_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsrl_h_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vsrl_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsrl_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - vsrl_w_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vsrl_w_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b10; - vsrl_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - vsrl_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b10; - - //vsha - vsha_b_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsha_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsha_h_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsha_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsha_w_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vsha_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - vsha_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsha_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsha_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsha_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsha_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vsha_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - - //vshl - vshl_b_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vshl_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vshl_h_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vshl_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vshl_w_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vshl_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - vshl_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vshl_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vshl_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vshl_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vshl_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vshl_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - - //vnot - vnot_v : KelvinV2ArgsType : func2 == 0b00'0011, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vnot_v_m : KelvinV2ArgsType : func2 == 0b00'0011, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - - //vclb - vclb_b_v : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vclb_b_v_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - vclb_h_v : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vclb_h_v_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - vclb_w_v : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vclb_w_v_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - - //vclz - vclz_b_v : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vclz_b_v_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - vclz_h_v : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vclz_h_v_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - vclz_w_v : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vclz_w_v_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - - //vcpop - vcpop_b_v : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vcpop_b_v_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - vcpop_h_v : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vcpop_h_v_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - vcpop_w_v : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vcpop_w_v_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - - //vmv - vmv_v : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; - vmv_v_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; - - //vsrans - vsrans_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsrans_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsrans_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsrans_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsrans_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsrans_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vsrans_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsrans_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - vsrans_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsrans_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsrans_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsrans_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsrans_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsrans_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vsrans_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsrans_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - - //vsransu - vsransu_b_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsransu_b_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsransu_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsransu_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsransu_h_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsransu_h_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vsransu_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsransu_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - vsransu_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsransu_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsransu_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsransu_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsransu_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsransu_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vsransu_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsransu_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - - //vsraqs - vsraqs_b_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsraqs_b_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsraqs_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsraqs_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsraqs_b_r_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsraqs_b_r_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsraqs_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsraqs_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - - //vsraqsu - vsraqsu_b_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsraqsu_b_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsraqsu_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsraqsu_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsraqsu_b_r_vv : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsraqsu_b_r_vx : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsraqsu_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsraqsu_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - - //vmul - vmul_b_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vmul_b_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vmul_b_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vmul_b_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vmul_h_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmul_h_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmul_h_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmul_h_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmul_w_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmul_w_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmul_w_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmul_w_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vmuls - vmuls_b_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vmuls_b_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vmuls_b_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vmuls_b_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vmuls_h_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmuls_h_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmuls_h_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmuls_h_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmuls_w_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmuls_w_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmuls_w_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmuls_w_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vmulsu - vmulsu_b_vv : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vmulsu_b_vx : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vmulsu_b_vv_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vmulsu_b_vx_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vmulsu_h_vv : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmulsu_h_vx : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmulsu_h_vv_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmulsu_h_vx_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmulsu_w_vv : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmulsu_w_vx : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmulsu_w_vv_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmulsu_w_vx_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vmulw - vmulw_h_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmulw_h_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmulw_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmulw_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmulw_w_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmulw_w_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmulw_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmulw_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vmulwu - vmulw_h_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmulw_h_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmulw_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmulw_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmulw_w_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmulw_w_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmulw_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmulw_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vmulh - vmulh_b_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_b_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vmulh_h_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_h_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmulh_w_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_w_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vmulh.r - vmulh_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_b_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_b_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vmulh_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_h_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_h_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmulh_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_w_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_w_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vmulh.u - vmulh_b_u_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_b_u_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_b_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_b_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vmulh_h_u_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_h_u_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmulh_w_u_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_w_u_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vmulh.ur - vmulh_b_ur_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_b_ur_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_b_ur_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_b_ur_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vmulh_h_ur_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_h_ur_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_h_ur_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_h_ur_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmulh_w_ur_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmulh_w_ur_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmulh_w_ur_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmulh_w_ur_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vdmulh - vdmulh_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vdmulh_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vdmulh_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vdmulh_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vdmulh_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vdmulh_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vdmulh_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vdmulh_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vdmulh_w_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vdmulh_w_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vdmulh_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vdmulh_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vdmulh.r - vdmulh_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vdmulh_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vdmulh_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vdmulh_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vdmulh_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vdmulh_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vdmulh_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vdmulh_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vdmulh_w_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vdmulh_w_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vdmulh_w_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vdmulh_w_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vdmulh.rn - vdmulh_b_rn_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vdmulh_b_rn_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vdmulh_b_rn_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vdmulh_b_rn_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vdmulh_h_rn_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vdmulh_h_rn_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vdmulh_h_rn_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vdmulh_h_rn_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vdmulh_w_rn_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vdmulh_w_rn_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vdmulh_w_rn_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vdmulh_w_rn_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vmacc - vmacc_b_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vmacc_b_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vmacc_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vmacc_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vmacc_h_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmacc_h_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmacc_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmacc_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmacc_w_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmacc_w_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmacc_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmacc_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vmadd - vmadd_b_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; - vmadd_b_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; - vmadd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; - vmadd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; - vmadd_h_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; - vmadd_h_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; - vmadd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; - vmadd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; - vmadd_w_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; - vmadd_w_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; - vmadd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; - vmadd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; - - //vslidevn - vsliden_b_1_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_b_2_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_b_3_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_b_4_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_h_1_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_h_2_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_h_3_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_h_4_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_w_1_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_w_2_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_w_3_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vsliden_w_4_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vslidevn_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidevn_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - - //vslidehn - vslidehn_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidehn_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - - //vslidevp - vslidep_b_1_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_b_2_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_b_3_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_b_4_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_h_1_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_h_2_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_h_3_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_h_4_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_w_1_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_w_2_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_w_3_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vslidep_w_4_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vslidevp_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidevp_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - - //vslidehp - vslidehp_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vslidehp_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - - //vsel - vsel_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vsel_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b10; - vsel_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vsel_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b10; - vsel_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vsel_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b10; - vsel_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vsel_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b10; - vsel_w_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vsel_w_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b10; - vsel_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vsel_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b10; - - //vevn - vevn_b_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vevn_b_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b10; - vevn_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vevn_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b10; - vevn_h_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vevn_h_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b10; - vevn_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vevn_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b10; - vevn_w_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vevn_w_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b10; - vevn_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vevn_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b10; - - //vodd - vodd_b_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vodd_b_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b10; - vodd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vodd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b10; - vodd_h_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vodd_h_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b10; - vodd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vodd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b10; - vodd_w_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vodd_w_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b10; - vodd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vodd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b10; - - //vevnodd - vevnodd_b_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vevnodd_b_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b10; - vevnodd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vevnodd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b10; - vevnodd_h_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vevnodd_h_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b10; - vevnodd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vevnodd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b10; - vevnodd_w_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vevnodd_w_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b10; - vevnodd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vevnodd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b10; - - //vzip - vzip_b_vv : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; - vzip_b_vx : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b10; - vzip_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; - vzip_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b10; - vzip_h_vv : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; - vzip_h_vx : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b10; - vzip_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; - vzip_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b10; - vzip_w_vv : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; - vzip_w_vx : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b10; - vzip_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; - vzip_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b10; - - //vld - vld_b_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vld_h_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vld_w_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vld_b_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vld_h_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vld_w_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vld_b_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vld_h_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vld_w_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vld_b_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vld_h_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vld_w_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vld_b_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vld_h_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vld_w_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vld_b_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vld_h_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vld_w_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vld_b_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vld_h_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vld_w_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vld_b_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vld_h_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vld_w_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vld_b_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vld_h_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vld_w_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vld_b_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vld_h_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vld_w_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vld_b_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vld_h_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vld_w_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vld_b_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vld_h_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vld_w_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vld_b_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vld_h_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vld_w_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vld_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vld_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vld_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vld_b_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vld_h_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vld_w_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vld_b_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vld_h_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vld_w_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - - // vst, note the `vs2`s below are actually xs2, and `vd` is actually the source vector register. - vst_b_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vst_h_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vst_w_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vst_b_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vst_h_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vst_w_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vst_b_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vst_h_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vst_w_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vst_b_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vst_h_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vst_w_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vst_b_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vst_h_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vst_w_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vst_b_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vst_h_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vst_w_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vst_b_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vst_h_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vst_w_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vst_b_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vst_h_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vst_w_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vst_b_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vst_h_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vst_w_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vst_b_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vst_h_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vst_w_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vst_b_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vst_h_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vst_w_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vst_b_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vst_h_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vst_w_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vst_b_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vst_h_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vst_w_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vst_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vst_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vst_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vst_b_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vst_h_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vst_w_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vst_b_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vst_h_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vst_w_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vstq_b_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vstq_h_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vstq_w_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vstq_b_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vstq_h_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vstq_w_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vstq_b_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vstq_h_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vstq_w_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; - vstq_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vstq_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vstq_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; -}; +#include "sim/kelvin_format.bin_fmt" +#include "sim/kelvin_arith.bin_fmt" +#include "sim/kelvin_base.bin_fmt" +#include "sim/kelvin_memory.bin_fmt" +#include "sim/kelvin_mul.bin_fmt" +#include "sim/kelvin_shift.bin_fmt"
diff --git a/sim/kelvin_arith.bin_fmt b/sim/kelvin_arith.bin_fmt new file mode 100644 index 0000000..ac657dd --- /dev/null +++ b/sim/kelvin_arith.bin_fmt
@@ -0,0 +1,590 @@ +instruction group KelvinVectorArithInst[32] : KelvinV2ArgsType { + // Kelvin Arithmetic Vector instructions (func1 000/100/001). + // vadd + vadd_b_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vadd_b_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vadd_b_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vadd_b_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vadd_h_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vadd_h_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vadd_h_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vadd_h_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vadd_w_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vadd_w_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vadd_w_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vadd_w_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vsub + vsub_b_vv : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vsub_b_vx : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vsub_b_vv_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vsub_b_vx_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vsub_h_vv : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vsub_h_vx : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vsub_h_vv_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vsub_h_vx_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vsub_w_vv : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vsub_w_vx : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vsub_w_vv_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vsub_w_vx_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vrsub + vrsub_b_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vrsub_b_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vrsub_b_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vrsub_b_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vrsub_h_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vrsub_h_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vrsub_h_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vrsub_h_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vrsub_w_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vrsub_w_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vrsub_w_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vrsub_w_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // veq + veq_b_vv : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + veq_b_vx : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + veq_b_vv_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + veq_b_vx_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + veq_h_vv : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + veq_h_vx : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + veq_h_vv_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + veq_h_vx_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + veq_w_vv : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + veq_w_vx : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + veq_w_vv_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + veq_w_vx_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vne + vne_b_vv : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vne_b_vx : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vne_b_vv_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vne_b_vx_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vne_h_vv : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vne_h_vx : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vne_h_vv_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vne_h_vx_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vne_w_vv : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vne_w_vx : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vne_w_vv_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vne_w_vx_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vlt + vlt_b_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vlt_b_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vlt_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vlt_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vlt_h_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vlt_h_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vlt_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vlt_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vlt_w_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vlt_w_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vlt_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vlt_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vltu + vlt_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vlt_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vlt_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vlt_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vlt_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vlt_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vlt_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vlt_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vlt_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vlt_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vlt_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vlt_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vle + vle_b_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vle_b_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vle_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vle_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vle_h_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vle_h_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vle_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vle_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vle_w_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vle_w_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vle_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vle_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vleu + vle_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vle_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vle_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vle_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vle_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vle_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vle_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vle_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vle_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vle_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vle_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vle_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vgt + vgt_b_vv : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vgt_b_vx : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vgt_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vgt_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vgt_h_vv : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vgt_h_vx : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vgt_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vgt_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vgt_w_vv : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vgt_w_vx : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vgt_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vgt_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vgtu + vgt_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vgt_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vgt_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vgt_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vgt_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vgt_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vgt_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vgt_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vgt_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vgt_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vgt_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vgt_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vge + vge_b_vv : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vge_b_vx : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vge_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vge_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vge_h_vv : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vge_h_vx : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vge_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vge_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vge_w_vv : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vge_w_vx : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vge_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vge_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vgeu + vge_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vge_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vge_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vge_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vge_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vge_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vge_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vge_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vge_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vge_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vge_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vge_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vabsd + vabsd_b_vv : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vabsd_b_vx : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vabsd_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vabsd_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vabsd_h_vv : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vabsd_h_vx : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vabsd_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vabsd_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vabsd_w_vv : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vabsd_w_vx : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vabsd_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vabsd_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vabsdu + vabsd_u_b_vv : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vabsd_u_b_vx : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vabsd_u_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vabsd_u_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vabsd_u_h_vv : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vabsd_u_h_vx : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vabsd_u_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vabsd_u_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vabsd_u_w_vv : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vabsd_u_w_vx : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vabsd_u_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vabsd_u_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vmax + vmax_b_vv : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vmax_b_vx : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vmax_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vmax_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vmax_h_vv : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vmax_h_vx : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vmax_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vmax_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vmax_w_vv : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vmax_w_vx : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vmax_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vmax_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vmaxu + vmax_u_b_vv : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vmax_u_b_vx : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vmax_u_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vmax_u_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vmax_u_h_vv : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vmax_u_h_vx : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vmax_u_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vmax_u_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vmax_u_w_vv : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vmax_u_w_vx : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vmax_u_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vmax_u_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vmin + vmin_b_vv : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vmin_b_vx : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vmin_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vmin_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vmin_h_vv : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vmin_h_vx : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vmin_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vmin_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vmin_w_vv : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vmin_w_vx : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vmin_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vmin_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vminu + vmin_u_b_vv : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vmin_u_b_vx : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vmin_u_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vmin_u_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vmin_u_h_vv : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vmin_u_h_vx : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vmin_u_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vmin_u_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vmin_u_w_vv : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vmin_u_w_vx : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vmin_u_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vmin_u_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + // vadd3 + vadd3_b_vv : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b00; + vadd3_b_vx : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b00, func1 == 0b000, form == 0b10; + vadd3_b_vv_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b00; + vadd3_b_vx_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b01, func1 == 0b000, form == 0b10; + vadd3_h_vv : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b00; + vadd3_h_vx : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b00, func1 == 0b000, form == 0b10; + vadd3_h_vv_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b00; + vadd3_h_vx_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b01, func1 == 0b000, form == 0b10; + vadd3_w_vv : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b00; + vadd3_w_vx : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b00, func1 == 0b000, form == 0b10; + vadd3_w_vv_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b00; + vadd3_w_vx_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b01, func1 == 0b000, form == 0b10; + + //vadds + vadds_b_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vadds_b_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vadds_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vadds_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vadds_h_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vadds_h_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vadds_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vadds_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vadds_w_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vadds_w_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vadds_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vadds_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + // vaddsu + vadds_u_b_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vadds_u_b_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vadds_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vadds_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vadds_u_h_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vadds_u_h_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vadds_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vadds_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vadds_u_w_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vadds_u_w_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vadds_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vadds_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vsubs + vsubs_b_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vsubs_b_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vsubs_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vsubs_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vsubs_h_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vsubs_h_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vsubs_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vsubs_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vsubs_w_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vsubs_w_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vsubs_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vsubs_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + // vsubsu + vsubs_u_b_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vsubs_u_b_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vsubs_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vsubs_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vsubs_u_h_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vsubs_u_h_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vsubs_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vsubs_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vsubs_u_w_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vsubs_u_w_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vsubs_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vsubs_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vaddw + vaddw_h_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vaddw_h_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vaddw_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vaddw_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vaddw_w_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vaddw_w_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vaddw_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vaddw_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vaddwu + vaddw_h_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vaddw_h_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vaddw_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vaddw_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vaddw_w_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vaddw_w_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vaddw_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vaddw_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vsubw + vsubw_h_vv : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vsubw_h_vx : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vsubw_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vsubw_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vsubw_w_vv : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vsubw_w_vx : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vsubw_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vsubw_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vsubwu + vsubw_h_u_vv : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vsubw_h_u_vx : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vsubw_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vsubw_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vsubw_w_u_vv : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vsubw_w_u_vx : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vsubw_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vsubw_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vacc + vacc_h_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vacc_h_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vacc_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vacc_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vacc_w_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vacc_w_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vacc_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vacc_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vaccu + vacc_h_u_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vacc_h_u_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vacc_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vacc_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vacc_w_u_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vacc_w_u_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vacc_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vacc_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vpadd + vpadd_h_v : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vpadd_h_v_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vpadd_w_v : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vpadd_w_v_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vpaddu + vpadd_h_u_v : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vpadd_h_u_v_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vpadd_w_u_v : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vpadd_w_u_v_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vpsub + vpsub_h_v : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vpsub_h_v_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vpsub_w_v : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vpsub_w_v_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vpsubu + vpsub_h_u_v : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vpsub_h_u_v_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vpsub_w_u_v : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vpsub_w_u_v_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vhadd + vhadd_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vhadd_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vhadd_w_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_w_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vhadd.r + vhadd_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vhadd_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vhadd_w_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_w_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_w_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_w_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vhadd.u + vhadd_b_u_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_b_u_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_b_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_b_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vhadd_h_u_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_h_u_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_h_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_h_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vhadd_w_u_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_w_u_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_w_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_w_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vhadd.ur + vhadd_b_ur_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_b_ur_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_b_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_b_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vhadd_h_ur_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_h_ur_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_h_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_h_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vhadd_w_ur_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vhadd_w_ur_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vhadd_w_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vhadd_w_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vhsub + vhsub_b_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_b_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vhsub_h_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_h_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vhsub_w_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_w_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vhsub.r + vhsub_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vhsub_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vhsub_w_r_vv : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_w_r_vx : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_w_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_w_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vhsub.u + vhsub_b_u_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_b_u_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_b_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_b_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vhsub_h_u_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_h_u_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_h_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_h_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vhsub_w_u_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_w_u_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_w_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_w_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vhsub.ur + vhsub_b_ur_vv : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_b_ur_vx : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_b_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_b_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b01, func1 == 0b100, form == 0b10; + vhsub_h_ur_vv : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_h_ur_vx : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_h_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_h_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b01, func1 == 0b100, form == 0b10; + vhsub_w_ur_vv : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b00; + vhsub_w_ur_vx : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b00, func1 == 0b100, form == 0b10; + vhsub_w_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b00; + vhsub_w_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b01, func1 == 0b100, form == 0b10; + + //vand + vand_vv : KelvinV2ArgsType : func2 == 0b00'0000, m == 0b00, func1 == 0b001, form == 0b00; + vand_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, m == 0b01, func1 == 0b001, form == 0b00; + vand_b_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; + vand_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; + vand_h_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; + vand_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; + vand_w_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; + vand_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; + + //vor + vor_vv : KelvinV2ArgsType : func2 == 0b00'0001, m == 0b00, func1 == 0b001, form == 0b00; + vor_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, m == 0b01, func1 == 0b001, form == 0b00; + vor_b_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; + vor_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; + vor_h_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; + vor_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; + vor_w_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; + vor_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; + + //vxor + vxor_vv : KelvinV2ArgsType : func2 == 0b00'0010, m == 0b00, func1 == 0b001, form == 0b00; + vxor_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, m == 0b01, func1 == 0b001, form == 0b00; + vxor_b_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; + vxor_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; + vxor_h_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; + vxor_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; + vxor_w_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; + vxor_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; + + //vrev + vrev_b_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; + vrev_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; + vrev_h_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; + vrev_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; + vrev_w_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; + vrev_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; + + //vror + vror_b_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; + vror_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; + vror_h_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; + vror_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; + vror_w_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; + vror_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; + + //vmvp + vmvp_vv : KelvinV2ArgsType : func2 == 0b00'1101, m == 0b00, func1 == 0b001, form == 0b00; + vmvp_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, m == 0b01, func1 == 0b001, form == 0b00; + vmvp_b_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; + vmvp_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; + vmvp_h_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; + vmvp_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; + vmvp_w_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; + vmvp_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; +};
diff --git a/sim/kelvin_base.bin_fmt b/sim/kelvin_base.bin_fmt new file mode 100644 index 0000000..22dca32 --- /dev/null +++ b/sim/kelvin_base.bin_fmt
@@ -0,0 +1,112 @@ + +// Kelvin base (non-vector) instruction group. + +instruction group KelvinInst[32] : Inst32Format { + lui : UType : opcode == 0b011'0111; + auipc : UType : opcode == 0b001'0111; + jal : JType : rd != 0, opcode == 0b110'1111; + j : JType : rd == 0, opcode == 0b110'1111; + jalr : IType : rd != 0, func3 == 0b000, opcode == 0b110'0111; + jr : IType : rd == 0, func3 == 0b000, opcode == 0b110'0111; + beq : BType : func3 == 0b000, opcode == 0b110'0011; + bne : BType : func3 == 0b001, opcode == 0b110'0011; + blt : BType : func3 == 0b100, opcode == 0b110'0011; + bge : BType : func3 == 0b101, opcode == 0b110'0011; + bltu : BType : func3 == 0b110, opcode == 0b110'0011; + bgeu : BType : func3 == 0b111, opcode == 0b110'0011; + lb : BType : func3 == 0b000, opcode == 0b000'0011; + lh : BType : func3 == 0b001, opcode == 0b000'0011; + lw : BType : func3 == 0b010, opcode == 0b000'0011; + lbu : BType : func3 == 0b100, opcode == 0b000'0011; + lhu : BType : func3 == 0b101, opcode == 0b000'0011; + sb : SType : func3 == 0b000, opcode == 0b010'0011; + sh : SType : func3 == 0b001, opcode == 0b010'0011; + sw : SType : func3 == 0b010, opcode == 0b010'0011; + addi : IType : func3 == 0b000, opcode == 0b001'0011; + slti : IType : func3 == 0b010, opcode == 0b001'0011; + sltiu : IType : func3 == 0b011, opcode == 0b001'0011; + xori : IType : func3 == 0b100, opcode == 0b001'0011; + ori : IType : func3 == 0b110, opcode == 0b001'0011; + andi : IType : func3 == 0b111, opcode == 0b001'0011; + slli : RType : func7 == 0b000'0000, func3==0b001, opcode == 0b001'0011; + srli : RType : func7 == 0b000'0000, func3==0b101, opcode == 0b001'0011; + srai : RType : func7 == 0b010'0000, func3==0b101, opcode == 0b001'0011; + add : RType : func7 == 0b000'0000, func3==0b000, opcode == 0b011'0011; + sub : RType : func7 == 0b010'0000, func3==0b000, opcode == 0b011'0011; + sll : RType : func7 == 0b000'0000, func3==0b001, opcode == 0b011'0011; + slt : RType : func7 == 0b000'0000, func3==0b010, opcode == 0b011'0011; + sltu : RType : func7 == 0b000'0000, func3==0b011, opcode == 0b011'0011; + xor : RType : func7 == 0b000'0000, func3==0b100, opcode == 0b011'0011; + srl : RType : func7 == 0b000'0000, func3==0b101, opcode == 0b011'0011; + sra : RType : func7 == 0b010'0000, func3==0b101, opcode == 0b011'0011; + or : RType : func7 == 0b000'0000, func3==0b110, opcode == 0b011'0011; + and : RType : func7 == 0b000'0000, func3==0b111, opcode == 0b011'0011; + fence : Fence : func3 == 0b000, opcode == 0b000'1111; + ecall : Inst32Format : bits == 0b0000'0000'0000'00000'000'00000, opcode == 0b111'0011; + ebreak : Inst32Format : bits == 0b0000'0000'0001'00000'000'00000, opcode == 0b111'0011; + // RiscV32 Instruction fence. + fencei : IType : func3 == 001, opcode == 0b000'1111; + // RiscV32 multiply divide. + mul : RType : func7 == 0b000'0001, func3 == 0b000, opcode == 0b011'0011; + mulh : RType : func7 == 0b000'0001, func3 == 0b001, opcode == 0b011'0011; + mulhsu : RType : func7 == 0b000'0001, func3 == 0b010, opcode == 0b011'0011; + mulhu : RType : func7 == 0b000'0001, func3 == 0b011, opcode == 0b011'0011; + div : RType : func7 == 0b000'0001, func3 == 0b100, opcode == 0b011'0011; + divu : RType : func7 == 0b000'0001, func3 == 0b101, opcode == 0b011'0011; + rem : RType : func7 == 0b000'0001, func3 == 0b110, opcode == 0b011'0011; + remu : RType : func7 == 0b000'0001, func3 == 0b111, opcode == 0b011'0011; + // RiscV32 CSR manipulation instructions. + csrrw : IType : func3 == 0b001, rd != 0, opcode == 0b111'0011; + csrrs : IType : func3 == 0b010, rs1 != 0, rd != 0, opcode == 0b111'0011; + csrrc : IType : func3 == 0b011, rs1 != 0, rd != 0, opcode == 0b111'0011; + csrrs_nr : IType : func3 == 0b010, rs1 != 0, rd == 0, opcode == 0b111'0011; + csrrc_nr : IType : func3 == 0b011, rs1 != 0, rd == 0, opcode == 0b111'0011; + csrrw_nr : IType : func3 == 0b001, rd == 0, opcode == 0b111'0011; + csrrs_nw : IType : func3 == 0b010, rs1 == 0, opcode == 0b111'0011; + csrrc_nw : IType : func3 == 0b011, rs1 == 0, opcode == 0b111'0011; + csrrwi : IType : func3 == 0b101, rd != 0, opcode == 0b111'0011; + csrrsi : IType : func3 == 0b110, rs1 != 0, rd != 0, opcode == 0b111'0011; + csrrci : IType : func3 == 0b111, rs1 != 0, rd != 0, opcode == 0b111'0011; + csrrsi_nr: IType : func3 == 0b110, rs1 != 0, rd == 0, opcode == 0b111'0011; + csrrci_nr: IType : func3 == 0b111, rs1 != 0, rd == 0, opcode == 0b111'0011; + csrrwi_nr: IType : func3 == 0b101, rd == 0, opcode == 0b111'0011; + csrrsi_nw: IType : func3 == 0b110, rs1 == 0, opcode == 0b111'0011; + csrrci_nw: IType : func3 == 0b111, rs1 == 0, opcode == 0b111'0011; + // RiscV32 Privileged instructions. + uret : Inst32Format : bits == 0b000'0000'00010'00000'000'00000, opcode == 0b111'0011; + sret : Inst32Format : bits == 0b000'1000'00010'00000'000'00000, opcode == 0b111'0011; + mret : Inst32Format : bits == 0b001'1000'00010'00000'000'00000, opcode == 0b111'0011; + wfi : Inst32Format : bits == 0b000'1000'00101'00000'000'00000, opcode == 0b111'0011; + mpause : Inst32Format : bits == 0b000'0100'00000'00000'000'00000, opcode == 0b111'0011; + sfence_vma_zz : RType : func7 == 0b000'1001, rs2 == 0, rs1 == 0, func3 == 0, rd == 0, opcode == 0b111'0011; + sfence_vma_zn : RType : func7 == 0b000'1001, rs2 != 0, rs1 == 0, func3 == 0, rd == 0, opcode == 0b111'0011; + sfence_vma_nz : RType : func7 == 0b000'1001, rs2 == 0, rs1 != 0, func3 == 0, rd == 0, opcode == 0b111'0011; + sfence_vma_nn : RType : func7 == 0b000'1001, rs2 != 0, rs1 != 0, func3 == 0, rd == 0, opcode == 0b111'0011; + // Kelvin memory flush instructions. + flushall : Inst32Format : bits == 0b001'0011'00000'00000'000'00000, opcode == 0b111'0111; + flushat : RType : func7 == 0b001'0011, rs2 == 0, rs1 != 0, func3 == 0, rd == 0, opcode == 0b111'0111; + // Kelvin system instructions. + getmaxvl_b : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b00, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getmaxvl_h : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b01, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getmaxvl_w : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b10, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_b_x : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b00, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_h_x : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b01, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_w_x : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b10, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_b_xx : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b00, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_h_xx : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b01, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_w_xx : KelvinSystemType : func2 == 0b0001, m == 0, mode == 0b10, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getmaxvl_b_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b00, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getmaxvl_h_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b01, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getmaxvl_w_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b10, rs2 == 0, rs1 == 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_b_x_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b00, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_h_x_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b01, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_w_x_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b10, rs2 == 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_b_xx_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b00, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_h_xx_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b01, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + getvl_w_xx_m : KelvinSystemType : func2 == 0b0001, m == 1, mode == 0b10, rs2 != 0, rs1 != 0, func1 == 0, rd != 0, opcode == 0b111'0111; + // Kelvin log instructions. + flog : KelvinSystemType : func2 == 0b0111, m == 1, mode == 0, rs2 == 0, rs1 != 0, func1 == 0, rd == 0, opcode == 0b111'0111; + slog : KelvinSystemType : func2 == 0b0111, m == 1, mode == 0, rs2 == 0, rs1 != 0, func1 == 1, rd == 0, opcode == 0b111'0111; + clog : KelvinSystemType : func2 == 0b0111, m == 1, mode == 0, rs2 == 0, rs1 != 0, func1 == 2, rd == 0, opcode == 0b111'0111; + klog : KelvinSystemType : func2 == 0b0111, m == 1, mode == 0, rs2 == 0, rs1 != 0, func1 == 3, rd == 0, opcode == 0b111'0111; +};
diff --git a/sim/kelvin_encoding.cc b/sim/kelvin_encoding.cc index 76a3cfe..1f1f544 100644 --- a/sim/kelvin_encoding.cc +++ b/sim/kelvin_encoding.cc
@@ -9,6 +9,7 @@ #include "sim/kelvin_decoder.h" #include "sim/kelvin_enums.h" #include "sim/kelvin_state.h" +#include "absl/functional/any_invocable.h" #include "absl/log/log.h" #include "absl/strings/str_cat.h" #include "absl/types/span.h" @@ -311,9 +312,17 @@ // Parse the instruction word to determine the opcode. void KelvinEncoding::ParseInstruction(uint32_t inst_word) { inst_word_ = inst_word; - opcode_ = encoding::DecodeKelvinInst(inst_word_); - if (opcode_ == OpcodeEnum::kNone) - opcode_ = encoding::DecodeKelvinVectorInst(inst_word_); + std::vector<absl::AnyInvocable<isa32::OpcodeEnum(uint32_t inst_word)>> + decode_functions; + decode_functions.push_back(encoding::DecodeKelvinInst); + decode_functions.push_back(encoding::DecodeKelvinVectorArithInst); + decode_functions.push_back(encoding::DecodeKelvinVectorMemoryInst); + decode_functions.push_back(encoding::DecodeKelvinVectorMulInst); + decode_functions.push_back(encoding::DecodeKelvinVectorShiftInst); + for (auto &function : decode_functions) { + opcode_ = function(inst_word_); + if (opcode_ != OpcodeEnum::kNone) break; + } } DestinationOperandInterface *KelvinEncoding::GetDestination(SlotEnum, int,
diff --git a/sim/kelvin_format.bin_fmt b/sim/kelvin_format.bin_fmt new file mode 100644 index 0000000..17f2114 --- /dev/null +++ b/sim/kelvin_format.bin_fmt
@@ -0,0 +1,115 @@ +format Inst32Format[32] { + fields: + unsigned bits[25]; + unsigned opcode[7]; +}; + +// Risc-V R-Type format. +format RType[32] : Inst32Format { + fields: + unsigned func7[7]; + unsigned rs2[5]; + unsigned rs1[5]; + unsigned func3[3]; + unsigned rd[5]; + unsigned opcode[7]; + overlays: + unsigned r_uimm5[5] = rs2; +}; + +// Risc-V I-Type format. +format IType[32] : Inst32Format { + fields: + signed imm12[12]; + unsigned rs1[5]; + unsigned func3[3]; + unsigned rd[5]; + unsigned opcode[7]; + overlays: + unsigned u_imm12[12] = imm12; + unsigned i_uimm5[5] = rs1; +}; + +// Risc-V S-Type format. +format SType[32] : Inst32Format { + fields: + unsigned imm7[7]; + unsigned rs2[5]; + unsigned rs1[5]; + unsigned func3[3]; + unsigned imm5[5]; + unsigned opcode[7]; + overlays: + signed s_imm[12] = imm7, imm5; +}; + +// Risc-V B-Type format. +format BType[32] : Inst32Format { + fields: + unsigned imm7[7]; + unsigned rs2[5]; + unsigned rs1[5]; + unsigned func3[3]; + unsigned imm5[5]; + unsigned opcode[7]; + overlays: + signed b_imm[13] = imm7[6], imm5[0], imm7[5..0], imm5[4..1], 0b0; +}; + +// Risc-V U-Type format. +format UType[32] : Inst32Format { + fields: + unsigned imm20[20]; + unsigned rd[5]; + unsigned opcode[7]; + overlays: + unsigned u_imm[32] = imm20, 0b0000'0000'0000; +}; + +// Risc-V J-Type format. +format JType[32] : Inst32Format { + fields: + unsigned imm20[20]; + unsigned rd[5]; + unsigned opcode[7]; + overlays: + signed j_imm[21] = imm20[19, 7..0, 8, 18..9], 0b0; +}; + +// Risc-V Fence format. +format Fence[32] : Inst32Format { + fields: + unsigned fm[4]; + unsigned pred[4]; + unsigned succ[4]; + unsigned rs1[5]; + unsigned func3[3]; + unsigned rd[5]; + unsigned opcode[7]; +}; + +// Kelvin system instruction format (cache, getvl). +format KelvinSystemType[32] : Inst32Format { + fields: + unsigned func2[4]; + unsigned m[1]; + unsigned mode[2]; + unsigned rs2[5]; + unsigned rs1[5]; + unsigned func1[3]; + unsigned rd[5]; + unsigned opcode[7]; +}; + +// Kelvin 2 args Vector format. +format KelvinV2ArgsType[32] { + fields: + unsigned func2[6]; + unsigned vs2[6]; + unsigned vs1[6]; + unsigned sz[2]; // .b==0b00, .h==0b01, .w==0b10 + unsigned vd[6]; + unsigned m[1]; + unsigned func1[3]; + unsigned form[2]; // .vv==0b00, .vx==0b10, .xx==0b11 +};
diff --git a/sim/kelvin_memory.bin_fmt b/sim/kelvin_memory.bin_fmt new file mode 100644 index 0000000..626d03f --- /dev/null +++ b/sim/kelvin_memory.bin_fmt
@@ -0,0 +1,115 @@ +instruction group KelvinVectorMemoryInst[32] : KelvinV2ArgsType { + // Kelvin Memory Vector instructions (Load / Store). + + //vld + vld_b_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vld_h_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vld_w_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vld_b_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vld_h_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vld_w_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vld_b_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vld_h_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vld_w_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vld_b_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vld_h_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vld_w_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vld_b_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vld_h_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vld_w_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vld_b_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vld_h_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vld_w_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vld_b_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vld_h_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vld_w_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vld_b_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vld_h_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vld_w_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vld_b_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vld_h_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vld_w_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vld_b_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vld_h_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vld_w_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vld_b_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vld_h_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vld_w_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vld_b_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vld_h_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vld_w_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vld_b_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vld_h_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vld_w_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vld_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vld_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vld_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vld_b_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vld_h_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vld_w_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vld_b_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vld_h_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vld_w_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + + // vst, note the `vs2`s below are actually xs2, and `vd` is actually the source vector register. + vst_b_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vst_h_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vst_w_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vst_b_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vst_h_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vst_w_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vst_b_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vst_h_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vst_w_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vst_b_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vst_h_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vst_w_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vst_b_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vst_h_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vst_w_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vst_b_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vst_h_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vst_w_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vst_b_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vst_h_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vst_w_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vst_b_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vst_h_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vst_w_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vst_b_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vst_h_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vst_w_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vst_b_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vst_h_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vst_w_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vst_b_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vst_h_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vst_w_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vst_b_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vst_h_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vst_w_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vst_b_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vst_h_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vst_w_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vst_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vst_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vst_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vst_b_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vst_h_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vst_w_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vst_b_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vst_h_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vst_w_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vstq_b_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vstq_h_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vstq_w_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vstq_b_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; + vstq_h_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; + vstq_w_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; + vstq_b_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vstq_h_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vstq_w_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vstq_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; + vstq_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; + vstq_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; +};
diff --git a/sim/kelvin_mul.bin_fmt b/sim/kelvin_mul.bin_fmt new file mode 100644 index 0000000..a23a2c5 --- /dev/null +++ b/sim/kelvin_mul.bin_fmt
@@ -0,0 +1,191 @@ +instruction group KelvinVectorMulInst[32] : KelvinV2ArgsType { + // Kelvin Vector Mul/Div instructions (func1 011). + + //vmul + vmul_b_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vmul_b_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vmul_b_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vmul_b_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vmul_h_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmul_h_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmul_h_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmul_h_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmul_w_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmul_w_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmul_w_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmul_w_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vmuls + vmuls_b_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vmuls_b_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vmuls_b_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vmuls_b_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vmuls_h_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmuls_h_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmuls_h_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmuls_h_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmuls_w_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmuls_w_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmuls_w_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmuls_w_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vmulsu + vmulsu_b_vv : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vmulsu_b_vx : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vmulsu_b_vv_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vmulsu_b_vx_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vmulsu_h_vv : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmulsu_h_vx : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmulsu_h_vv_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmulsu_h_vx_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmulsu_w_vv : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmulsu_w_vx : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmulsu_w_vv_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmulsu_w_vx_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vmulw + vmulw_h_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmulw_h_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmulw_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmulw_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmulw_w_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmulw_w_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmulw_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmulw_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vmulwu + vmulw_h_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmulw_h_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmulw_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmulw_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmulw_w_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmulw_w_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmulw_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmulw_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vmulh + vmulh_b_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_b_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vmulh_h_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_h_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmulh_w_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_w_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vmulh.r + vmulh_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_b_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_b_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vmulh_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_h_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_h_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmulh_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_w_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_w_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vmulh.u + vmulh_b_u_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_b_u_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_b_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_b_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vmulh_h_u_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_h_u_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmulh_w_u_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_w_u_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vmulh.ur + vmulh_b_ur_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_b_ur_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_b_ur_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_b_ur_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vmulh_h_ur_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_h_ur_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_h_ur_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_h_ur_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmulh_w_ur_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmulh_w_ur_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmulh_w_ur_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmulh_w_ur_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vdmulh + vdmulh_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vdmulh_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vdmulh_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vdmulh_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vdmulh_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vdmulh_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vdmulh_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vdmulh_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vdmulh_w_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vdmulh_w_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vdmulh_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vdmulh_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vdmulh.r + vdmulh_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vdmulh_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vdmulh_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vdmulh_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vdmulh_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vdmulh_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vdmulh_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vdmulh_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vdmulh_w_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vdmulh_w_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vdmulh_w_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vdmulh_w_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vdmulh.rn + vdmulh_b_rn_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vdmulh_b_rn_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vdmulh_b_rn_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vdmulh_b_rn_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vdmulh_h_rn_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vdmulh_h_rn_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vdmulh_h_rn_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vdmulh_h_rn_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vdmulh_w_rn_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vdmulh_w_rn_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vdmulh_w_rn_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vdmulh_w_rn_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vmacc + vmacc_b_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vmacc_b_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vmacc_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vmacc_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vmacc_h_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmacc_h_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmacc_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmacc_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmacc_w_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmacc_w_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmacc_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmacc_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; + + //vmadd + vmadd_b_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b00; + vmadd_b_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b00, func1 == 0b011, form == 0b10; + vmadd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b00; + vmadd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b01, func1 == 0b011, form == 0b10; + vmadd_h_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b00; + vmadd_h_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b00, func1 == 0b011, form == 0b10; + vmadd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b00; + vmadd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b01, func1 == 0b011, form == 0b10; + vmadd_w_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b00; + vmadd_w_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b00, func1 == 0b011, form == 0b10; + vmadd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b00; + vmadd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b01, func1 == 0b011, form == 0b10; +};
diff --git a/sim/kelvin_shift.bin_fmt b/sim/kelvin_shift.bin_fmt new file mode 100644 index 0000000..fb061ed --- /dev/null +++ b/sim/kelvin_shift.bin_fmt
@@ -0,0 +1,311 @@ +instruction group KelvinVectorShiftInst[32] : KelvinV2ArgsType { + // Kelvin Vector Shift / Shuffle instructions (func1 010/110). + + //vsll + vsll_b_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsll_b_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsll_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsll_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + vsll_h_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vsll_h_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; + vsll_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vsll_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; + vsll_w_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; + vsll_w_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b10; + vsll_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; + vsll_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b10; + + //vsra + vsra_b_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsra_b_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsra_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsra_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + vsra_h_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vsra_h_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; + vsra_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vsra_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; + vsra_w_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; + vsra_w_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b10; + vsra_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; + vsra_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b10; + + //vsrl + vsrl_b_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsrl_b_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsrl_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsrl_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + vsrl_h_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vsrl_h_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; + vsrl_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vsrl_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; + vsrl_w_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; + vsrl_w_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b10; + vsrl_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; + vsrl_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b10; + + //vsha + vsha_b_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsha_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsha_h_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vsha_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vsha_w_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; + vsha_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; + vsha_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsha_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsha_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vsha_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vsha_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; + vsha_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; + + //vshl + vshl_b_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vshl_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vshl_h_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vshl_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vshl_w_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; + vshl_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; + vshl_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vshl_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vshl_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vshl_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vshl_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; + vshl_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; + + //vnot + vnot_v : KelvinV2ArgsType : func2 == 0b00'0011, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vnot_v_m : KelvinV2ArgsType : func2 == 0b00'0011, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + + //vclb + vclb_b_v : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vclb_b_v_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + vclb_h_v : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vclb_h_v_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + vclb_w_v : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vclb_w_v_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + + //vclz + vclz_b_v : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vclz_b_v_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + vclz_h_v : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vclz_h_v_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + vclz_w_v : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vclz_w_v_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + + //vcpop + vcpop_b_v : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vcpop_b_v_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + vcpop_h_v : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vcpop_h_v_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + vcpop_w_v : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vcpop_w_v_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + + //vmv + vmv_v : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, m == 0b00, func1 == 0b001, form == 0b10; + vmv_v_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, m == 0b01, func1 == 0b001, form == 0b10; + + //vsrans + vsrans_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsrans_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsrans_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsrans_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + vsrans_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vsrans_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; + vsrans_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vsrans_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; + vsrans_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsrans_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsrans_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsrans_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + vsrans_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vsrans_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; + vsrans_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vsrans_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; + + //vsransu + vsransu_b_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsransu_b_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsransu_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsransu_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + vsransu_h_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vsransu_h_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; + vsransu_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vsransu_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; + vsransu_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsransu_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsransu_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsransu_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + vsransu_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; + vsransu_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; + vsransu_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; + vsransu_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; + + //vsraqs + vsraqs_b_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsraqs_b_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsraqs_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsraqs_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + vsraqs_b_r_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsraqs_b_r_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsraqs_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsraqs_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + + //vsraqsu + vsraqsu_b_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsraqsu_b_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsraqsu_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsraqsu_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + vsraqsu_b_r_vv : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; + vsraqsu_b_r_vx : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; + vsraqsu_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; + vsraqsu_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; + + //vslidevn + vsliden_b_1_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_b_2_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_b_3_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_b_4_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_h_1_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_h_2_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_h_3_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_h_4_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_w_1_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_w_2_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_w_3_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vsliden_w_4_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vslidevn_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidevn_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + + //vslidehn + vslidehn_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidehn_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + + //vslidevp + vslidep_b_1_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_b_2_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_b_3_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_b_4_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_h_1_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_h_2_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_h_3_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_h_4_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_w_1_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_w_2_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_w_3_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vslidep_w_4_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vslidevp_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidevp_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + + //vslidehp + vslidehp_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vslidehp_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + + //vsel + vsel_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vsel_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b10; + vsel_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vsel_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b10; + vsel_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vsel_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b10; + vsel_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vsel_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b10; + vsel_w_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vsel_w_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b10; + vsel_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vsel_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b10; + + //vevn + vevn_b_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vevn_b_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b10; + vevn_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vevn_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b10; + vevn_h_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vevn_h_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b10; + vevn_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vevn_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b10; + vevn_w_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vevn_w_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b10; + vevn_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vevn_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b10; + + //vodd + vodd_b_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vodd_b_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b10; + vodd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vodd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b10; + vodd_h_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vodd_h_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b10; + vodd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vodd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b10; + vodd_w_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vodd_w_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b10; + vodd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vodd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b10; + + //vevnodd + vevnodd_b_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vevnodd_b_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b10; + vevnodd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vevnodd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b10; + vevnodd_h_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vevnodd_h_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b10; + vevnodd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vevnodd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b10; + vevnodd_w_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vevnodd_w_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b10; + vevnodd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vevnodd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b10; + + //vzip + vzip_b_vv : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b00; + vzip_b_vx : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b00, func1 == 0b110, form == 0b10; + vzip_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b00; + vzip_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b01, func1 == 0b110, form == 0b10; + vzip_h_vv : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b00; + vzip_h_vx : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b00, func1 == 0b110, form == 0b10; + vzip_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b00; + vzip_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b01, func1 == 0b110, form == 0b10; + vzip_w_vv : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b00; + vzip_w_vx : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b00, func1 == 0b110, form == 0b10; + vzip_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b00; + vzip_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b01, func1 == 0b110, form == 0b10; +};