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());