Import of kelvin-sim using copybara. Included changes: - 678377290 BEGIN_PUBLIC by atv <atv@google.com> - 672961212 Fix kelvin instrution bin_fmt by hcindyl <hcindyl@google.com> - 672960925 Update MPACT-RiscV to latest GH version. by hcindyl <hcindyl@google.com> - 671861339 BEGIN_PUBLIC by torerik <torerik@google.com> - 667625877 BEGIN_PUBLIC by torerik <torerik@google.com> - 664876757 Update copybara flow to create squashed gerrit CL by hcindyl <hcindyl@google.com> - 663874941 Update GoB build setting by hcindyl <hcindyl@google.com> - 660101382 BEGIN_PUBLIC by torerik <torerik@google.com> - 643345868 BEGIN_PUBLIC by torerik <torerik@google.com> - 643133613 BEGIN_PUBLIC by torerik <torerik@google.com> - 642055439 Fixes failure in Kelvin due to inclusion of minstret[h] i... by torerik <torerik@google.com> - 640964667 BEGIN_PUBLIC by torerik <torerik@google.com> - 639096497 BEGIN_PUBLIC by torerik <torerik@google.com> - 635590378 Updates implementation of breakpoints to build upon a new... by torerik <torerik@google.com> - 635251467 Upgrade to the latest protobuf edition by Shodan Team <no-reply@google.com> - 633566852 Adds explicit include of type_helpers. Must not rely on i... by torerik <torerik@google.com> - 632296711 Adjusted code due to debug command shell interface refact... by torerik <torerik@google.com> - 632101965 Fix 9 AbslSpanParams findings: by Shodan Team <no-reply@google.com> PiperOrigin-RevId: 678377290 Change-Id: I351d908940387cbd1f1aaaa72211285fe7a020fc
diff --git a/.bazelrc b/.bazelrc index 0341edd..75ca3f6 100644 --- a/.bazelrc +++ b/.bazelrc
@@ -4,4 +4,8 @@ # Disable warnings we don't care about or that generally have a low signal/noise # ratio. build --copt=-Wno-unused-function -build --host_copt=-Wno-unused-function \ No newline at end of file +build --host_copt=-Wno-unused-function + +# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel +# https://github.com/protocolbuffers/protobuf/issues/14313 +common --noenable_bzlmod
diff --git a/.bazelversion b/.bazelversion index 0df17dd..a8a1887 100644 --- a/.bazelversion +++ b/.bazelversion
@@ -1 +1 @@ -6.2.1 \ No newline at end of file +7.1.2
diff --git a/WORKSPACE b/WORKSPACE index 35df7da..5abe502 100644 --- a/WORKSPACE +++ b/WORKSPACE
@@ -6,23 +6,19 @@ # MPACT-RiscV repo http_archive( name = "com_google_mpact-riscv", - sha256 = "7c2ddf3c1980d138f4b9af539fba97e7aa8d5a812a9e15d62e40ccbbdae71a75", - strip_prefix = "mpact-riscv-40bc408eda29dbb5ebf023d455bd841b2dae73c4", - url = "https://github.com/google/mpact-riscv/archive/40bc408eda29dbb5ebf023d455bd841b2dae73c4.tar.gz", + integrity = "sha256-1UtiuOMLKJK5f1mXiWGfb4Lc1n1kWmSQNNZb80XiLY4=", + strip_prefix = "mpact-riscv-3ed17ec6c5d9cf5fa35ea7100bfa9ae7799fa0d6", + url = "https://github.com/google/mpact-riscv/archive/3ed17ec6c5d9cf5fa35ea7100bfa9ae7799fa0d6.tar.gz", ) -# MPACT-Sim repo -http_archive( - name = "com_google_mpact-sim", - sha256 = "8bad24dffe9996762a4db6e074e38ba454ec2ae113c3cb849aa7d8250827d37b", - strip_prefix = "mpact-sim-fc14a25478d2b8a15cc74451798471fe5d8ae5d2", - url = "https://github.com/google/mpact-sim/archive/fc14a25478d2b8a15cc74451798471fe5d8ae5d2.tar.gz", -) +load("@com_google_mpact-riscv//:repos.bzl", "mpact_riscv_repos") +mpact_riscv_repos() load("@com_google_mpact-sim//:repos.bzl", "mpact_sim_repos") - mpact_sim_repos() load("@com_google_mpact-sim//:deps.bzl", "mpact_sim_deps") - mpact_sim_deps() + +load("@com_google_mpact-sim//:protobuf_deps.bzl", "mpact_sim_protobuf_deps") +mpact_sim_protobuf_deps()
diff --git a/sim/BUILD b/sim/BUILD index 4722ff7..7acb134 100644 --- a/sim/BUILD +++ b/sim/BUILD
@@ -80,11 +80,13 @@ "kelvin_memory.isa", "kelvin_mul.isa", "kelvin_shift.isa", + "@com_google_mpact-riscv//riscv:riscv32zb.isa", ], isa_name = "Kelvin", deps = [ ":kelvin_instructions", "@com_google_absl//absl/functional:bind_front", + "@com_google_mpact-riscv//riscv:riscv_bitmanip_instructions", "@com_google_mpact-riscv//riscv:riscv_g", ], ) @@ -101,6 +103,7 @@ "kelvin_memory.bin_fmt", "kelvin_mul.bin_fmt", "kelvin_shift.bin_fmt", + "@com_google_mpact-riscv//riscv:riscv32zb.bin_fmt", ], deps = [ ":kelvin_isa", @@ -140,9 +143,11 @@ cc_library( name = "kelvin_top", srcs = [ + "kelvin_action_point_memory_interface.cc", "kelvin_top.cc", ], hdrs = [ + "kelvin_action_point_memory_interface.h", "kelvin_top.h", ], copts = ["-O3"], @@ -154,6 +159,7 @@ "//sim/renode:kelvin_renode_memory", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/flags:flag", + "@com_google_absl//absl/functional:any_invocable", "@com_google_absl//absl/functional:bind_front", "@com_google_absl//absl/log", "@com_google_absl//absl/log:check", @@ -161,9 +167,11 @@ "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_absl//absl/synchronization", + "@com_google_mpact-riscv//riscv:riscv_action_point_memory_interface", "@com_google_mpact-riscv//riscv:riscv_arm_semihost", - "@com_google_mpact-riscv//riscv:riscv_breakpoint", + "@com_google_mpact-riscv//riscv:riscv_fp_state", "@com_google_mpact-riscv//riscv:riscv_state", + "@com_google_mpact-sim//mpact/sim/generic:action_points", "@com_google_mpact-sim//mpact/sim/generic:arch_state", "@com_google_mpact-sim//mpact/sim/generic:component", "@com_google_mpact-sim//mpact/sim/generic:core", @@ -198,6 +206,7 @@ "@com_google_absl//absl/time", "@com_google_mpact-riscv//riscv:debug_command_shell", "@com_google_mpact-riscv//riscv:riscv_state", + "@com_google_mpact-sim//mpact/sim/generic:core_debug_interface", "@com_google_mpact-sim//mpact/sim/util/program_loader:elf_loader", "@com_googlesource_code_re2//:re2", ],
diff --git a/sim/decoder.h b/sim/decoder.h index 49b6fc2..731169f 100644 --- a/sim/decoder.h +++ b/sim/decoder.h
@@ -17,6 +17,7 @@ #ifndef SIM_DECODER_H_ #define SIM_DECODER_H_ +#include <cstdint> #include <memory> #include "sim/kelvin_decoder.h" @@ -60,6 +61,15 @@ mpact::sim::generic::Instruction *DecodeInstruction( uint64_t address) override; + // Return the number of opcodes supported by this decoder. + int GetNumOpcodes() const override { + return static_cast<int>(OpcodeEnum::kPastMaxValue); + } + // Return the name of the opcode at the given index. + const char *GetOpcodeName(int index) const override { + return isa32::kOpcodeNames[index]; + } + // Getter. isa32::KelvinEncoding *kelvin_encoding() const { return kelvin_encoding_; }
diff --git a/sim/kelvin.bin_fmt b/sim/kelvin.bin_fmt index c6e7d98..e8f0cce 100644 --- a/sim/kelvin.bin_fmt +++ b/sim/kelvin.bin_fmt
@@ -11,6 +11,8 @@ KelvinVectorMemoryInst; KelvinVectorMulInst; KelvinVectorShiftInst; + RiscVZbbInst32; + RiscVZbbInst32Only; }; #include "sim/kelvin_format.bin_fmt" @@ -20,3 +22,4 @@ #include "sim/kelvin_memory.bin_fmt" #include "sim/kelvin_mul.bin_fmt" #include "sim/kelvin_shift.bin_fmt" +#include "external/com_google_mpact-riscv/riscv/riscv32zb.bin_fmt"
diff --git a/sim/kelvin.isa b/sim/kelvin.isa index 0b046da..0467dda 100644 --- a/sim/kelvin.isa +++ b/sim/kelvin.isa
@@ -16,15 +16,23 @@ #include "sim/kelvin_shift.isa" #include "sim/kelvin_memory.isa" #include "sim/kelvin_mul.isa" +#include "external/com_google_mpact-riscv/riscv/riscv32zb.isa" // Combining all kelvin instruction sets. slot kelvin : riscv32i, riscv32m, zicsr, zfencei, privileged, kelvin_arith, kelvin_conv, kelvin_log, kelvin_memory, kelvin_mul, kelvin_shift, - kelvin_vector_memory { + kelvin_vector_memory, riscv32_zbb { includes { #include "sim/kelvin_instructions.h" } default opcode = disasm: "Illegal instruction at 0x%(@:08x)", semfunc: "&KelvinIllegalInstruction"; + + opcodes { + ror = delete; + rol = delete; + orcb = delete; + rev8 = delete; + } }
diff --git a/sim/kelvin_action_point_memory_interface.cc b/sim/kelvin_action_point_memory_interface.cc new file mode 100644 index 0000000..d754a78 --- /dev/null +++ b/sim/kelvin_action_point_memory_interface.cc
@@ -0,0 +1,86 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "sim/kelvin_action_point_memory_interface.h" + +#include <cstdint> +#include <utility> + +#include "absl/status/status.h" +#include "absl/strings/str_cat.h" + +namespace kelvin::sim { + +KelvinActionPointMemoryInterface::KelvinActionPointMemoryInterface( + MemoryInterface *memory, InvalidateFcn invalidate_fcn) + : memory_(memory), invalidate_fcn_(std::move(invalidate_fcn)) { + // Allocate two data buffers (32 and 16 bit) once, so we don't have to + // do it every time we access breakpoint instructions. + db4_ = db_factory_.Allocate<uint32_t>(1); +} + +KelvinActionPointMemoryInterface::~KelvinActionPointMemoryInterface() { + if (db4_ != nullptr) db4_->DecRef(); + for (auto &[unused, inst_info_ptr] : instruction_map_) { + delete inst_info_ptr; + } + instruction_map_.clear(); +} + +absl::Status KelvinActionPointMemoryInterface::WriteOriginalInstruction( + uint64_t address) { + auto it = instruction_map_.find(address); + if (it == instruction_map_.end()) { + return absl::NotFoundError(absl::StrCat( + "No instruction information exist for address: ", absl::Hex(address))); + } + db4_->Set<uint32_t>(0, it->second->og_instruction_word); + memory_->Store(address, db4_); + // Invalidate the instruction decode for this address. + invalidate_fcn_(address); + return absl::OkStatus(); +} + +absl::Status KelvinActionPointMemoryInterface::WriteBreakpointInstruction( + uint64_t address) { + auto it = instruction_map_.find(address); + if (it == instruction_map_.end()) { + // This is a new breakpoint. First find the instruction size, then save + // the original instruction. + memory_->Load(address, db4_, nullptr, nullptr); + uint32_t instruction_word = db4_->Get<uint32_t>(0); + int size = GetInstructionSize(instruction_word); + if (size == 0) { + return absl::InvalidArgumentError(absl::StrCat( + "Invalid instruction size: ", size, " at ", absl::Hex(address))); + } + auto *inst_info = new InstructionInfo; + inst_info->og_instruction_word = instruction_word; + inst_info->size = size; + it = instruction_map_.insert(std::make_pair(address, inst_info)).first; + } + // Write the breakpoint instruction to memory. + db4_->Set<uint32_t>(0, kEBreak32); + memory_->Store(address, db4_); + invalidate_fcn_(address); + // Invalidate the instruction decode for this address. + return absl::OkStatus(); +} + +int KelvinActionPointMemoryInterface::GetInstructionSize( + uint32_t instruction_word) const { + return 4; +} + +} // namespace kelvin::sim
diff --git a/sim/kelvin_action_point_memory_interface.h b/sim/kelvin_action_point_memory_interface.h new file mode 100644 index 0000000..ea88e52 --- /dev/null +++ b/sim/kelvin_action_point_memory_interface.h
@@ -0,0 +1,83 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef SIM_KELVIN_ACTION_POINT_MEMORY_INTERFACE_H_ +#define SIM_KELVIN_ACTION_POINT_MEMORY_INTERFACE_H_ + +#include <cstdint> + +#include "absl/container/flat_hash_map.h" +#include "absl/functional/any_invocable.h" +#include "absl/status/status.h" +#include "mpact/sim/generic/action_point_manager_base.h" +#include "mpact/sim/generic/data_buffer.h" +#include "mpact/sim/util/memory/memory_interface.h" + +namespace kelvin::sim { + +using ::mpact::sim::generic::ActionPointMemoryInterface; +using ::mpact::sim::generic::DataBuffer; +using ::mpact::sim::generic::DataBufferFactory; +using ::mpact::sim::util::MemoryInterface; + +// This file defines the KelvinActionPointMemoryInterface class which provides +// the low level memory functionality required to implement breakpoint and other +// 'actions' that need to be performed when an instruction executes. It uses +// the Kelvin ebreak instruction to stop execution. + +class KelvinActionPointMemoryInterface : public ActionPointMemoryInterface { + public: + // 32 bit software breakpoint instructions. + static constexpr uint32_t kEBreak32 = 0b000000000001'00000'000'00000'1110011; + // Callback type for function to invalidate the decoding of an instruction. + using InvalidateFcn = absl::AnyInvocable<void(uint64_t address)>; + // The constructor takes a pointer to the memory interface through which + // instructions can be read and written,and a function to invalidate the + // decoding of an instruction. + KelvinActionPointMemoryInterface(MemoryInterface *memory, + InvalidateFcn invalidate_fcn); + ~KelvinActionPointMemoryInterface() override; + + // This restores the original instruction in memory, and allows it to be + // decoded and executed, provided the address is an action point. If not, + // no action is taken. + absl::Status WriteOriginalInstruction(uint64_t address) override; + // Store breakpoint instruction, provided the address is an action point. + // Otherwise no action is taken. + absl::Status WriteBreakpointInstruction(uint64_t address) override; + + private: + struct InstructionInfo { + int size; + uint32_t og_instruction_word; + }; + + // Returns the size of the instruction at the given address, or 0 if unknown. + int GetInstructionSize(uint32_t instruction_word) const; + + // Data buffer factory and two data buffer pointers to use for reading and + // writing instructions. + DataBufferFactory db_factory_; + DataBuffer *db4_ = nullptr; + // Maps from address to information about the instruction. + absl::flat_hash_map<uint64_t, InstructionInfo *> instruction_map_; + // Interface to program memory. + MemoryInterface *memory_; + // Function to be called to invalidate any stored decoding of an instruction. + InvalidateFcn invalidate_fcn_; +}; + +} // namespace kelvin::sim + +#endif // SIM_KELVIN_ACTION_POINT_MEMORY_INTERFACE_H_
diff --git a/sim/kelvin_arith.bin_fmt b/sim/kelvin_arith.bin_fmt index b679386..4f5ec36 100644 --- a/sim/kelvin_arith.bin_fmt +++ b/sim/kelvin_arith.bin_fmt
@@ -1,602 +1,602 @@ 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; + vadd_b_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vadd_b_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vadd_b_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vadd_b_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vadd_h_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vadd_h_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vadd_h_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vadd_h_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vadd_w_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vadd_w_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vadd_w_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vadd_w_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b1, 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; + vsub_b_vv : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vsub_b_vx : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vsub_b_vv_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vsub_b_vx_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vsub_h_vv : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vsub_h_vx : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vsub_h_vv_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vsub_h_vx_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vsub_w_vv : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vsub_w_vx : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vsub_w_vv_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vsub_w_vx_m : KelvinV2ArgsType : func2 == 0b000'001, sz == 0b10, m == 0b1, 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; + vrsub_b_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vrsub_b_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vrsub_b_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vrsub_b_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vrsub_h_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vrsub_h_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vrsub_h_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vrsub_h_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vrsub_w_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vrsub_w_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vrsub_w_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vrsub_w_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b1, 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; + veq_b_vv : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + veq_b_vx : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + veq_b_vv_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + veq_b_vx_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + veq_h_vv : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + veq_h_vx : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + veq_h_vv_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + veq_h_vx_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + veq_w_vv : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + veq_w_vx : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + veq_w_vv_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + veq_w_vx_m : KelvinV2ArgsType : func2 == 0b000'110, sz == 0b10, m == 0b1, 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; + vne_b_vv : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vne_b_vx : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vne_b_vv_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vne_b_vx_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vne_h_vv : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vne_h_vx : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vne_h_vv_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vne_h_vx_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vne_w_vv : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vne_w_vx : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vne_w_vv_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vne_w_vx_m : KelvinV2ArgsType : func2 == 0b000'111, sz == 0b10, m == 0b1, 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; + vlt_b_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vlt_b_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vlt_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vlt_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vlt_h_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vlt_h_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vlt_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vlt_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vlt_w_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vlt_w_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vlt_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vlt_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b1, 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; + vlt_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vlt_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vlt_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vlt_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vlt_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vlt_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vlt_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vlt_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vlt_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vlt_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vlt_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vlt_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b1, 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; + vle_b_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vle_b_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vle_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vle_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vle_h_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vle_h_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vle_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vle_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vle_w_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vle_w_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vle_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vle_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b1, 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; + vle_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vle_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vle_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vle_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vle_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vle_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vle_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vle_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vle_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vle_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vle_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vle_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b1, 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; + vgt_b_vv : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vgt_b_vx : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vgt_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vgt_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vgt_h_vv : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vgt_h_vx : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vgt_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vgt_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vgt_w_vv : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vgt_w_vx : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vgt_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vgt_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b1, 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; + vgt_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vgt_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vgt_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vgt_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vgt_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vgt_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vgt_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vgt_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vgt_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vgt_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vgt_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vgt_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b1, 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; + vge_b_vv : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vge_b_vx : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vge_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vge_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vge_h_vv : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vge_h_vx : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vge_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vge_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vge_w_vv : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vge_w_vx : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vge_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vge_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b1, 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; + vge_u_b_vv : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vge_u_b_vx : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vge_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vge_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vge_u_h_vv : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vge_u_h_vx : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vge_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vge_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vge_u_w_vv : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vge_u_w_vx : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vge_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vge_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b1, 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; + vabsd_b_vv : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vabsd_b_vx : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vabsd_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vabsd_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vabsd_h_vv : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vabsd_h_vx : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vabsd_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vabsd_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vabsd_w_vv : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vabsd_w_vx : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vabsd_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vabsd_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10000, sz == 0b10, m == 0b1, 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; + vabsd_u_b_vv : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vabsd_u_b_vx : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vabsd_u_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vabsd_u_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vabsd_u_h_vv : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vabsd_u_h_vx : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vabsd_u_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vabsd_u_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vabsd_u_w_vv : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vabsd_u_w_vx : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vabsd_u_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vabsd_u_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10001, sz == 0b10, m == 0b1, 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; + vmax_b_vv : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vmax_b_vx : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vmax_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vmax_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vmax_h_vv : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vmax_h_vx : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vmax_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vmax_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vmax_w_vv : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vmax_w_vx : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vmax_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vmax_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10010, sz == 0b10, m == 0b1, 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; + vmax_u_b_vv : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vmax_u_b_vx : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vmax_u_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vmax_u_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vmax_u_h_vv : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vmax_u_h_vx : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vmax_u_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vmax_u_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vmax_u_w_vv : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vmax_u_w_vx : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vmax_u_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vmax_u_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10011, sz == 0b10, m == 0b1, 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; + vmin_b_vv : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vmin_b_vx : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vmin_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vmin_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vmin_h_vv : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vmin_h_vx : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vmin_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vmin_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vmin_w_vv : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vmin_w_vx : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vmin_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vmin_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10100, sz == 0b10, m == 0b1, 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; + vmin_u_b_vv : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vmin_u_b_vx : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vmin_u_b_vv_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vmin_u_b_vx_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vmin_u_h_vv : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vmin_u_h_vx : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vmin_u_h_vv_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vmin_u_h_vx_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vmin_u_w_vv : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vmin_u_w_vx : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vmin_u_w_vv_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vmin_u_w_vx_m : KelvinV2ArgsType : func2 == 0b0'10101, sz == 0b10, m == 0b1, 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; + vadd3_b_vv : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b00; + vadd3_b_vx : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b0, func1 == 0b000, form == 0b10; + vadd3_b_vv_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b00; + vadd3_b_vx_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b00, m == 0b1, func1 == 0b000, form == 0b10; + vadd3_h_vv : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b00; + vadd3_h_vx : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b0, func1 == 0b000, form == 0b10; + vadd3_h_vv_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b00; + vadd3_h_vx_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b01, m == 0b1, func1 == 0b000, form == 0b10; + vadd3_w_vv : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b00; + vadd3_w_vx : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b0, func1 == 0b000, form == 0b10; + vadd3_w_vv_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b1, func1 == 0b000, form == 0b00; + vadd3_w_vx_m : KelvinV2ArgsType : func2 == 0b0'11000, sz == 0b10, m == 0b1, 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; + vadds_b_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vadds_b_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vadds_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vadds_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vadds_h_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vadds_h_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vadds_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vadds_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vadds_w_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vadds_w_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vadds_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vadds_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b1, 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; + vadds_u_b_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vadds_u_b_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vadds_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vadds_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vadds_u_h_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vadds_u_h_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vadds_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vadds_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vadds_u_w_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vadds_u_w_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vadds_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vadds_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b1, 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; + vsubs_b_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vsubs_b_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vsubs_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vsubs_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vsubs_h_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vsubs_h_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vsubs_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vsubs_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vsubs_w_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vsubs_w_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vsubs_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vsubs_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b1, 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; + vsubs_u_b_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vsubs_u_b_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vsubs_u_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vsubs_u_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vsubs_u_h_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vsubs_u_h_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vsubs_u_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vsubs_u_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vsubs_u_w_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vsubs_u_w_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vsubs_u_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vsubs_u_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b1, 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; + vaddw_h_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vaddw_h_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vaddw_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vaddw_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vaddw_w_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vaddw_w_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vaddw_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vaddw_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b1, 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; + vaddw_h_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vaddw_h_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vaddw_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vaddw_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vaddw_w_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vaddw_w_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vaddw_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vaddw_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b1, 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; + vsubw_h_vv : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vsubw_h_vx : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vsubw_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vsubw_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vsubw_w_vv : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vsubw_w_vx : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vsubw_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vsubw_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b1, 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; + vsubw_h_u_vv : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vsubw_h_u_vx : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vsubw_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vsubw_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vsubw_w_u_vv : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vsubw_w_u_vx : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vsubw_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vsubw_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b1, 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; + vacc_h_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vacc_h_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vacc_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vacc_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vacc_w_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vacc_w_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vacc_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vacc_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b1, 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; + vacc_h_u_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vacc_h_u_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vacc_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vacc_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vacc_w_u_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vacc_w_u_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vacc_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vacc_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b1, 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; + vpadd_h_v : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vpadd_h_v_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vpadd_w_v : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vpadd_w_v_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b1, 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; + vpadd_h_u_v : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vpadd_h_u_v_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vpadd_w_u_v : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vpadd_w_u_v_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 == 0, sz == 0b10, m == 0b1, 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; + vpsub_h_v : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vpsub_h_v_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vpsub_w_v : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vpsub_w_v_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 == 0, sz == 0b10, m == 0b1, 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; + vpsub_h_u_v : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vpsub_h_u_v_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vpsub_w_u_v : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vpsub_w_u_v_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 == 0, sz == 0b10, m == 0b1, 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_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vhadd_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vhadd_w_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_w_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b1, 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_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vhadd_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vhadd_w_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_w_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_w_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_w_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b1, 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_b_u_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_b_u_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_b_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_b_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vhadd_h_u_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_h_u_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_h_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_h_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vhadd_w_u_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_w_u_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_w_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_w_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b10, m == 0b1, 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; + vhadd_b_ur_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_b_ur_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_b_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_b_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vhadd_h_ur_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_h_ur_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_h_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_h_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vhadd_w_ur_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vhadd_w_ur_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vhadd_w_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vhadd_w_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b1, 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_b_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_b_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vhsub_h_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_h_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vhsub_w_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_w_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b1, 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_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vhsub_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vhsub_w_r_vv : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_w_r_vx : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_w_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_w_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0110, sz == 0b10, m == 0b1, 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_b_u_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_b_u_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_b_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_b_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vhsub_h_u_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_h_u_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_h_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_h_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vhsub_w_u_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_w_u_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_w_u_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_w_u_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b1, 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; + vhsub_b_ur_vv : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_b_ur_vx : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_b_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_b_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b00, m == 0b1, func1 == 0b100, form == 0b10; + vhsub_h_ur_vv : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_h_ur_vx : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_h_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_h_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b01, m == 0b1, func1 == 0b100, form == 0b10; + vhsub_w_ur_vv : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b00; + vhsub_w_ur_vx : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b0, func1 == 0b100, form == 0b10; + vhsub_w_ur_vv_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b1, func1 == 0b100, form == 0b00; + vhsub_w_ur_vx_m : KelvinV2ArgsType : func2 == 0b01'0111, sz == 0b10, m == 0b1, 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; + vand_vv : KelvinV2ArgsType : func2 == 0b00'0000, m == 0b0, func1 == 0b001, form == 0b00; + vand_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, m == 0b1, func1 == 0b001, form == 0b00; + vand_b_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b0, func1 == 0b001, form == 0b10; + vand_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b1, func1 == 0b001, form == 0b10; + vand_h_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b0, func1 == 0b001, form == 0b10; + vand_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b1, func1 == 0b001, form == 0b10; + vand_w_vx : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b0, func1 == 0b001, form == 0b10; + vand_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b1, 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; + vor_vv : KelvinV2ArgsType : func2 == 0b00'0001, m == 0b0, func1 == 0b001, form == 0b00; + vor_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, m == 0b1, func1 == 0b001, form == 0b00; + vor_b_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b0, func1 == 0b001, form == 0b10; + vor_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b1, func1 == 0b001, form == 0b10; + vor_h_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b0, func1 == 0b001, form == 0b10; + vor_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b1, func1 == 0b001, form == 0b10; + vor_w_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b0, func1 == 0b001, form == 0b10; + vor_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b1, 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; + vxor_vv : KelvinV2ArgsType : func2 == 0b00'0010, m == 0b0, func1 == 0b001, form == 0b00; + vxor_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, m == 0b1, func1 == 0b001, form == 0b00; + vxor_b_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b0, func1 == 0b001, form == 0b10; + vxor_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b1, func1 == 0b001, form == 0b10; + vxor_h_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b0, func1 == 0b001, form == 0b10; + vxor_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b1, func1 == 0b001, form == 0b10; + vxor_w_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b0, func1 == 0b001, form == 0b10; + vxor_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b1, func1 == 0b001, form == 0b10; //vrev - vrev_b_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b00; - vrev_b_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; - vrev_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b00; - vrev_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; - vrev_h_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b00; - vrev_h_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; - vrev_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b00; - vrev_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; - vrev_w_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b00; - vrev_w_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; - vrev_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b00; - vrev_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; + vrev_b_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b0, func1 == 0b001, form == 0b00; + vrev_b_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b0, func1 == 0b001, form == 0b10; + vrev_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b1, func1 == 0b001, form == 0b00; + vrev_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b1, func1 == 0b001, form == 0b10; + vrev_h_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b0, func1 == 0b001, form == 0b00; + vrev_h_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b0, func1 == 0b001, form == 0b10; + vrev_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b1, func1 == 0b001, form == 0b00; + vrev_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b1, func1 == 0b001, form == 0b10; + vrev_w_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b0, func1 == 0b001, form == 0b00; + vrev_w_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b0, func1 == 0b001, form == 0b10; + vrev_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b1, func1 == 0b001, form == 0b00; + vrev_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b1, func1 == 0b001, form == 0b10; //vror - vror_b_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b00; - vror_b_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b00, func1 == 0b001, form == 0b10; - vror_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b00; - vror_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b01, func1 == 0b001, form == 0b10; - vror_h_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b00; - vror_h_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b00, func1 == 0b001, form == 0b10; - vror_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b00; - vror_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b01, func1 == 0b001, form == 0b10; - vror_w_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b00; - vror_w_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b00, func1 == 0b001, form == 0b10; - vror_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b00; - vror_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b01, func1 == 0b001, form == 0b10; + vror_b_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b0, func1 == 0b001, form == 0b00; + vror_b_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b0, func1 == 0b001, form == 0b10; + vror_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b1, func1 == 0b001, form == 0b00; + vror_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b1, func1 == 0b001, form == 0b10; + vror_h_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b0, func1 == 0b001, form == 0b00; + vror_h_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b0, func1 == 0b001, form == 0b10; + vror_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b1, func1 == 0b001, form == 0b00; + vror_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b1, func1 == 0b001, form == 0b10; + vror_w_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b0, func1 == 0b001, form == 0b00; + vror_w_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b0, func1 == 0b001, form == 0b10; + vror_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b1, func1 == 0b001, form == 0b00; + vror_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b1, 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; + vmvp_vv : KelvinV2ArgsType : func2 == 0b00'1101, m == 0b0, func1 == 0b001, form == 0b00; + vmvp_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, m == 0b1, func1 == 0b001, form == 0b00; + vmvp_b_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b0, func1 == 0b001, form == 0b10; + vmvp_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b1, func1 == 0b001, form == 0b10; + vmvp_h_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b0, func1 == 0b001, form == 0b10; + vmvp_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b1, func1 == 0b001, form == 0b10; + vmvp_w_vx : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b0, func1 == 0b001, form == 0b10; + vmvp_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b1, func1 == 0b001, form == 0b10; };
diff --git a/sim/kelvin_base.isa b/sim/kelvin_base.isa index 518fd78..38a19f3 100644 --- a/sim/kelvin_base.isa +++ b/sim/kelvin_base.isa
@@ -7,7 +7,7 @@ // Basic integer ALU instructions, part of the RiscV 32i subset. slot riscv32i { includes { - #include "riscv/riscv_i_instructions.h" + #include "external/com_google_mpact-riscv/riscv/riscv_i_instructions.h" } default size = 4; default latency = global_latency; @@ -203,7 +203,7 @@ // RiscV32 multiply/divide instructions. slot riscv32m { includes { - #include "riscv/riscv_m_instructions.h" + #include "external/com_google_mpact-riscv/riscv/riscv_m_instructions.h" } default size = 4; default latency = global_latency; @@ -247,7 +247,7 @@ // RiscV32 CSR manipulation instructions. slot zicsr { includes { - #include "riscv/riscv_zicsr_instructions.h" + #include "external/com_google_mpact-riscv/riscv/riscv_zicsr_instructions.h" } default size = 4; default latency = global_latency; @@ -322,7 +322,7 @@ // Instruction fence. slot zfencei { includes { - #include "riscv/riscv_zfencei_instructions.h" + #include "external/com_google_mpact-riscv/riscv/riscv_zfencei_instructions.h" } default size = 4; default latency = global_latency; @@ -336,7 +336,7 @@ // Privileged instructions. slot privileged { includes { - #include "riscv/riscv_priv_instructions.h" + #include "external/com_google_mpact-riscv/riscv/riscv_priv_instructions.h" #include "sim/kelvin_instructions.h" } default size = 4;
diff --git a/sim/kelvin_encoding.cc b/sim/kelvin_encoding.cc index 6fcf863..1fd63ea 100644 --- a/sim/kelvin_encoding.cc +++ b/sim/kelvin_encoding.cc
@@ -358,6 +358,8 @@ decode_functions.push_back(encoding::DecodeKelvinVectorMemoryInst); decode_functions.push_back(encoding::DecodeKelvinVectorMulInst); decode_functions.push_back(encoding::DecodeKelvinVectorShiftInst); + decode_functions.push_back(encoding::DecodeRiscVZbbInst32); + decode_functions.push_back(encoding::DecodeRiscVZbbInst32Only); for (auto &function : decode_functions) { opcode_ = function(inst_word_); if (opcode_ != OpcodeEnum::kNone) break;
diff --git a/sim/kelvin_instructions.h b/sim/kelvin_instructions.h index be0f77c..700e2e7 100644 --- a/sim/kelvin_instructions.h +++ b/sim/kelvin_instructions.h
@@ -19,6 +19,11 @@ #include "mpact/sim/generic/instruction.h" +// We define this empty namespace and using it so that kelvin_encoder +// can successfully resolve definitions for generic RiscV semfuncs. +namespace mpact::sim::riscv {} +using namespace mpact::sim::riscv; // NOLINT + namespace kelvin::sim { void KelvinIllegalInstruction(mpact::sim::generic::Instruction *inst);
diff --git a/sim/kelvin_memory.bin_fmt b/sim/kelvin_memory.bin_fmt index 0e5530d..90a75fa 100644 --- a/sim/kelvin_memory.bin_fmt +++ b/sim/kelvin_memory.bin_fmt
@@ -2,124 +2,124 @@ // 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; + vld_b_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vld_h_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vld_w_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vld_b_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vld_h_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vld_w_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vld_b_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vld_h_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vld_w_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vld_b_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vld_h_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vld_w_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vld_b_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vld_h_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vld_w_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vld_b_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vld_h_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vld_w_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vld_b_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vld_h_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vld_w_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vld_b_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vld_h_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vld_w_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vld_b_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vld_h_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vld_w_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vld_b_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vld_h_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vld_w_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vld_b_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vld_h_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vld_w_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vld_b_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vld_h_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vld_w_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vld_b_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vld_h_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vld_w_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vld_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vld_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vld_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vld_b_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vld_h_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vld_w_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vld_b_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vld_h_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vld_w_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b10, m == 0b1, 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; + vst_b_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vst_h_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vst_w_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vst_b_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vst_h_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vst_w_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vst_b_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vst_h_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vst_w_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vst_b_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vst_h_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vst_w_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vst_b_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vst_h_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vst_w_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vst_b_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vst_h_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vst_w_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vst_b_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vst_h_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vst_w_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vst_b_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vst_h_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vst_w_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vst_b_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vst_h_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vst_w_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vst_b_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vst_h_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vst_w_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vst_b_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vst_h_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vst_w_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vst_b_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vst_h_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vst_w_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vst_b_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vst_h_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vst_w_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vst_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vst_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vst_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vst_b_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vst_h_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vst_w_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vst_b_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vst_h_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vst_w_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vstq_b_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vstq_h_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vstq_w_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vstq_b_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vstq_h_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vstq_w_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vstq_b_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vstq_h_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vstq_w_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; + vstq_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vstq_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vstq_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; // vdup - vdup_b_x : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; - vdup_h_x : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; - vdup_w_x : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; - vdup_b_x_m : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; - vdup_h_x_m : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; - vdup_w_x_m : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; + vdup_b_x : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b00, m == 0b0, func1 == 0b111, form == 0b11; + vdup_h_x : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b01, m == 0b0, func1 == 0b111, form == 0b11; + vdup_w_x : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b10, m == 0b0, func1 == 0b111, form == 0b11; + vdup_b_x_m : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b00, m == 0b1, func1 == 0b111, form == 0b11; + vdup_h_x_m : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b01, m == 0b1, func1 == 0b111, form == 0b11; + vdup_w_x_m : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b10, m == 0b1, func1 == 0b111, form == 0b11; // vcget vcget : KelvinV2ArgsType : func2 == 0b01'0100, vs2 == 0, vs1 == 0, vd == 48, func1 == 0b111, form == 0b11;
diff --git a/sim/kelvin_mul.bin_fmt b/sim/kelvin_mul.bin_fmt index a23a2c5..7eeb504 100644 --- a/sim/kelvin_mul.bin_fmt +++ b/sim/kelvin_mul.bin_fmt
@@ -2,190 +2,190 @@ // 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; + vmul_b_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vmul_b_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vmul_b_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vmul_b_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vmul_h_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmul_h_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmul_h_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmul_h_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmul_w_vv : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmul_w_vx : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmul_w_vv_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmul_w_vx_m : KelvinV2ArgsType : func2 == 0b000'000, sz == 0b10, m == 0b1, 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; + vmuls_b_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vmuls_b_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vmuls_b_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vmuls_b_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vmuls_h_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmuls_h_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmuls_h_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmuls_h_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmuls_w_vv : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmuls_w_vx : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmuls_w_vv_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmuls_w_vx_m : KelvinV2ArgsType : func2 == 0b000'010, sz == 0b10, m == 0b1, 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; + vmulsu_b_vv : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vmulsu_b_vx : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vmulsu_b_vv_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vmulsu_b_vx_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vmulsu_h_vv : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmulsu_h_vx : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmulsu_h_vv_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmulsu_h_vx_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmulsu_w_vv : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmulsu_w_vx : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmulsu_w_vv_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmulsu_w_vx_m : KelvinV2ArgsType : func2 == 0b000'011, sz == 0b10, m == 0b1, 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; + vmulw_h_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmulw_h_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmulw_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmulw_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmulw_w_vv : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmulw_w_vx : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmulw_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmulw_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b1, 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; + vmulw_h_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmulw_h_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmulw_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmulw_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmulw_w_u_vv : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmulw_w_u_vx : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmulw_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmulw_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b1, 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_b_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_b_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vmulh_h_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_h_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmulh_w_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_w_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b1, 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_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_b_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_b_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vmulh_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_h_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_h_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmulh_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_w_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_w_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b1, 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_b_u_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_b_u_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_b_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_b_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vmulh_h_u_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_h_u_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_h_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_h_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmulh_w_u_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_w_u_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_w_u_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_w_u_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b1, 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; + vmulh_b_ur_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_b_ur_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_b_ur_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_b_ur_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vmulh_h_ur_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_h_ur_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_h_ur_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_h_ur_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmulh_w_ur_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmulh_w_ur_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmulh_w_ur_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmulh_w_ur_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b1, 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_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vdmulh_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vdmulh_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vdmulh_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vdmulh_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vdmulh_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vdmulh_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vdmulh_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vdmulh_w_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vdmulh_w_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vdmulh_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vdmulh_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b1, 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_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vdmulh_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vdmulh_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vdmulh_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vdmulh_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vdmulh_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vdmulh_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vdmulh_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vdmulh_w_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vdmulh_w_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vdmulh_w_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vdmulh_w_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b10, m == 0b1, 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; + vdmulh_b_rn_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vdmulh_b_rn_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vdmulh_b_rn_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vdmulh_b_rn_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vdmulh_h_rn_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vdmulh_h_rn_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vdmulh_h_rn_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vdmulh_h_rn_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vdmulh_w_rn_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vdmulh_w_rn_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vdmulh_w_rn_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vdmulh_w_rn_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b10, m == 0b1, 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; + vmacc_b_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vmacc_b_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vmacc_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vmacc_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vmacc_h_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmacc_h_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmacc_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmacc_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmacc_w_vv : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmacc_w_vx : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmacc_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmacc_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0100, sz == 0b10, m == 0b1, 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; + vmadd_b_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b00; + vmadd_b_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b0, func1 == 0b011, form == 0b10; + vmadd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b00; + vmadd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b00, m == 0b1, func1 == 0b011, form == 0b10; + vmadd_h_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b00; + vmadd_h_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b0, func1 == 0b011, form == 0b10; + vmadd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b00; + vmadd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b01, m == 0b1, func1 == 0b011, form == 0b10; + vmadd_w_vv : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b00; + vmadd_w_vx : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b0, func1 == 0b011, form == 0b10; + vmadd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b00; + vmadd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0101, sz == 0b10, m == 0b1, func1 == 0b011, form == 0b10; };
diff --git a/sim/kelvin_shift.bin_fmt b/sim/kelvin_shift.bin_fmt index ba2f37f..b6d6a03 100644 --- a/sim/kelvin_shift.bin_fmt +++ b/sim/kelvin_shift.bin_fmt
@@ -2,334 +2,334 @@ // 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; + vsll_b_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsll_b_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsll_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsll_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsll_h_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vsll_h_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vsll_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vsll_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b10; + vsll_w_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b00; + vsll_w_vx : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b10; + vsll_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b00; + vsll_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b1, 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; + vsra_b_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsra_b_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsra_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsra_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsra_h_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vsra_h_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vsra_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vsra_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b10; + vsra_w_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b00; + vsra_w_vx : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b10; + vsra_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b00; + vsra_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b1, 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; + vsrl_b_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsrl_b_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsrl_b_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsrl_b_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsrl_h_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vsrl_h_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vsrl_h_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vsrl_h_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b10; + vsrl_w_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b00; + vsrl_w_vx : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b10; + vsrl_w_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b00; + vsrl_w_vx_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b10; //vsha - vsha_b_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsha_b_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsha_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsha_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsha_h_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsha_h_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vsha_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsha_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - vsha_w_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vsha_w_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b10; - vsha_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - vsha_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b10; - vsha_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vsha_b_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vsha_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vsha_b_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vsha_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vsha_h_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vsha_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vsha_h_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - vsha_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vsha_w_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b10; - vsha_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - vsha_w_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b10; + vsha_b_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsha_b_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsha_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsha_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsha_h_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vsha_h_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vsha_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vsha_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b10; + vsha_w_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b00; + vsha_w_vx : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b10; + vsha_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b00; + vsha_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b10; + vsha_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsha_b_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsha_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsha_b_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsha_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vsha_h_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vsha_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vsha_h_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b10; + vsha_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b00; + vsha_w_r_vx : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b10; + vsha_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b00; + vsha_w_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b10; //vshl - vshl_b_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vshl_b_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vshl_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vshl_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vshl_h_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vshl_h_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vshl_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vshl_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - vshl_w_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vshl_w_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b10; - vshl_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - vshl_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b10; - vshl_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b00; - vshl_b_r_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b00, func1 == 0b010, form == 0b10; - vshl_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b00; - vshl_b_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b01, func1 == 0b010, form == 0b10; - vshl_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b00; - vshl_h_r_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b00, func1 == 0b010, form == 0b10; - vshl_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b00; - vshl_h_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b01, func1 == 0b010, form == 0b10; - vshl_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b00; - vshl_w_r_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b00, func1 == 0b010, form == 0b10; - vshl_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b00; - vshl_w_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b01, func1 == 0b010, form == 0b10; + vshl_b_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vshl_b_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vshl_b_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vshl_b_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vshl_h_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vshl_h_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vshl_h_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vshl_h_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b10; + vshl_w_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b00; + vshl_w_vx : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b10; + vshl_w_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b00; + vshl_w_vx_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b10; + vshl_b_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vshl_b_r_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vshl_b_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vshl_b_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vshl_h_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vshl_h_r_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vshl_h_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vshl_h_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b10; + vshl_w_r_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b00; + vshl_w_r_vx : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b0, func1 == 0b010, form == 0b10; + vshl_w_r_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b00; + vshl_w_r_vx_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b1, func1 == 0b010, form == 0b10; //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; + vnot_v : KelvinV2ArgsType : func2 == 0b00'0011, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vnot_v_m : KelvinV2ArgsType : func2 == 0b00'0011, vs2 == 0, m == 0b1, 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; + vclb_b_v : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vclb_b_v_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, vs2 == 0, m == 0b1, func1 == 0b001, form == 0b10; + vclb_h_v : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vclb_h_v_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, vs2 == 0, m == 0b1, func1 == 0b001, form == 0b10; + vclb_w_v : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vclb_w_v_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, vs2 == 0, m == 0b1, 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; + vclz_b_v : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vclz_b_v_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, vs2 == 0, m == 0b1, func1 == 0b001, form == 0b10; + vclz_h_v : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vclz_h_v_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, vs2 == 0, m == 0b1, func1 == 0b001, form == 0b10; + vclz_w_v : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vclz_w_v_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, vs2 == 0, m == 0b1, 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; + vcpop_b_v : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vcpop_b_v_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, vs2 == 0, m == 0b1, func1 == 0b001, form == 0b10; + vcpop_h_v : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vcpop_h_v_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, vs2 == 0, m == 0b1, func1 == 0b001, form == 0b10; + vcpop_w_v : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vcpop_w_v_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, vs2 == 0, m == 0b1, 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; + vmv_v : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, m == 0b0, func1 == 0b001, form == 0b10; + vmv_v_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, m == 0b1, 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; + vsrans_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsrans_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsrans_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsrans_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsrans_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vsrans_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vsrans_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vsrans_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b10; + vsrans_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsrans_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsrans_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsrans_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsrans_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vsrans_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vsrans_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vsrans_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0010, sz == 0b01, m == 0b1, 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; + vsransu_b_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsransu_b_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsransu_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsransu_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsransu_h_vv : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vsransu_h_vx : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vsransu_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vsransu_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0001, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b10; + vsransu_b_r_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsransu_b_r_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsransu_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsransu_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsransu_h_r_vv : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b00; + vsransu_h_r_vx : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b0, func1 == 0b010, form == 0b10; + vsransu_h_r_vv_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b1, func1 == 0b010, form == 0b00; + vsransu_h_r_vx_m : KelvinV2ArgsType : func2 == 0b01'0011, sz == 0b01, m == 0b1, 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; + vsraqs_b_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsraqs_b_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsraqs_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsraqs_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsraqs_b_r_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsraqs_b_r_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsraqs_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsraqs_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b1, 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; + vsraqsu_b_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsraqsu_b_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsraqsu_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsraqsu_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b10; + vsraqsu_b_r_vv : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b00; + vsraqsu_b_r_vx : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b0, func1 == 0b010, form == 0b10; + vsraqsu_b_r_vv_m : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b1, func1 == 0b010, form == 0b00; + vsraqsu_b_r_vx_m : KelvinV2ArgsType : func2 == 0b01'1011, sz == 0b00, m == 0b1, 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; + vsliden_b_1_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_b_2_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_b_3_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_b_4_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_h_1_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_h_2_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_h_3_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_h_4_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_w_1_vv : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_w_2_vv : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_w_3_vv : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vsliden_w_4_vv : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vslidevn_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0000, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0001, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0010, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidevn_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0011, sz == 0b10, m == 0b1, 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; + vslidehn_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'0100, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'0101, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'0110, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidehn_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'0111, sz == 0b10, m == 0b1, 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; + vslidep_b_1_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_b_2_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_b_3_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_b_4_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_h_1_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_h_2_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_h_3_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_h_4_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_w_1_vv : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_w_2_vv : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_w_3_vv : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vslidep_w_4_vv : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vslidevp_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1000, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1001, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1010, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidevp_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1011, sz == 0b10, m == 0b1, 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; + vslidehp_b_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_b_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_b_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_b_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_h_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_h_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_h_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_h_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_w_1_vv_m : KelvinV2ArgsType : func2 == 0b00'1100, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_w_2_vv_m : KelvinV2ArgsType : func2 == 0b00'1101, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_w_3_vv_m : KelvinV2ArgsType : func2 == 0b00'1110, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vslidehp_w_4_vv_m : KelvinV2ArgsType : func2 == 0b00'1111, sz == 0b10, m == 0b1, 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; + vsel_b_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vsel_b_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b10; + vsel_b_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vsel_b_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b10; + vsel_h_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vsel_h_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b10; + vsel_h_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vsel_h_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b10; + vsel_w_vv : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vsel_w_vx : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b10; + vsel_w_vv_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vsel_w_vx_m : KelvinV2ArgsType : func2 == 0b01'0000, sz == 0b10, m == 0b1, 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; + vevn_b_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vevn_b_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b10; + vevn_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vevn_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b10; + vevn_h_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vevn_h_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b10; + vevn_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vevn_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b10; + vevn_w_vv : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vevn_w_vx : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b10; + vevn_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vevn_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1000, sz == 0b10, m == 0b1, 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; + vodd_b_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vodd_b_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b10; + vodd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vodd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b10; + vodd_h_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vodd_h_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b10; + vodd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vodd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b10; + vodd_w_vv : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vodd_w_vx : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b10; + vodd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vodd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1001, sz == 0b10, m == 0b1, 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; + vevnodd_b_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vevnodd_b_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b10; + vevnodd_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vevnodd_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b10; + vevnodd_h_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vevnodd_h_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b10; + vevnodd_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vevnodd_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b10; + vevnodd_w_vv : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vevnodd_w_vx : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b10; + vevnodd_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vevnodd_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1010, sz == 0b10, m == 0b1, 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; + vzip_b_vv : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b00; + vzip_b_vx : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b0, func1 == 0b110, form == 0b10; + vzip_b_vv_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b00; + vzip_b_vx_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b00, m == 0b1, func1 == 0b110, form == 0b10; + vzip_h_vv : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b00; + vzip_h_vx : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b0, func1 == 0b110, form == 0b10; + vzip_h_vv_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b00; + vzip_h_vx_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b01, m == 0b1, func1 == 0b110, form == 0b10; + vzip_w_vv : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b00; + vzip_w_vx : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b0, func1 == 0b110, form == 0b10; + vzip_w_vv_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b00; + vzip_w_vx_m : KelvinV2ArgsType : func2 == 0b01'1100, sz == 0b10, m == 0b1, func1 == 0b110, form == 0b10; };
diff --git a/sim/kelvin_sim.cc b/sim/kelvin_sim.cc index 38f268b..ca5717a 100644 --- a/sim/kelvin_sim.cc +++ b/sim/kelvin_sim.cc
@@ -213,8 +213,8 @@ // Determine if this is being run interactively or as a batch job. if (interactive) { - mpact::sim::riscv::DebugCommandShell cmd_shell( - {{&kelvin_top, &elf_loader}}); + mpact::sim::riscv::DebugCommandShell cmd_shell; + cmd_shell.AddCore({&kelvin_top, [&elf_loader]() { return &elf_loader; }}); // Add custom commands to interactive debug command shell. cmd_shell.AddCommand( " reg info - print all scalar regs",
diff --git a/sim/kelvin_state.cc b/sim/kelvin_state.cc index d6aeaa2..36b06b6 100644 --- a/sim/kelvin_state.cc +++ b/sim/kelvin_state.cc
@@ -17,7 +17,6 @@ #include <any> #include <cstdint> #include <iostream> -#include <ostream> #include <string> #include "absl/log/check.h" @@ -47,11 +46,17 @@ mpact::sim::util::MemoryInterface *memory, mpact::sim::util::AtomicMemoryOpInterface *atomic_memory) : mpact::sim::riscv::RiscVState(id, xlen, memory, atomic_memory), - kisa_("kisa", static_cast<RiscVCsrEnum>(KelvinCsrEnum::kKIsa), this), - mcycle_("mcycle", RiscVCsrEnum::kMCycle, this), - mcycleh_("mcycleh", RiscVCsrEnum::kMCycleH, this), - minstret_("minstret", RiscVCsrEnum::kMInstret, this), - minstreth_("minstreth", RiscVCsrEnum::kMInstretH, this) { + kisa_("kisa", static_cast<RiscVCsrEnum>(KelvinCsrEnum::kKIsa), this) { + auto res = csr_set()->GetCsr("minstret"); + if (!res.ok()) { + LOG(FATAL) << "Failed to get minstret"; + } + minstret_ = res.value(); + res = csr_set()->GetCsr("minstreth"); + if (!res.ok()) { + LOG(FATAL) << "Failed to get minstret"; + } + minstreth_ = res.value(); set_vector_register_width(kVectorRegisterWidth); for (int i = 0; i < acc_register_.size(); ++i) { acc_register_[i].fill(0); @@ -66,19 +71,6 @@ } auto *misa = *result; misa->Set(kKelvinMisaVal); - - if (!csr_set()->AddCsr(&mcycle_).ok()) { - LOG(FATAL) << "Failed to register mcycle"; - } - if (!csr_set()->AddCsr(&mcycleh_).ok()) { - LOG(FATAL) << "Failed to register mcycleh"; - } - if (!csr_set()->AddCsr(&minstret_).ok()) { - LOG(FATAL) << "Failed to register minstret"; - } - if (!csr_set()->AddCsr(&minstreth_).ok()) { - LOG(FATAL) << "Failed to register minstreth"; - } } KelvinState::KelvinState(absl::string_view id, @@ -86,10 +78,6 @@ mpact::sim::util::MemoryInterface *memory) : KelvinState(id, xlen, memory, nullptr) {} -KelvinState::KelvinState(absl::string_view id, - mpact::sim::riscv::RiscVXlen xlen) - : KelvinState(id, xlen, nullptr, nullptr) {} - void KelvinState::MPause(const Instruction *inst) { for (auto &handler : on_mpause_) { bool res = handler(inst); @@ -146,18 +134,4 @@ log_args_.clear(); } -void KelvinState::IncrementMCycle(uint64_t value) { - uint64_t new_cycle = - (mcycle_.GetUint64() | (mcycleh_.GetUint64() << 32)) + value; - mcycle_.Set(new_cycle & 0xFFFFFFFF); - mcycleh_.Set(new_cycle >> 32); -} - -void KelvinState::IncrementMInstret(uint64_t value) { - uint64_t new_instret = - (minstret_.GetUint64() | (minstreth_.GetUint64() << 32)) + value; - minstret_.Set(new_instret & 0xFFFFFFFF); - minstreth_.Set(new_instret >> 32); -} - } // namespace kelvin::sim
diff --git a/sim/kelvin_state.h b/sim/kelvin_state.h index 7788fb1..c9fe51d 100644 --- a/sim/kelvin_state.h +++ b/sim/kelvin_state.h
@@ -65,7 +65,6 @@ mpact::sim::util::AtomicMemoryOpInterface *atomic_memory); KelvinState(absl::string_view id, mpact::sim::riscv::RiscVXlen xlen, mpact::sim::util::MemoryInterface *memory); - KelvinState(absl::string_view id, mpact::sim::riscv::RiscVXlen xlen); ~KelvinState() override = default; // Deleted Constructors and operators. @@ -97,9 +96,6 @@ on_mpause_.emplace_back(std::move(handler)); } - void IncrementMCycle(uint64_t value); - void IncrementMInstret(uint64_t value); - private: uint32_t vector_length_{kVectorLengthInBits}; @@ -118,11 +114,9 @@ // Kelvin-specific CSR, contains information about the Kelvin ISA version. mpact::sim::riscv::RiscV32SimpleCsr kisa_; - // mcycle/mcycleh CSR. - mpact::sim::riscv::RiscV32SimpleCsr mcycle_; - mpact::sim::riscv::RiscV32SimpleCsr mcycleh_; - mpact::sim::riscv::RiscV32SimpleCsr minstret_; - mpact::sim::riscv::RiscV32SimpleCsr minstreth_; + // minstret CSR. + mpact::sim::riscv::RiscVCsrInterface *minstret_; + mpact::sim::riscv::RiscVCsrInterface *minstreth_; }; } // namespace kelvin::sim
diff --git a/sim/kelvin_top.cc b/sim/kelvin_top.cc index 5bb2395..6cf7eba 100644 --- a/sim/kelvin_top.cc +++ b/sim/kelvin_top.cc
@@ -29,6 +29,7 @@ #include <utility> #include "sim/decoder.h" +#include "sim/kelvin_action_point_memory_interface.h" #include "sim/kelvin_enums.h" #include "sim/kelvin_state.h" #include "sim/proto/kelvin_trace.pb.h" @@ -41,11 +42,13 @@ #include "absl/strings/str_cat.h" #include "absl/synchronization/notification.h" #include "riscv/riscv_arm_semihost.h" -#include "riscv/riscv_breakpoint.h" +#include "riscv/riscv_counter_csr.h" #include "riscv/riscv_fp_state.h" #include "riscv/riscv_register.h" #include "riscv/riscv_register_aliases.h" #include "riscv/riscv_state.h" +#include "mpact/sim/generic/action_point_manager_base.h" +#include "mpact/sim/generic/breakpoint_manager.h" #include "mpact/sim/generic/component.h" #include "mpact/sim/generic/core_debug_interface.h" #include "mpact/sim/generic/data_buffer.h" @@ -65,6 +68,11 @@ namespace kelvin::sim { +using ::mpact::sim::generic::ActionPointManagerBase; +using ::mpact::sim::generic::BreakpointManager; +using ::mpact::sim::generic::DecodeCache; +using ::mpact::sim::riscv::RiscVCounterCsr; +using ::mpact::sim::riscv::RiscVCounterCsrHigh; using ::mpact::sim::generic::operator*; // NOLINT: clang-tidy false positive. constexpr char kKelvinName[] = "Kelvin"; @@ -112,7 +120,9 @@ delete run_halted_; } - delete rv_bp_manager_; + delete bp_manager_; + delete ap_manager_; + delete kelvin_ap_memory_interface_; delete decode_cache_; delete kelvin_decoder_; delete state_; @@ -127,7 +137,7 @@ state_ = new sim::KelvinState(kKelvinName, mpact::sim::riscv::RiscVXlen::RV32, memory_); state_->set_max_physical_address(kKelvinMaxMemoryAddress); - fp_state_ = new mpact::sim::riscv::RiscVFPState(state_); + fp_state_ = new mpact::sim::riscv::RiscVFPState(state_->csr_set(), state_); state_->set_rv_fp(fp_state_); pc_ = state_->registers()->at(sim::KelvinState::kPcName); // Set up the decoder and decode cache. @@ -144,12 +154,15 @@ CHECK_OK(AddCounter(&counter_num_instructions_)) << "Failed to register counter"; - // Always return 4-byte breakpoint instruction size - rv_bp_manager_ = new mpact::sim::riscv::RiscVBreakpointManager( - memory_, - absl::bind_front(&mpact::sim::generic::DecodeCache::Invalidate, - decode_cache_), - [](uint64_t, uint32_t) -> int { return 4; }); + // Set up break and action points. + kelvin_ap_memory_interface_ = new KelvinActionPointMemoryInterface( + state_->memory(), + absl::bind_front(&DecodeCache::Invalidate, decode_cache_)); + ap_manager_ = new ActionPointManagerBase(kelvin_ap_memory_interface_); + bp_manager_ = new BreakpointManager(ap_manager_, [this]() { + RequestHalt(HaltReason::kSoftwareBreakpoint, nullptr); + }); + // Make sure the architectural and abi register aliases are added. std::string reg_name; for (int i = 0; i < 32; i++) { @@ -168,9 +181,10 @@ if (absl::GetFlag(FLAGS_use_semihost) && semihost_->IsSemihostingCall(inst)) { semihost_->OnEBreak(inst); - } else if (rv_bp_manager_->HasBreakpoint( - inst->address())) { // Software breakpoint. - RequestHalt(HaltReason::kSoftwareBreakpoint, inst); + } else if (ap_manager_->IsActionPointActive(inst->address())) { + // Possible software breakpoint. + RequestHalt(HaltReason::kActionPoint, inst); + ap_manager_->PerformActions(inst->address()); } else { // The default Kelvin simulation mode. std::cout << "Program exits with fault" << '\n'; RequestHalt(kHaltAbort, inst); @@ -220,6 +234,29 @@ return result; }); + // Connect counters to instret(h) and mcycle(h) CSRs. + auto csr_res = state_->csr_set()->GetCsr("minstret"); + // Minstret/minstreth. + auto *minstret = reinterpret_cast<RiscVCounterCsr<uint32_t, KelvinState> *>( + csr_res.value()); + minstret->set_counter(&counter_num_instructions_); + csr_res = state_->csr_set()->GetCsr("minstreth"); + CHECK_OK(csr_res.status()) << "Failed to get minstret CSR"; + auto *minstreth = + reinterpret_cast<RiscVCounterCsrHigh<KelvinState> *>(csr_res.value()); + minstreth->set_counter(&counter_num_instructions_); + // Mcycle/mcycleh. + csr_res = state_->csr_set()->GetCsr("mcycle"); + CHECK_OK(csr_res.status()) << "Failed to get mcycle CSR"; + auto *mcycle = reinterpret_cast<RiscVCounterCsr<uint32_t, KelvinState> *>( + csr_res.value()); + mcycle->set_counter(&counter_num_cycles_); + csr_res = state_->csr_set()->GetCsr("mcycleh"); + CHECK_OK(csr_res.status()) << "Failed to get mcycleh CSR"; + auto *mcycleh = + reinterpret_cast<RiscVCounterCsrHigh<KelvinState> *>(csr_res.value()); + mcycleh->set_counter(&counter_num_cycles_); + semihost_->set_exit_callback( [this]() { RequestHalt(HaltReason::kSemihostHaltRequest, nullptr); }); } @@ -239,11 +276,20 @@ return absl::OkStatus(); } +absl::Status KelvinTop::Halt(HaltReason halt_reason) { + RequestHalt(halt_reason, nullptr); + return absl::OkStatus(); +} + +absl::Status KelvinTop::Halt(HaltReasonValueType halt_reason) { + RequestHalt(halt_reason, nullptr); + return absl::OkStatus(); +} + absl::Status KelvinTop::StepPastBreakpoint() { uint64_t pc = state_->pc_operand()->AsUint64(0); - uint64_t bpt_pc = pc; // Disable the breakpoint. Status will show error if there is no breakpoint. - auto status = rv_bp_manager_->DisableBreakpoint(pc); + (void)ap_manager_->ap_memory_interface()->WriteOriginalInstruction(pc); // Execute the real instruction. auto real_inst = decode_cache_->GetDecodedInstruction(pc); real_inst->IncRef(); @@ -260,10 +306,7 @@ IncrementInstructionCount(1); real_inst->DecRef(); // Re-enable the breakpoint. - if (status.ok()) { - status = rv_bp_manager_->EnableBreakpoint(bpt_pc); - if (!status.ok()) return status; - } + (void)ap_manager_->ap_memory_interface()->WriteBreakpointInstruction(pc); return absl::OkStatus(); } @@ -281,8 +324,8 @@ halted_ = false; // First check to see if the previous halt was due to a breakpoint. If so, // need to step over the breakpoint. - if (halt_reason_ == *HaltReason::kSoftwareBreakpoint) { - halt_reason_ = *HaltReason::kNone; + if (need_to_step_over_) { + need_to_step_over_ = false; auto status = StepPastBreakpoint(); if (!status.ok()) return status; count++; @@ -318,6 +361,18 @@ IncrementInstructionCount(1); // Get the next pc value. next_pc = pc_operand->AsUint64(0); + if (!halted_) continue; + // If it's an action point, just step over and continue. + if (halt_reason_ == *HaltReason::kActionPoint) { + auto status = StepPastBreakpoint(); + if (!status.ok()) return status; + // Reset the halt reason and continue; + halted_ = false; + halt_reason_ = *HaltReason::kNone; + need_to_step_over_ = false; + continue; + } + break; } // Update the pc register, now that it can be read. if (halt_reason_ == *HaltReason::kSoftwareBreakpoint) { @@ -343,8 +398,8 @@ } // First check to see if the previous halt was due to a breakpoint. If so, // need to step over the breakpoint. - if (halt_reason_ == *HaltReason::kSoftwareBreakpoint) { - halt_reason_ = *HaltReason::kNone; + if (need_to_step_over_) { + need_to_step_over_ = false; auto status = StepPastBreakpoint(); if (!status.ok()) return status; } @@ -414,6 +469,22 @@ IncrementInstructionCount(1); // Get the next pc value. next_pc = pc_operand->AsUint64(0); + if (!halted_) continue; + // If it's an action point, just step over and continue executing, as + // this is not a full breakpoint. + if (halt_reason_ == *HaltReason::kActionPoint) { + auto status = StepPastBreakpoint(); + if (!status.ok()) { + // If there is an error, signal a simulator error. + halt_reason_ = *HaltReason::kSimulatorError; + break; + }; + // Reset the halt reason and continue; + halted_ = false; + halt_reason_ = *HaltReason::kNone; + continue; + } + break; } // Update the pc register, now that it can be read (since we are not // running). @@ -595,7 +666,7 @@ } bool KelvinTop::HasBreakpoint(uint64_t address) { - return rv_bp_manager_->HasBreakpoint(address); + return bp_manager_->HasBreakpoint(address); } absl::Status KelvinTop::SetSwBreakpoint(uint64_t address) { @@ -605,11 +676,11 @@ "SetSwBreakpoint: Core must be halted"); } // If there is no breakpoint manager, return an error. - if (rv_bp_manager_ == nullptr) { + if (bp_manager_ == nullptr) { return absl::InternalError("Breakpoints are not enabled"); } // Try setting the breakpoint. - return rv_bp_manager_->SetBreakpoint(address); + return bp_manager_->SetBreakpoint(address); } absl::Status KelvinTop::ClearSwBreakpoint(uint64_t address) { @@ -618,10 +689,10 @@ return absl::FailedPreconditionError( "ClearSwBreakpoing: Core must be halted"); } - if (rv_bp_manager_ == nullptr) { + if (bp_manager_ == nullptr) { return absl::InternalError("Breakpoints are not enabled"); } - return rv_bp_manager_->ClearBreakpoint(address); + return bp_manager_->ClearBreakpoint(address); } absl::Status KelvinTop::ClearAllSwBreakpoints() { @@ -630,10 +701,10 @@ return absl::FailedPreconditionError( "ClearAllSwBreakpoints: Core must be halted"); } - if (rv_bp_manager_ == nullptr) { + if (bp_manager_ == nullptr) { return absl::InternalError("Breakpoints are not enabled"); } - rv_bp_manager_->ClearAllBreakpoints(); + bp_manager_->ClearAllBreakpoints(); return absl::OkStatus(); } @@ -652,17 +723,17 @@ mpact::sim::generic::Instruction *inst = nullptr; // If requesting the disassembly for an instruction at a breakpoint, return // that of the original instruction instead. - if (rv_bp_manager_->IsBreakpoint(address)) { - auto bp_pc = address; - // Disable the breakpoint. - auto status = rv_bp_manager_->DisableBreakpoint(bp_pc); - if (!status.ok()) return status; + // If requesting the disassembly for an instruction at an action point, return + // that of the original instruction instead. + if (ap_manager_->IsActionPointActive(address)) { + // Write the original instruction back to memory. + (void)ap_manager_->ap_memory_interface()->WriteOriginalInstruction(address); // Get the real instruction. - inst = decode_cache_->GetDecodedInstruction(bp_pc); + inst = decode_cache_->GetDecodedInstruction(address); auto disasm = inst != nullptr ? inst->AsString() : "Invalid instruction"; - // Re-enable the breakpoint. - status = rv_bp_manager_->EnableBreakpoint(bp_pc); - if (!status.ok()) return status; + // Restore the breakpoint instruction. + (void)ap_manager_->ap_memory_interface()->WriteBreakpointInstruction( + address); return disasm; } @@ -706,16 +777,20 @@ void KelvinTop::RequestHalt(HaltReasonValueType halt_reason, const mpact::sim::generic::Instruction *inst) { - // First set the halt_reason_, then the half flag. + // First set the halt_reason_, then the halt flag. halt_reason_ = halt_reason; halted_ = true; + // If the halt reason is either sw breakpoint or action point, set + // need_to_step_over to true. + if ((halt_reason_ == *HaltReason::kSoftwareBreakpoint) || + (halt_reason_ == *HaltReason::kActionPoint)) { + need_to_step_over_ = true; + } } void KelvinTop::RequestHalt(HaltReason halt_reason, const mpact::sim::generic::Instruction *inst) { - // First set the halt_reason_, then the half flag. - halt_reason_ = static_cast<HaltReasonValueType>(halt_reason); - halted_ = true; + RequestHalt(*halt_reason, inst); } void KelvinTop::SetPc(uint64_t value) { @@ -728,12 +803,10 @@ void KelvinTop::IncrementCycleCount(uint64_t value) { counter_num_cycles_.Increment(value); - state_->IncrementMCycle(value); } void KelvinTop::IncrementInstructionCount(uint64_t value) { counter_num_instructions_.Increment(value); - state_->IncrementMInstret(value); } } // namespace kelvin::sim
diff --git a/sim/kelvin_top.h b/sim/kelvin_top.h index 9b48889..8721e08 100644 --- a/sim/kelvin_top.h +++ b/sim/kelvin_top.h
@@ -21,6 +21,7 @@ #include <cstdint> #include <string> +#include "sim/kelvin_action_point_memory_interface.h" #include "sim/kelvin_enums.h" #include "sim/kelvin_state.h" #include "absl/container/flat_hash_map.h" @@ -29,8 +30,9 @@ #include "absl/status/statusor.h" #include "absl/synchronization/notification.h" #include "riscv/riscv_arm_semihost.h" -#include "riscv/riscv_breakpoint.h" #include "riscv/riscv_fp_state.h" +#include "mpact/sim/generic/action_point_manager_base.h" +#include "mpact/sim/generic/breakpoint_manager.h" #include "mpact/sim/generic/component.h" #include "mpact/sim/generic/core_debug_interface.h" #include "mpact/sim/generic/counters.h" @@ -38,6 +40,7 @@ #include "mpact/sim/generic/decode_cache.h" #include "mpact/sim/generic/decoder_interface.h" #include "mpact/sim/generic/register.h" +#include "mpact/sim/generic/type_helpers.h" #include "mpact/sim/util/memory/memory_interface.h" #include "mpact/sim/util/memory/memory_watcher.h" @@ -45,6 +48,10 @@ namespace kelvin::sim { +using ::mpact::sim::generic::operator*; // NOLINT: is used below (clang error). + +using ::mpact::sim::generic::ActionPointManagerBase; +using ::mpact::sim::generic::BreakpointManager; using ::mpact::sim::generic::DataBuffer; using HaltReason = mpact::sim::generic::CoreDebugInterface::HaltReason; using HaltReasonValueType = @@ -69,6 +76,8 @@ // Methods inherited from CoreDebugInterface. absl::Status Halt() override; + absl::Status Halt(HaltReason halt_reason) override; + absl::Status Halt(HaltReasonValueType halt_reason) override; absl::StatusOr<int> Step(int num) override; absl::Status Run() override; absl::Status Wait() override; @@ -137,8 +146,15 @@ // The local Kelvin state. sim::KelvinState *state_; mpact::sim::riscv::RiscVFPState *fp_state_; + // Memory interface used by action point manager. + KelvinActionPointMemoryInterface *kelvin_ap_memory_interface_ = nullptr; + // Action point manager. + ActionPointManagerBase *ap_manager_ = nullptr; // Breakpoint manager. - mpact::sim::riscv::RiscVBreakpointManager *rv_bp_manager_ = nullptr; + BreakpointManager *bp_manager_ = nullptr; + // Flat to indicate that the current instruction is a break/action point that + // needs to be stepped over. + bool need_to_step_over_ = false; // The pc register instance. mpact::sim::generic::RegisterBase *pc_; // Kelvin decoder decoder instance.
diff --git a/sim/proto/kelvin_trace.proto b/sim/proto/kelvin_trace.proto index 92aa5a8..02e0c88 100644 --- a/sim/proto/kelvin_trace.proto +++ b/sim/proto/kelvin_trace.proto
@@ -12,16 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -syntax = "proto2"; +edition = "2023"; package kelvin.sim.proto; +option features.utf8_validation = NONE; option java_multiple_files = true; message TraceEntry { - optional uint32 address = 1; - optional uint32 opcode = 2; - optional string disasm = 3; + uint32 address = 1; + uint32 opcode = 2; + string disasm = 3; } message TraceData {
diff --git a/sim/renode/kelvin_renode.cc b/sim/renode/kelvin_renode.cc index adef63e..ffb5a8f 100644 --- a/sim/renode/kelvin_renode.cc +++ b/sim/renode/kelvin_renode.cc
@@ -65,6 +65,12 @@ KelvinRenode::~KelvinRenode() { delete kelvin_top_; } absl::Status KelvinRenode::Halt() { return kelvin_top_->Halt(); } +absl::Status KelvinRenode::Halt(HaltReason halt_reason) { + return kelvin_top_->Halt(halt_reason); +} +absl::Status KelvinRenode::Halt(HaltReasonValueType halt_reason) { + return kelvin_top_->Halt(halt_reason); +} absl::StatusOr<int> KelvinRenode::Step(int num_steps) { return kelvin_top_->Step(num_steps); }
diff --git a/sim/renode/kelvin_renode.h b/sim/renode/kelvin_renode.h index 43f4ed1..809651e 100644 --- a/sim/renode/kelvin_renode.h +++ b/sim/renode/kelvin_renode.h
@@ -56,6 +56,8 @@ // Request that core stop running override; absl::Status Halt() override; + absl::Status Halt(HaltReason halt_reason) override; + absl::Status Halt(HaltReasonValueType halt_reason) override; // Step the core by num instructions. absl::StatusOr<int> Step(int num) override; // Allow the core to free-run. The loop to run the instructions should be
diff --git a/sim/test/BUILD b/sim/test/BUILD index e5d1b57..efcca3b 100644 --- a/sim/test/BUILD +++ b/sim/test/BUILD
@@ -43,6 +43,7 @@ "@com_google_googletest//:gtest_main", "@com_google_mpact-riscv//riscv:riscv_state", "@com_google_mpact-sim//mpact/sim/generic:arch_state", + "@com_google_mpact-sim//mpact/sim/util/memory", ], ) @@ -97,6 +98,7 @@ "@com_google_absl//absl/strings", "@com_google_googletest//:gtest_main", "@com_google_mpact-sim//mpact/sim/generic:core", + "@com_google_mpact-sim//mpact/sim/generic:core_debug_interface", "@com_google_mpact-sim//mpact/sim/util/memory", "@com_google_mpact-sim//mpact/sim/util/program_loader:elf_loader", ],
diff --git a/sim/test/kelvin_decoder_test.cc b/sim/test/kelvin_decoder_test.cc index dae78c7..d719f8b 100644 --- a/sim/test/kelvin_decoder_test.cc +++ b/sim/test/kelvin_decoder_test.cc
@@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include <cstdint> #include <ios> #include <string> @@ -44,8 +45,9 @@ class KelvinDecoderTest : public testing::Test { protected: KelvinDecoderTest() - : state_("kelvin_decoder_test", RiscVXlen::RV32), - memory_(0), + : memory_(0), + state_("kelvin_decoder_test", RiscVXlen::RV32, &memory_), + loader_(&memory_), decoder_(&state_, &memory_) { const std::string input_file = @@ -61,8 +63,8 @@ ~KelvinDecoderTest() override { delete symbol_accessor_; } ELFIO::elfio elf_reader_; - kelvin::sim::KelvinState state_; mpact::sim::util::FlatDemandMemory memory_; + kelvin::sim::KelvinState state_; mpact::sim::util::ElfProgramLoader loader_; kelvin::sim::KelvinDecoder decoder_; SymbolAccessor *symbol_accessor_;
diff --git a/sim/test/kelvin_encoding_test.cc b/sim/test/kelvin_encoding_test.cc index 8ebd7ca..5d1a38f 100644 --- a/sim/test/kelvin_encoding_test.cc +++ b/sim/test/kelvin_encoding_test.cc
@@ -24,11 +24,13 @@ #include "riscv/riscv_register.h" #include "riscv/riscv_state.h" #include "mpact/sim/generic/register.h" +#include "mpact/sim/util/memory/flat_demand_memory.h" namespace { using kelvin::sim::KelvinState; using kelvin::sim::isa32::KelvinEncoding; +using mpact::sim::util::FlatDemandMemory; using SlotEnum = kelvin::sim::isa32::SlotEnum; using OpcodeEnum = kelvin::sim::isa32::OpcodeEnum; using SourceOpEnum = kelvin::sim::isa32::SourceOpEnum; @@ -120,11 +122,14 @@ class KelvinEncodingTest : public testing::Test { protected: KelvinEncodingTest() { - state_ = new KelvinState("test", mpact::sim::riscv::RiscVXlen::RV32); + memory_ = new FlatDemandMemory(); + state_ = + new KelvinState("test", mpact::sim::riscv::RiscVXlen::RV32, memory_); enc_ = new KelvinEncoding(state_); } ~KelvinEncodingTest() override { delete enc_; + delete memory_; delete state_; } @@ -144,6 +149,7 @@ return reinterpret_cast<T *>(dest); } + FlatDemandMemory *memory_; KelvinState *state_; KelvinEncoding *enc_; };
diff --git a/sim/test/kelvin_vector_instructions_test_base.h b/sim/test/kelvin_vector_instructions_test_base.h index 1e874c3..ceb9c3f 100644 --- a/sim/test/kelvin_vector_instructions_test_base.h +++ b/sim/test/kelvin_vector_instructions_test_base.h
@@ -433,8 +433,8 @@ // Creates source and destination scalar register operands for the registers // named in the two vectors and appends them to the given instruction. void AppendRegisterOperands(Instruction *inst, - const std::vector<std::string> &sources, - const std::vector<std::string> &destinations) { + absl::Span<const std::string> sources, + absl::Span<const std::string> destinations) { for (auto ®_name : sources) { auto *reg = state_->GetRegister<RV32Register>(reg_name).first; inst->AppendSource(reg->CreateSourceOperand());