No public description

PiperOrigin-RevId: 992520685
Change-Id: I77b5a17ab8aeb9f4bcc377230efb9ee68b0eb5a9
diff --git a/mpact/sim/decoder/instruction_set_visitor.cc b/mpact/sim/decoder/instruction_set_visitor.cc
index 8cd97f2..1e6a02b 100644
--- a/mpact/sim/decoder/instruction_set_visitor.cc
+++ b/mpact/sim/decoder/instruction_set_visitor.cc
@@ -835,6 +835,9 @@
   if (ctx->SIZE() != nullptr) {  // Default size.
     int value = std::stoi(ctx->NUMBER()->getText(), nullptr, 0);
     slot->set_default_instruction_size(value);
+    if (slot->default_instruction() != nullptr) {
+      slot->default_instruction()->opcode()->set_instruction_size(value);
+    }
     return;
   }
   if (ctx->LATENCY() != nullptr) {  // Default latency.
@@ -876,6 +879,8 @@
     }
     auto* default_instruction = new Instruction(
         slot->instruction_set()->opcode_factory()->CreateDefaultOpcode(), slot);
+    default_instruction->opcode()->set_instruction_size(
+        slot->default_instruction_size());
     bool has_disasm = false;
     bool has_semfunc = false;
     for (auto* attribute : ctx->opcode_attribute_list()->opcode_attribute()) {
diff --git a/mpact/sim/decoder/opcode.h b/mpact/sim/decoder/opcode.h
index 6bee33c..0ba86bb 100644
--- a/mpact/sim/decoder/opcode.h
+++ b/mpact/sim/decoder/opcode.h
@@ -276,7 +276,7 @@
 
  private:
   Opcode(absl::string_view name, int value);
-  int instruction_size_;
+  int instruction_size_ = 0;
   Opcode* child_ = nullptr;
   Opcode* parent_ = nullptr;
   std::string predicate_op_name_;
diff --git a/mpact/sim/decoder/slot.cc b/mpact/sim/decoder/slot.cc
index bb348c8..2361721 100644
--- a/mpact/sim/decoder/slot.cc
+++ b/mpact/sim/decoder/slot.cc
@@ -1284,7 +1284,10 @@
       GenerateResourceSetter(default_instruction_, encoding_type), ",\n",
       "    ", GenerateAttributeSetter(default_instruction_), ",\n",
       "    SemFuncSetter{", default_instruction_->semfunc_code_string(), "}, ",
-      default_instruction_->opcode()->instruction_size(), "}),\n");
+      default_instruction_->opcode()->instruction_size() == 0
+          ? default_instruction_size()
+          : default_instruction_->opcode()->instruction_size(),
+      "}),\n");
   for (auto const& [unused, inst_ptr] : instruction_map_) {
     auto* instruction = inst_ptr;
     std::string opcode_name = instruction->opcode()->pascal_name();