Fixed instruction_info initializer. PiperOrigin-RevId: 698176169 Change-Id: Iee18212f1dab06bda31ba89a39f682e2724926d6
diff --git a/mpact/sim/decoder/instruction_set_visitor.cc b/mpact/sim/decoder/instruction_set_visitor.cc index 14e9bdf..e9f7f37 100644 --- a/mpact/sim/decoder/instruction_set_visitor.cc +++ b/mpact/sim/decoder/instruction_set_visitor.cc
@@ -2234,13 +2234,14 @@ "using ResourceSetter = void(*)(Instruction *, ", encoding_base_name, "*, SlotEnum, int);\n" + "using SemFuncSetter = std::vector<SemFunc>;\n" "using AttributeSetter = void(*)(Instruction *);\n" "struct InstructionInfo {\n" " OperandSetter operand_setter;\n" " DisassemblySetter disassembly_setter;\n" " ResourceSetter resource_setter;\n" " AttributeSetter attribute_setter;\n" - " std::vector<SemFunc> semfunc;\n" + " SemFuncSetter semfunc;\n" " int instruction_size;\n" "};\n" "\n"); @@ -2262,7 +2263,7 @@ // Include files. absl::StrAppend(&output, "#include \"", hdr_file_name, "\"\n"); absl::StrAppend(&output, - "\n" + "\n#include <array>\n\n" "#include \"absl/strings/str_format.h\"\n\n"); for (auto &include_file : include_files_) {
diff --git a/mpact/sim/decoder/slot.cc b/mpact/sim/decoder/slot.cc index de74c0b..d8ca513 100644 --- a/mpact/sim/decoder/slot.cc +++ b/mpact/sim/decoder/slot.cc
@@ -861,13 +861,13 @@ absl::StrCat(pascal_name(), "SlotSetOperandsNull"), encoding_type, default_instruction_->opcode())); absl::StrAppend( - &output, " {{OperandSetter{", pascal_name(), + &output, " {OperandSetter{", pascal_name(), "SlotSetOperandsNull},\n" " ", GenerateDisassemblySetter(default_instruction_), ",\n", " ", GenerateResourceSetter(default_instruction_, encoding_type), ",\n", - " ", GenerateAttributeSetter(default_instruction_), ",\n", " {", - default_instruction_->semfunc_code_string(), "}, ", + " ", GenerateAttributeSetter(default_instruction_), ",\n", + " SemFuncSetter{", default_instruction_->semfunc_code_string(), "}, ", default_instruction_->opcode()->instruction_size(), "},\n"); for (auto const &[unused, inst_ptr] : instruction_map_) { auto *instruction = inst_ptr; @@ -910,10 +910,9 @@ " ", GenerateDisassemblySetter(instruction), ",\n", " ", GenerateResourceSetter(instruction, encoding_type), ",\n", " ", GenerateAttributeSetter(instruction), ",\n", - " {", code_str, "}, ", + " SemFuncSetter{", code_str, "}, ", instruction->opcode()->instruction_size(), "},\n"); } - absl::StrAppend(&output, " }"); return output; } @@ -957,8 +956,8 @@ &output, class_name, "::", class_name, "(ArchState *arch_state) :\n" " arch_state_(arch_state),\n", - " instruction_info_(\n", ListFuncGetterInitializations(encoding_type), - ") {}\n", + " instruction_info_{{\n", ListFuncGetterInitializations(encoding_type), + "}} {}\n", "\n" "Instruction *", class_name, "::Decode(uint64_t address, ", encoding_type,