diff --git a/clients/vscode-hlasmplugin/CHANGELOG.md b/clients/vscode-hlasmplugin/CHANGELOG.md index d339156fa..1469ccf53 100644 --- a/clients/vscode-hlasmplugin/CHANGELOG.md +++ b/clients/vscode-hlasmplugin/CHANGELOG.md @@ -6,6 +6,7 @@ - Allow viewing content generated by AINSERT instruction and preprocessors - Expand the list of associated file extensions - DB2 preprocessor now supports the VERSION option +- Instruction set versioning support #### Fixed - Fixed an issue preventing correct N' attribute evaluation of empty subscript arrays diff --git a/clients/vscode-hlasmplugin/proc_grps_schema b/clients/vscode-hlasmplugin/proc_grps_schema index 5551c10bc..e3244ad25 100644 --- a/clients/vscode-hlasmplugin/proc_grps_schema +++ b/clients/vscode-hlasmplugin/proc_grps_schema @@ -48,21 +48,50 @@ "asm_options": { "type": "object", "description": "List of assembler options", - "properties": { - "SYSPARM": { - "type": "string", - "description": "It specifies the character string the assembler assigns to the &SYSPARM system variable symbol.", - "maxlength": 255 - }, - "PROFILE": { - "type": "string", - "description": "Profile Member to be copied into the source program." - }, - "SYSTEM_ID": { - "type": "string", - "description": "Provides the value for the SYSTEM_ID system variable. Defaults to 'z/OS 02.04.00' when omitted." - } + "properties": { + "OPTABLE": { + "type": "string", + "description": "Specifies the instruction set to use.", + "enum": [ + "UNI", + "DOS", + "370", + "XA", + "ESA", + "ZOP", + "ZS1", + "YOP", + "ZS2", + "Z9", + "ZS3", + "Z10", + "ZS4", + "Z11", + "ZS5", + "Z12", + "ZS6", + "Z13", + "ZS7", + "Z14", + "ZS8", + "Z15", + "ZS9" + ] + }, + "SYSPARM": { + "type": "string", + "description": "Specifies the character string the assembler assigns to the &SYSPARM system variable symbol.", + "maxLength": 255 + }, + "PROFILE": { + "type": "string", + "description": "Profile Member to be copied into the source program." + }, + "SYSTEM_ID": { + "type": "string", + "description": "Provides the value for the SYSTEM_ID system variable. Defaults to 'z/OS 02.04.00' when omitted." } + } }, "preprocessor": { "description": "Defines optional preprocessor pass for open code.", @@ -92,7 +121,7 @@ "version": { "type": "string", "description": "The DB2 package VERSION string", - "maxlength": 64 + "maxLength": 64 } } } diff --git a/parser_library/src/CMakeLists.txt b/parser_library/src/CMakeLists.txt index 1035e622a..687821c40 100644 --- a/parser_library/src/CMakeLists.txt +++ b/parser_library/src/CMakeLists.txt @@ -29,6 +29,7 @@ target_sources(parser_library PRIVATE ebcdic_encoding.cpp ebcdic_encoding.h error_messages.h + instruction_set_version.h lib_config.cpp location.h preprocessor_options.h diff --git a/parser_library/src/checking/instruction_checker.cpp b/parser_library/src/checking/instruction_checker.cpp index 6d30b3f36..b16875880 100644 --- a/parser_library/src/checking/instruction_checker.cpp +++ b/parser_library/src/checking/instruction_checker.cpp @@ -81,7 +81,6 @@ const std::map> assembl a.add("COM", { label_types::OPTIONAL, label_types::ORD_SYMBOL, label_types::SEQUENCE_SYMBOL, label_types::VAR_SYMBOL }); a.add("COPY", { label_types::OPTIONAL, label_types::SEQUENCE_SYMBOL }); - a.add("COPY", { label_types::OPTIONAL, label_types::SEQUENCE_SYMBOL }); a.add("CSECT", { label_types::OPTIONAL, label_types::ORD_SYMBOL, label_types::SEQUENCE_SYMBOL, label_types::VAR_SYMBOL }); a.add("CXD", diff --git a/parser_library/src/checking/instruction_checker.h b/parser_library/src/checking/instruction_checker.h index 499a09085..db6b8afe2 100644 --- a/parser_library/src/checking/instruction_checker.h +++ b/parser_library/src/checking/instruction_checker.h @@ -42,7 +42,7 @@ class assembler_checker final : public instruction_checker const std::vector& operand_vector, const range& stmt_range, const diagnostic_collector& add_diagnostic) const override; - // map of all assembler instruction maes to their representations + // map of all assembler instruction names to their representations static const std::map> assembler_instruction_map; diff --git a/parser_library/src/compiler_options.h b/parser_library/src/compiler_options.h index 7a1881424..98c16a22a 100644 --- a/parser_library/src/compiler_options.h +++ b/parser_library/src/compiler_options.h @@ -17,6 +17,8 @@ #include +#include "instruction_set_version.h" + // This file contains assembler compiler options definitions. namespace hlasm_plugin::parser_library { @@ -25,6 +27,9 @@ struct asm_option std::string sysparm; std::string profile; + static constexpr instruction_set_version instr_set_default = instruction_set_version::UNI; + instruction_set_version instr_set = instr_set_default; + static const std::string system_id_default; std::string system_id = system_id_default; diff --git a/parser_library/src/config/proc_grps.cpp b/parser_library/src/config/proc_grps.cpp index d450a258f..baf508ef3 100644 --- a/parser_library/src/config/proc_grps.cpp +++ b/parser_library/src/config/proc_grps.cpp @@ -14,6 +14,7 @@ #include "proc_grps.h" +#include "instruction_set_version.h" #include "nlohmann/json.hpp" namespace hlasm_plugin::parser_library::config { @@ -43,6 +44,8 @@ void from_json(const nlohmann::json& j, library& p) void to_json(nlohmann::json& j, const assembler_options& p) { j = nlohmann::json::object(); + if (p.optable.size()) + j["OPTABLE"] = p.optable; if (p.profile.size()) j["PROFILE"] = p.profile; if (p.sysparm.size()) @@ -55,6 +58,8 @@ void from_json(const nlohmann::json& j, assembler_options& p) if (!j.is_object()) throw nlohmann::json::other_error::create(501, "asm_options must be an object."); + if (auto it = j.find("OPTABLE"); it != j.end()) + it->get_to(p.optable); if (auto it = j.find("PROFILE"); it != j.end()) it->get_to(p.profile); if (auto it = j.find("SYSPARM"); it != j.end()) @@ -215,6 +220,23 @@ void from_json(const nlohmann::json& j, proc_grps& p) it->get_to(p.macro_extensions); } +namespace { +bool optable_valid(std::string_view optable) noexcept +{ +#ifdef __cpp_lib_ranges + return optable.size() == 0 + || std::ranges::any_of(instr_set_version_equivalents, [optable](auto item) { return optable == item.first; }); +#else + return optable.size() == 0 + || std::any_of(std::begin(instr_set_version_equivalents), + std::end(instr_set_version_equivalents), + [optable](auto item) { return optable == item.first; }); +#endif +} +} // namespace + +bool assembler_options::valid() const noexcept { return sysparm.size() < 256 && optable_valid(optable); } + namespace { struct preprocessor_validator { diff --git a/parser_library/src/config/proc_grps.h b/parser_library/src/config/proc_grps.h index 35197203d..e0d1c3ace 100644 --- a/parser_library/src/config/proc_grps.h +++ b/parser_library/src/config/proc_grps.h @@ -37,9 +37,10 @@ struct assembler_options { std::string sysparm; std::string profile; + std::string optable; std::string system_id; - bool valid() const noexcept { return sysparm.size() < 256; } + bool valid() const noexcept; }; void to_json(nlohmann::json& j, const assembler_options& p); void from_json(const nlohmann::json& j, assembler_options& p); diff --git a/parser_library/src/context/hlasm_context.cpp b/parser_library/src/context/hlasm_context.cpp index f2eebee35..4b4778b01 100644 --- a/parser_library/src/context/hlasm_context.cpp +++ b/parser_library/src/context/hlasm_context.cpp @@ -31,11 +31,53 @@ code_scope* hlasm_context::curr_scope() { return &scope_stack_.back(); } const code_scope* hlasm_context::curr_scope() const { return &scope_stack_.back(); } -hlasm_context::instruction_storage hlasm_context::init_instruction_map(id_storage& ids) +namespace { +constexpr bool operator<=(z_arch_affiliation z_affil, instruction_set_version instr_set) +{ + return static_cast(z_affil) <= static_cast(instr_set); +} + +bool instruction_available(instruction_set_affiliation instr_set_affiliation, instruction_set_version active_instr_set) +{ + switch (active_instr_set) + { + case instruction_set_version::UNI: + return instr_set_affiliation.uni; + case instruction_set_version::DOS: + return instr_set_affiliation.dos; + case instruction_set_version::_370: + return instr_set_affiliation._370; + case instruction_set_version::XA: + return instr_set_affiliation.xa; + case instruction_set_version::ESA: + return instr_set_affiliation.esa; + case instruction_set_version::ZOP: + case instruction_set_version::YOP: + case instruction_set_version::Z9: + case instruction_set_version::Z10: + case instruction_set_version::Z11: + case instruction_set_version::Z12: + case instruction_set_version::Z13: + case instruction_set_version::Z14: + case instruction_set_version::Z15: + return instr_set_affiliation.z_arch == z_arch_affiliation::NO_AFFILIATION + ? false + : instr_set_affiliation.z_arch <= active_instr_set; + default: + return false; + } +} +} // namespace + +hlasm_context::instruction_storage hlasm_context::init_instruction_map( + id_storage& ids, instruction_set_version active_instr_set) { hlasm_context::instruction_storage instr_map; for (const auto& instr : instruction::all_machine_instructions()) { + if (!instruction_available(instr.instr_set_affiliation(), active_instr_set)) + continue; + auto id = ids.add(std::string(instr.name())); instr_map.emplace(id, &instr); } @@ -51,9 +93,13 @@ hlasm_context::instruction_storage hlasm_context::init_instruction_map(id_storag } for (const auto& instr : instruction::all_mnemonic_codes()) { + if (!instruction_available(instr.instr_set_affiliation(), active_instr_set)) + continue; + auto id = ids.add(std::string(instr.name())); instr_map.emplace(id, &instr); } + return instr_map; } @@ -310,14 +356,14 @@ void hlasm_context::add_global_system_vars(code_scope& scope) bool hlasm_context::is_opcode(id_index symbol) const { - return macros_.find(symbol) != macros_.end() || instruction_map_.find(symbol) != instruction_map_.end(); + return macros_.contains(symbol) || m_instruction_map.contains(symbol); } hlasm_context::hlasm_context(std::string file_name, asm_option asm_options, std::shared_ptr init_ids) : ids_(std::move(init_ids)) , opencode_file_name_(file_name) , asm_options_(std::move(asm_options)) - , instruction_map_(init_instruction_map(*ids_)) + , m_instruction_map(init_instruction_map(*ids_, asm_options_.instr_set)) , m_usings(std::make_unique()) , m_active_usings(1, m_usings->remove_all()) , m_statements_remaining(asm_options_.statement_count_limit) @@ -405,7 +451,7 @@ id_storage& hlasm_context::ids() { return *ids_; } std::shared_ptr hlasm_context::ids_ptr() { return ids_; } -const hlasm_context::instruction_storage& hlasm_context::instruction_map() const { return instruction_map_; } +const hlasm_context::instruction_storage& hlasm_context::instruction_map() const { return m_instruction_map; } processing_stack_t hlasm_context::processing_stack() const { @@ -593,7 +639,7 @@ void hlasm_context::add_mnemonic(id_index mnemo, id_index op_code) if (auto mac_it = macros_.find(op_code); mac_it != macros_.end()) value.opcode_detail = mac_it->second; - else if (auto instr_it = instruction_map_.find(op_code); instr_it != instruction_map_.end()) + else if (auto instr_it = m_instruction_map.find(op_code); instr_it != m_instruction_map.end()) value.opcode_detail = instr_it->second; else throw std::invalid_argument("undefined operation code"); @@ -619,7 +665,7 @@ opcode_t hlasm_context::get_operation_code(id_index symbol) const if (auto mac_it = macros_.find(symbol); mac_it != macros_.end()) value = opcode_t { symbol, mac_it->second }; - else if (auto instr_it = instruction_map_.find(symbol); instr_it != instruction_map_.end()) + else if (auto instr_it = m_instruction_map.find(symbol); instr_it != m_instruction_map.end()) value = opcode_t { symbol, instr_it->second }; return value; @@ -737,14 +783,10 @@ struct opcode_attr_visitor C_t hlasm_context::get_opcode_attr(id_index symbol) { - auto it = instruction_map_.find(symbol); - - auto mac_it = macros_.find(symbol); - - if (mac_it != macros_.end()) + if (auto it = macros_.find(symbol); it != macros_.end()) return "M"; - if (it != instruction_map_.end()) + if (auto it = m_instruction_map.find(symbol); it != m_instruction_map.end()) { auto& [opcode, detail] = *it; return std::visit(opcode_attr_visitor(), detail); diff --git a/parser_library/src/context/hlasm_context.h b/parser_library/src/context/hlasm_context.h index 36857eb5a..20de5856c 100644 --- a/parser_library/src/context/hlasm_context.h +++ b/parser_library/src/context/hlasm_context.h @@ -77,9 +77,9 @@ class hlasm_context asm_option asm_options_; static constexpr alignment sectalgn = doubleword; - // map of all instruction in HLASM - const instruction_storage instruction_map_; - static instruction_storage init_instruction_map(id_storage& ids); + // map of active instructions in HLASM + const instruction_storage m_instruction_map; + static instruction_storage init_instruction_map(id_storage& ids, instruction_set_version active_instr_set); // value of system variable SYSNDX unsigned long SYSNDX_ = 1; @@ -156,7 +156,7 @@ class hlasm_context id_storage& ids(); std::shared_ptr ids_ptr(); - // map of instructions + // map of active instructions const instruction_storage& instruction_map() const; // field that accessed ordinary assembly context @@ -192,7 +192,7 @@ class hlasm_context void remove_mnemonic(id_index mnemo); const opcode_map& opcode_mnemo_storage() const; - // checks wheter the symbol is an operation code (is a valid instruction or a mnemonic) + // checks whether the symbol is an operation code (is a valid instruction or a mnemonic) opcode_t get_operation_code(id_index symbol) const; // get data attribute value of variable symbol diff --git a/parser_library/src/context/instruction.cpp b/parser_library/src/context/instruction.cpp index 40e9657a5..a9cde877d 100644 --- a/parser_library/src/context/instruction.cpp +++ b/parser_library/src/context/instruction.cpp @@ -21,6 +21,69 @@ using namespace hlasm_plugin::parser_library::context; using namespace hlasm_plugin::parser_library::checking; using namespace hlasm_plugin::parser_library; +namespace { +constexpr z_arch_affiliation operator|(z_arch_affiliation a, z_arch_affiliation b) +{ + if (a != z_arch_affiliation::NO_AFFILIATION && b != z_arch_affiliation::NO_AFFILIATION) + { + return std::min(a, b); + } + else + { + return std::max(a, b); + } +} + +constexpr instruction_set_affiliation operator|(instruction_set_affiliation a, z_arch_affiliation z_affil) +{ + a.z_arch = a.z_arch | z_affil; + + return a; +} + +constexpr instruction_set_affiliation operator|(instruction_set_affiliation a, instruction_set_affiliation b) +{ + instruction_set_affiliation result {}; + + result.z_arch = a.z_arch | b.z_arch; + result.esa = a.esa | b.esa; + result.xa = a.xa | b.xa; + result._370 = a._370 | b._370; + result.dos = a.dos | b.dos; + result.uni = a.uni | b.uni; + + return result; +} + +// clang-format off +constexpr auto ESA = instruction_set_affiliation{z_arch_affiliation::NO_AFFILIATION, 1, 0, 0, 0, 0}; +constexpr auto XA = instruction_set_affiliation{z_arch_affiliation::NO_AFFILIATION, 0, 1, 0, 0, 0}; +constexpr auto _370 = instruction_set_affiliation{z_arch_affiliation::NO_AFFILIATION, 0, 0, 1, 0, 0}; +constexpr auto DOS = instruction_set_affiliation{z_arch_affiliation::NO_AFFILIATION, 0, 0, 0, 1, 0}; +constexpr auto UNI = instruction_set_affiliation{z_arch_affiliation::NO_AFFILIATION, 0, 0, 0, 0, 1}; + +constexpr auto ESA_XA = ESA | XA; +constexpr auto ESA_XA_370 = ESA | XA | _370; +constexpr auto UNI_370 = UNI | _370; +constexpr auto UNI_370_DOS = UNI | _370 | DOS; +constexpr auto UNI_ESA_SINCE_ZOP = UNI | ESA | z_arch_affiliation::SINCE_ZOP; +constexpr auto UNI_ESA_XA_370_DOS_SINCE_ZOP = UNI | ESA | XA | _370 | DOS | z_arch_affiliation::SINCE_ZOP; +constexpr auto UNI_ESA_XA_370_SINCE_Z13 = UNI | ESA | XA | _370 | z_arch_affiliation::SINCE_Z13; +constexpr auto UNI_ESA_XA_370_SINCE_Z15 = UNI | ESA | XA | _370 | z_arch_affiliation::SINCE_Z15; +constexpr auto UNI_ESA_XA_370_SINCE_ZOP = UNI | ESA | XA | _370 | z_arch_affiliation::SINCE_ZOP; +constexpr auto UNI_ESA_XA_SINCE_ZOP = UNI | ESA | XA | z_arch_affiliation::SINCE_ZOP; +constexpr auto UNI_SINCE_YOP = UNI | z_arch_affiliation::SINCE_YOP; +constexpr auto UNI_SINCE_Z10 = UNI | z_arch_affiliation::SINCE_Z10; +constexpr auto UNI_SINCE_Z11 = UNI | z_arch_affiliation::SINCE_Z11; +constexpr auto UNI_SINCE_Z12 = UNI | z_arch_affiliation::SINCE_Z12; +constexpr auto UNI_SINCE_Z13 = UNI | z_arch_affiliation::SINCE_Z13; +constexpr auto UNI_SINCE_Z14 = UNI | z_arch_affiliation::SINCE_Z14; +constexpr auto UNI_SINCE_Z15 = UNI | z_arch_affiliation::SINCE_Z15; +constexpr auto UNI_SINCE_Z9 = UNI | z_arch_affiliation::SINCE_Z9; +constexpr auto UNI_SINCE_ZOP = UNI | z_arch_affiliation::SINCE_ZOP; +// clang-format on +} // namespace + std::string_view instruction::mach_format_to_string(mach_format f) { switch (f) @@ -512,1363 +575,1356 @@ constexpr auto VRX_3_opt = instruction_format_definition_factory::def(); // clang-format on - constexpr machine_instruction machine_instructions[] = { - { "A", RX_a_2_ux, 510 }, - { "AD", RX_a_2_ux, 1412 }, - { "ADB", RXE_2, 1445 }, - { "ADBR", RRE_2, 1445 }, - { "ADDFRR", RRE_2, 7 }, - { "ADR", RR_2, 1412 }, - { "ADTR", RRF_a_3, 1491 }, - { "ADTRA", RRF_a_4, 1491 }, - { "AE", RX_a_2_ux, 1412 }, - { "AEB", RXE_2, 1445 }, - { "AEBR", RRE_2, 1445 }, - { "AER", RR_2, 1412 }, - { "AFI", RIL_a_2, 511 }, - { "AG", RXY_a_2, 511 }, - { "AGF", RXY_a_2, 511 }, - { "AGFI", RIL_a_2, 511 }, - { "AGFR", RRE_2, 510 }, - { "AGH", RXY_a_2, 512 }, - { "AGHI", RI_a_2_s, 513 }, - { "AGHIK", RIE_d_3, 511 }, - { "AGR", RRE_2, 510 }, - { "AGRK", RRF_a_3, 510 }, - { "AGSI", SIY_2_ss, 511 }, - { "AH", RX_a_2_ux, 512 }, - { "AHHHR", RRF_a_3, 513 }, - { "AHHLR", RRF_a_3, 513 }, - { "AHI", RI_a_2_s, 512 }, - { "AHIK", RIE_d_3, 511 }, - { "AHY", RXY_a_2, 512 }, - { "AIH", RIL_a_2, 513 }, - { "AL", RX_a_2_ux, 514 }, - { "ALC", RXY_a_2, 515 }, - { "ALCG", RXY_a_2, 515 }, - { "ALCGR", RRE_2, 515 }, - { "ALCR", RRE_2, 515 }, - { "ALFI", RIL_a_2, 514 }, - { "ALG", RXY_a_2, 514 }, - { "ALGF", RXY_a_2, 514 }, - { "ALGFI", RIL_a_2, 514 }, - { "ALGFR", RRE_2, 514 }, - { "ALGHSIK", RIE_d_3, 516 }, - { "ALGR", RRE_2, 514 }, - { "ALGRK", RRF_a_3, 514 }, - { "ALGSI", SIY_2_ss, 516 }, - { "ALHHHR", RRF_a_3, 515 }, - { "ALHHLR", RRF_a_3, 515 }, - { "ALHSIK", RIE_d_3, 516 }, - { "ALR", RR_2, 514 }, - { "ALRK", RRF_a_3, 514 }, - { "ALSI", SIY_2_ss, 516 }, - { "ALSIH", RIL_a_2, 517 }, - { "ALSIHN", RIL_a_2, 517 }, - { "ALY", RXY_a_2, 514 }, - { "AP", SS_b_2, 920 }, - { "AR", RR_2, 510 }, - { "ARK", RRF_a_3, 510 }, - { "ASI", SIY_2_ss, 511 }, - { "AU", RX_a_2_ux, 1413 }, - { "AUR", RR_2, 1413 }, - { "AW", RX_a_2_ux, 1413 }, - { "AWR", RR_2, 1413 }, - { "AXBR", RRE_2, 1445 }, - { "AXR", RR_2, 1412 }, - { "AXTR", RRF_a_3, 1491 }, - { "AXTRA", RRF_a_4, 1491 }, - { "AY", RXY_a_2, 511 }, - { "BAKR", RRE_2, 993 }, - { "BAL", RX_a_2_ux, 519 }, - { "BALR", RR_2, 519 }, - { "BAS", RX_a_2_ux, 520 }, - { "BASR", RR_2, 520 }, - { "BASSM", RX_a_2, 520 }, - { "BC", RX_b_2, 524 }, - { "BCR", RR_2_m, 524 }, - { "BCT", RX_a_2_ux, 525 }, - { "BCTG", RXY_a_2, 525 }, - { "BCTGR", RRE_2, 525 }, - { "BCTR", RR_2, 525 }, - { "BIC", RXY_b_2, 523 }, - { "BPP", SMI_3, 527 }, - { "BPRP", MII_3, 527 }, - { "BRAS", RI_b_2, 530 }, - { "BRASL", RIL_b_2, 530 }, - { "BRC", RI_c_2, 530 }, - { "BRCL", RIL_c_2, 530 }, - { "BRCT", RI_b_2, 531 }, - { "BRCTG", RI_b_2, 531 }, - { "BRCTH", RIL_b_2, 531 }, - { "BRXH", RSI_3, 532 }, - { "BRXHG", RIE_e_3, 532 }, - { "BRXLE", RSI_3, 532 }, - { "BRXLG", RIE_e_3, 532 }, - { "BSA", RRE_2, 989 }, - { "BSG", RRE_2, 995 }, - { "BSM", RR_2, 522 }, - { "BXH", RS_a_3, 526 }, - { "BXHG", RSY_a_3, 526 }, - { "BXLE", RS_a_3, 526 }, - { "BXLEG", RSY_a_3, 526 }, - { "C", RX_a_2_ux, 618 }, - { "CD", RX_a_2_ux, 1414 }, - { "CDB", RXE_2, 1447 }, - { "CDBR", RRE_2, 1447 }, - { "CDFBR", RRE_2, 1449 }, - { "CDFBRA", RRF_e_4, 1449 }, - { "CDFR", RRE_2, 1415 }, - { "CDFTR", RRF_e_4, 1496 }, - { "CDGBR", RRE_2, 1449 }, - { "CDGBRA", RRF_e_4, 1449 }, - { "CDGR", RRE_2, 1415 }, - { "CDGTR", RRE_2, 1496 }, - { "CDGTRA", RRF_e_4, 1496 }, - { "CDLFBR", RRF_e_4, 1451 }, - { "CDLFTR", RRF_e_4, 1497 }, - { "CDLGBR", RRF_e_4, 1451 }, - { "CDLGTR", RRF_e_4, 1497 }, - { "CDPT", RSL_b_3, 1498 }, - { "CDR", RR_2, 1414 }, - { "CDS", RS_a_3, 628 }, - { "CDSG", RSY_a_3, 628 }, - { "CDSTR", RRE_2, 1500 }, - { "CDSY", RSY_a_3, 628 }, - { "CDTR", RRE_2, 1494 }, - { "CDUTR", RRE_2, 1500 }, - { "CDZT", RSL_b_3, 1501 }, - { "CE", RX_a_2_ux, 1414 }, - { "CEB", RXE_2, 1447 }, - { "CEBR", RRE_2, 1447 }, - { "CEDTR", RRE_2, 1495 }, - { "CEFBR", RRE_2, 1449 }, - { "CEFBRA", RRF_e_4, 1449 }, - { "CEFR", RRE_2, 1415 }, - { "CEGBR", RRE_2, 1449 }, - { "CEGBRA", RRF_e_4, 1449 }, - { "CEGR", RRE_2, 1415 }, - { "CELFBR", RRF_e_4, 1451 }, - { "CELGBR", RRF_e_4, 1451 }, - { "CER", RR_2, 1414 }, - { "CEXTR", RRE_2, 1495 }, - { "CFC", S_1_u, 621 }, - { "CFDBR", RRF_e_3, 1452 }, - { "CFDBRA", RRF_e_4, 1452 }, - { "CFDR", RRF_e_3, 1415 }, - { "CFDTR", RRF_e_4, 1502 }, - { "CFEBR", RRF_e_3, 1452 }, - { "CFEBRA", RRF_e_4, 1452 }, - { "CFER", RRF_e_3, 1415 }, - { "CFI", RIL_a_2, 618 }, - { "CFXBR", RRF_e_3, 1452 }, - { "CFXBRA", RRF_e_4, 1452 }, - { "CFXR", RRF_e_3, 1415 }, - { "CFXTR", RRF_e_4, 1502 }, - { "CG", RXY_a_2, 618 }, - { "CGDBR", RRF_e_3, 1452 }, - { "CGDBRA", RRF_e_4, 1452 }, - { "CGDR", RRF_e_3, 1415 }, - { "CGDTR", RRF_e_3, 1501 }, - { "CGDTRA", RRF_e_4, 1502 }, - { "CGEBR", RRF_e_3, 1452 }, - { "CGEBRA", RRF_e_4, 1452 }, - { "CGER", RRF_e_3, 1415 }, - { "CGF", RXY_a_2, 618 }, - { "CGFI", RIL_a_2, 619 }, - { "CGFR", RRE_2, 618 }, - { "CGFRL", RIL_b_2, 619 }, - { "CGH", RXY_a_2, 634 }, - { "CGHI", RI_a_2_s, 634 }, - { "CGHRL", RIL_b_2, 634 }, - { "CGHSI", SIL_2_s, 634 }, - { "CGIB", RIS_4, 620 }, - { "CGIJ", RIE_c_4, 620 }, - { "CGIT", RIE_a_3, 633 }, - { "CGR", RRE_2, 618 }, - { "CGRB", RRS_4, 619 }, - { "CGRJ", RIE_b_4, 620 }, - { "CGRL", RIL_b_2, 619 }, - { "CGRT", RRF_c_3, 633 }, - { "CGXBR", RRF_e_3, 1452 }, - { "CGXBRA", RRF_e_4, 1452 }, - { "CGXR", RRF_e_3, 1415 }, - { "CGXTR", RRF_e_3, 1501 }, - { "CGXTRA", RRF_e_4, 1502 }, - { "CH", RX_a_2_ux, 634 }, - { "CHF", RXY_a_2, 635 }, - { "CHHR", RRE_2, 635 }, - { "CHHSI", SIL_2_s, 634 }, - { "CHI", RI_a_2_s, 634 }, - { "CHLR", RRE_2, 635 }, - { "CHRL", RIL_b_2, 634 }, - { "CHSI", SIL_2_s, 634 }, - { "CHY", RXY_a_2, 634 }, - { "CIB", RIS_4, 620 }, - { "CIH", RIL_a_2, 635 }, - { "CIJ", RIE_c_4, 620 }, - { "CIT", RIE_a_3, 633 }, - { "CKSM", RRE_2, 533 }, - { "CL", RX_a_2_ux, 636 }, - { "CLC", SS_a_2_u, 636 }, - { "CLCL", RR_2, 642 }, - { "CLCLE", RS_a_3, 644 }, - { "CLCLU", RSY_a_3, 647 }, - { "CLFDBR", RRF_e_4, 1455 }, - { "CLFDTR", RRF_e_4, 1504 }, - { "CLFEBR", RRF_e_4, 1455 }, - { "CLFHSI", SIL_2_u, 636 }, - { "CLFI", RIL_a_2, 636 }, - { "CLFIT", RIE_a_3, 640 }, - { "CLFXBR", RRF_e_4, 1455 }, - { "CLFXTR", RRF_e_4, 1504 }, - { "CLG", RXY_a_2, 636 }, - { "CLGDBR", RRF_e_4, 1455 }, - { "CLGDTR", RRF_e_4, 1504 }, - { "CLGEBR", RRF_e_4, 1455 }, - { "CLGF", RXY_a_2, 636 }, - { "CLGFI", RIL_a_2, 636 }, - { "CLGFR", RRE_2, 636 }, - { "CLGFRL", RIL_b_2, 637 }, - { "CLGHRL", RIL_b_2, 637 }, - { "CLGHSI", SIL_2_u, 636 }, - { "CLGIB", RIS_4, 638 }, - { "CLGIJ", RIE_c_4, 638 }, - { "CLGIT", RIE_a_3, 640 }, - { "CLGR", RRE_2, 636 }, - { "CLGRB", RRS_4, 638 }, - { "CLGRJ", RIE_b_4, 638 }, - { "CLGRL", RIL_b_2, 637 }, - { "CLGRT", RRF_c_3, 639 }, - { "CLGT", RSY_b_3_ux, 639 }, - { "CLGXBR", RRF_e_4, 1455 }, - { "CLGXTR", RRF_e_4, 1504 }, - { "CLHF", RXY_a_2, 641 }, - { "CLHHR", RRE_2, 641 }, - { "CLHHSI", SIL_2_u, 636 }, - { "CLHLR", RRE_2, 641 }, - { "CLHRL", RIL_b_2, 637 }, - { "CLI", SI_2_u, 636 }, - { "CLIB", RIS_4, 638 }, - { "CLIH", RIL_a_2, 642 }, - { "CLIJ", RIE_c_4, 638 }, - { "CLIY", SIY_2_su, 636 }, - { "CLM", RS_b_3, 641 }, - { "CLMH", RSY_b_3_us, 641 }, - { "CLMY", RSY_b_3_us, 641 }, - { "CLR", RR_2, 636 }, - { "CLRB", RRS_4, 638 }, - { "CLRCH", S_1_u, 367 }, - { "CLRIO", S_1_u, 368 }, - { "CLRJ", RIE_b_4, 638 }, - { "CLRL", RIL_b_2, 637 }, - { "CLRT", RRF_c_3, 639 }, - { "CLST", RRE_2, 650 }, - { "CLT", RSY_b_3_ux, 639 }, - { "CLY", RXY_a_2, 636 }, - { "CMPSC", RRE_2, 654 }, - { "CONCS", S_1_u, 263 }, - { "CP", SS_b_2, 921 }, - { "CPDT", RSL_b_3, 1505 }, - { "CPSDR", RRF_b_3, 958 }, - { "CPXT", RSL_b_3, 1505 }, - { "CPYA", RRE_2, 736 }, - { "CR", RR_2, 618 }, - { "CRB", RRS_4, 619 }, - { "CRDTE", RRF_b_4_opt, 999 }, - { "CRJ", RIE_b_4, 619 }, - { "CRL", RIL_b_2, 619 }, - { "CRT", RRF_c_3, 633 }, - { "CS", RS_a_3, 628 }, - { "CSCH", S_0, 1217 }, - { "CSDTR", RRF_d_3, 1507 }, - { "CSG", RSY_a_3, 628 }, - { "CSP", RRE_2, 1003 }, - { "CSPG", RRE_2, 1003 }, - { "CSST", SSF_3_dr, 630 }, - { "CSXTR", RRF_d_3, 1507 }, - { "CSY", RSY_a_3, 628 }, - { "CU12", RRF_c_3_opt, 728 }, - { "CU14", RRF_c_3_opt, 732 }, - { "CU21", RRF_c_3_opt, 718 }, - { "CU24", RRF_c_3_opt, 715 }, - { "CU41", RRE_2, 725 }, - { "CU42", RRE_2, 722 }, - { "CUDTR", RRE_2, 1507 }, - { "CUSE", RRE_2, 651 }, - { "CUTFU", RRF_c_3_opt, 728 }, - { "CUUTF", RRF_c_3_opt, 718 }, - { "CUXTR", RRE_2, 1507 }, - { "CVB", RX_a_2_ux, 714 }, - { "CVBG", RXY_a_2, 714 }, - { "CVBY", RXY_a_2, 714 }, - { "CVD", RX_a_2_ux, 715 }, - { "CVDG", RXY_a_2, 715 }, - { "CVDY", RXY_a_2, 715 }, - { "CXBR", RRE_2, 1447 }, - { "CXFBR", RRE_2, 1449 }, - { "CXFBRA", RRF_e_4, 1449 }, - { "CXFR", RRE_2, 1415 }, - { "CXFTR", RRF_e_4, 1496 }, - { "CXGBR", RRE_2, 1449 }, - { "CXGBRA", RRF_e_4, 1449 }, - { "CXGR", RRE_2, 1415 }, - { "CXGTR", RRE_2, 1496 }, - { "CXGTRA", RRF_e_4, 1496 }, - { "CXLFBR", RRF_e_4, 1451 }, - { "CXLFTR", RRF_e_4, 1497 }, - { "CXLGBR", RRF_e_4, 1451 }, - { "CXLGTR", RRF_e_4, 1497 }, - { "CXPT", RSL_b_3, 1498 }, - { "CXR", RRE_2, 1414 }, - { "CXSTR", RRE_2, 1500 }, - { "CXTR", RRE_2, 1494 }, - { "CXUTR", RRE_2, 1500 }, - { "CXZT", RSL_b_3, 1501 }, - { "CY", RXY_a_2, 618 }, - { "CZDT", RSL_b_3, 1508 }, - { "CZXT", RSL_b_3, 1508 }, - { "D", RX_a_2_ux, 736 }, - { "DD", RX_a_2_ux, 1416 }, - { "DDB", RXE_2, 1457 }, - { "DDBR", RRE_2, 1457 }, - { "DDR", RR_2, 1416 }, - { "DDTR", RRF_a_3, 1509 }, - { "DDTRA", RRF_a_4, 1509 }, - { "DE", RX_a_2_ux, 1416 }, - { "DEB", RXE_2, 1457 }, - { "DEBR", RRE_2, 1457 }, - { "DER", RR_2, 1416 }, - { "DFLTCC", RRF_a_3, 1714 }, - { "DIDBR", RRF_b_4, 1458 }, - { "DIEBR", RRF_b_4, 1458 }, - { "DISCS", S_1_u, 265 }, - { "DL", RXY_a_2, 737 }, - { "DLG", RXY_a_2, 737 }, - { "DLGR", RRE_2, 737 }, - { "DLR", RRE_2, 737 }, - { "DP", SS_b_2, 921 }, - { "DR", RR_2, 736 }, - { "DSG", RXY_a_2, 738 }, - { "DSGF", RXY_a_2, 738 }, - { "DSGFR", RRE_2, 738 }, - { "DSGR", RRE_2, 738 }, - { "DXBR", RRE_2, 1457 }, - { "DXR", RRE_2, 1416 }, - { "DXTR", RRF_a_3, 1509 }, - { "DXTRA", RRF_a_4, 1509 }, - { "EAR", RRE_2, 741 }, - { "ECAG", RSY_a_3, 741 }, - { "ECCTR", RRE_2, 39 }, - { "ECPGA", RRE_2, 39 }, - { "ECTG", SSF_3_dr, 744 }, - { "ED", SS_a_2_u, 922 }, - { "EDMK", SS_a_2_u, 925 }, - { "EEDTR", RRE_2, 1511 }, - { "EEXTR", RRE_2, 1511 }, - { "EFPC", RRE_1, 958 }, - { "EPAIR", RRE_1, 1006 }, - { "EPAR", RRE_1, 1006 }, - { "EPCTR", RRE_2, 39 }, - { "EPSW", RRE_2, 745 }, - { "EREG", RRE_2, 1007 }, - { "EREGG", RRE_2, 1007 }, - { "ESAIR", RRE_1, 1007 }, - { "ESAR", RRE_1, 1006 }, - { "ESDTR", RRE_2, 1511 }, - { "ESEA", RRE_1, 1006 }, - { "ESTA", RRE_2, 1008 }, - { "ESXTR", RRE_2, 1511 }, - { "ETND", RRE_1, 745 }, - { "EX", RX_a_2_ux, 740 }, - { "EXRL", RIL_b_2, 740 }, - { "FIDBR", RRF_e_3, 1462 }, - { "FIDBRA", RRF_e_4, 1462 }, - { "FIDR", RRE_2, 1419 }, - { "FIDTR", RRF_e_4, 1514 }, - { "FIEBR", RRF_e_3, 1462 }, - { "FIEBRA", RRF_e_4, 1462 }, - { "FIER", RRE_2, 1419 }, - { "FIXBR", RRF_e_3, 1462 }, - { "FIXBRA", RRF_e_4, 1462 }, - { "FIXR", RRE_2, 1419 }, - { "FIXTR", RRF_e_4, 1514 }, - { "FLOGR", RRE_2, 746 }, - { "HDR", RR_2, 1417 }, - { "HDV", S_1_u, 129 }, - { "HER", RR_2, 1417 }, - { "HIO", S_1_u, 129 }, - { "HSCH", S_0, 1218 }, - { "IAC", RRE_1, 1011 }, - { "IC", RX_a_2_ux, 746 }, - { "ICM", RS_b_3, 746 }, - { "ICMH", RSY_b_3_us, 746 }, - { "ICMY", RSY_b_3_us, 746 }, - { "ICY", RXY_a_2, 746 }, - { "IDTE", RRF_b_4_opt, 1014 }, - { "IEDTR", RRF_b_3, 1512 }, - { "IEXTR", RRF_b_3, 1512 }, - { "IIHF", RIL_a_2, 747 }, - { "IIHH", RI_a_2_u, 747 }, - { "IIHL", RI_a_2_u, 747 }, - { "IILF", RIL_a_2, 747 }, - { "IILH", RI_a_2_u, 747 }, - { "IILL", RI_a_2_u, 747 }, - { "IPK", S_0, 1012 }, - { "IPM", RRE_1, 748 }, - { "IPTE", RRF_a_4_opt, 1019 }, - { "IRBM", RRE_2, 1012 }, - { "ISK", RR_2, 268 }, - { "ISKE", RRE_2, 1012 }, - { "IVSK", RRE_2, 1013 }, - { "KDB", RXE_2, 1448 }, - { "KDBR", RRE_2, 1448 }, - { "KDSA", RRE_2, 1700 }, - { "KDTR", RRE_2, 1495 }, - { "KEB", RXE_2, 1448 }, - { "KEBR", RRE_2, 1448 }, - { "KIMD", RRE_2, 672 }, - { "KLMD", RRE_2, 685 }, - { "KM", RRE_2, 537 }, - { "KMA", RRF_b_3, 562 }, - { "KMAC", RRE_2, 703 }, - { "KMC", RRE_2, 537 }, - { "KMCTR", RRF_b_3, 591 }, - { "KMF", RRE_2, 576 }, - { "KMO", RRE_2, 604 }, - { "KXBR", RRE_2, 1448 }, - { "KXTR", RRE_2, 1495 }, - { "L", RX_a_2_ux, 748 }, - { "LA", RX_a_2_ux, 750 }, - { "LAA", RSY_a_3, 752 }, - { "LAAG", RSY_a_3, 752 }, - { "LAAL", RSY_a_3, 752 }, - { "LAALG", RSY_a_3, 752 }, - { "LAE", RX_a_2_ux, 750 }, - { "LAEY", RXY_a_2, 750 }, - { "LAM", RS_a_3, 749 }, - { "LAMY", RSY_a_3, 749 }, - { "LAN", RSY_a_3, 753 }, - { "LANG", RSY_a_3, 753 }, - { "LAO", RSY_a_3, 754 }, - { "LAOG", RSY_a_3, 754 }, - { "LARL", RIL_b_2, 751 }, - { "LASP", SSE_2, 1023 }, - { "LAT", RXY_a_2, 755 }, - { "LAX", RSY_a_3, 753 }, - { "LAXG", RSY_a_3, 753 }, - { "LAY", RXY_a_2, 750 }, - { "LB", RXY_a_2, 756 }, - { "LBH", RXY_a_2, 756 }, - { "LBR", RRE_2, 756 }, - { "LCBB", RXE_3_xm, 757 }, - { "LCCTL", S_1_u, 40 }, - { "LCDBR", RRE_2, 1461 }, - { "LCDFR", RRE_2, 959 }, - { "LCDR", RR_2, 1418 }, - { "LCEBR", RRE_2, 1461 }, - { "LCER", RR_2, 1418 }, - { "LCGFR", RRE_2, 757 }, - { "LCGR", RRE_2, 757 }, - { "LCR", RR_2, 756 }, - { "LCTL", RS_a_3, 1032 }, - { "LCTLG", RSY_a_3, 1032 }, - { "LCXBR", RRE_2, 1461 }, - { "LCXR", RRE_2, 1418 }, - { "LD", RX_a_2_ux, 959 }, - { "LDE", RXE_2, 1419 }, - { "LDEB", RRE_2, 1464 }, - { "LDEBR", RRE_2, 1463 }, - { "LDER", RRE_2, 1419 }, - { "LDETR", RRF_d_3, 1517 }, - { "LDGR", RRE_2, 962 }, - { "LDR", RR_2, 959 }, - { "LDXBR", RRE_2, 1465 }, - { "LDXBRA", RRF_e_4, 1465 }, - { "LDXR", RR_2, 1421 }, - { "LDXTR", RRF_e_4, 1518 }, - { "LDY", RXY_a_2, 959 }, - { "LE", RX_a_2_ux, 959 }, - { "LEDBR", RRE_2, 1465 }, - { "LEDBRA", RRF_e_4, 1465 }, - { "LEDR", RR_2, 1421 }, - { "LEDTR", RRF_e_4, 1518 }, - { "LER", RR_2, 959 }, - { "LEXBR", RRE_2, 1465 }, - { "LEXBRA", RRF_e_4, 1465 }, - { "LEXR", RRE_2, 1421 }, - { "LEY", RXY_a_2, 959 }, - { "LFAS", S_1_u, 960 }, - { "LFH", RXY_a_2, 762 }, - { "LFHAT", RXY_a_2, 762 }, - { "LFPC", S_1_u, 959 }, - { "LG", RXY_a_2, 748 }, - { "LGAT", RXY_a_2, 755 }, - { "LGB", RXY_a_2, 756 }, - { "LGBR", RRE_2, 756 }, - { "LGDR", RRE_2, 962 }, - { "LGF", RXY_a_2, 748 }, - { "LGFI", RIL_a_2, 748 }, - { "LGFR", RRE_2, 748 }, - { "LGFRL", RIL_b_2, 748 }, - { "LGG", RXY_a_2, 758 }, - { "LGH", RXY_a_2, 760 }, - { "LGHI", RI_a_2_s, 760 }, - { "LGHR", RRE_2, 760 }, - { "LGHRL", RIL_b_2, 760 }, - { "LGR", RRE_2, 748 }, - { "LGRL", RIL_b_2, 748 }, - { "LGSC", RXY_a_2, 759 }, - { "LH", RX_a_2_ux, 760 }, - { "LHH", RXY_a_2, 761 }, - { "LHI", RI_a_2_s, 760 }, - { "LHR", RRE_2, 760 }, - { "LHRL", RIL_b_2, 760 }, - { "LHY", RXY_a_2, 760 }, - { "LLC", RXY_a_2, 763 }, - { "LLCH", RXY_a_2, 764 }, - { "LLCR", RRE_2, 763 }, - { "LLGC", RXY_a_2, 763 }, - { "LLGCR", RRE_2, 763 }, - { "LLGF", RXY_a_2, 762 }, - { "LLGFAT", RXY_a_2, 763 }, - { "LLGFR", RRE_2, 762 }, - { "LLGFRL", RIL_b_2, 762 }, - { "LLGFSG", RXY_a_2, 758 }, - { "LLGH", RXY_a_2, 764 }, - { "LLGHR", RRE_2, 764 }, - { "LLGHRL", RIL_b_2, 764 }, - { "LLGT", RXY_a_2, 766 }, - { "LLGTAT", RXY_a_2, 766 }, - { "LLGTR", RRE_2, 765 }, - { "LLH", RXY_a_2, 764 }, - { "LLHH", RXY_a_2, 765 }, - { "LLHR", RRE_2, 764 }, - { "LLHRL", RIL_b_2, 764 }, - { "LLIHF", RIL_a_2, 765 }, - { "LLIHH", RI_a_2_u, 765 }, - { "LLIHL", RI_a_2_u, 765 }, - { "LLILF", RIL_a_2, 765 }, - { "LLILH", RI_a_2_u, 765 }, - { "LLILL", RI_a_2_u, 765 }, - { "LLZRGF", RXY_a_2, 763 }, - { "LM", RS_a_3, 766 }, - { "LMD", SS_e_4_rb, 767 }, - { "LMG", RSY_a_3, 766 }, - { "LMH", RSY_a_3, 767 }, - { "LMY", RSY_a_3, 766 }, - { "LNDBR", RRE_2, 1464 }, - { "LNDFR", RRE_2, 962 }, - { "LNDR", RR_2, 1420 }, - { "LNEBR", RRE_2, 1464 }, - { "LNER", RR_2, 1420 }, - { "LNGFR", RRE_2, 768 }, - { "LNGR", RRE_2, 767 }, - { "LNR", RR_2, 767 }, - { "LNXBR", RRE_2, 1464 }, - { "LNXR", RRE_2, 1420 }, - { "LOC", RSY_b_3_su, 768 }, - { "LOCFH", RSY_b_3_su, 768 }, - { "LOCFHR", RRF_c_3, 768 }, - { "LOCG", RSY_b_3_su, 768 }, - { "LOCGHI", RIE_g_3, 761 }, - { "LOCGR", RRF_c_3, 768 }, - { "LOCHHI", RIE_g_3, 761 }, - { "LOCHI", RIE_g_3, 761 }, - { "LOCR", RRF_c_3, 768 }, - { "LPCTL", S_1_u, 41 }, - { "LPD", SSF_3_rd, 769 }, - { "LPDBR", RRE_2, 1465 }, - { "LPDFR", RRE_2, 962 }, - { "LPDG", SSF_3_rd, 769 }, - { "LPDR", RR_2, 1420 }, - { "LPEBR", RRE_2, 1465 }, - { "LPER", RR_2, 1420 }, - { "LPGFR", RRE_2, 771 }, - { "LPGR", RRE_2, 771 }, - { "LPP", S_1_u, 11 }, - { "LPQ", RXY_a_2, 770 }, - { "LPR", RR_2, 771 }, - { "LPSW", SI_1, 1036 }, - { "LPSWE", S_1_u, 1037 }, - { "LPTEA", RRF_b_4, 1032 }, - { "LPXBR", RRE_2, 1465 }, - { "LPXR", RRE_2, 1420 }, - { "LR", RR_2, 748 }, - { "LRA", RX_a_2_ux, 1038 }, - { "LRAG", RXY_a_2, 1038 }, - { "LRAY", RXY_a_2, 1038 }, - { "LRDR", RR_2, 1421 }, - { "LRER", RR_2, 1421 }, - { "LRL", RIL_b_2, 748 }, - { "LRV", RXY_a_2, 771 }, - { "LRVG", RXY_a_2, 771 }, - { "LRVGR", RRE_2, 771 }, - { "LRVH", RXY_a_2, 771 }, - { "LRVR", RRE_2, 771 }, - { "LSCTL", S_1_u, 42 }, - { "LT", RXY_a_2, 755 }, - { "LTDBR", RRE_2, 1461 }, - { "LTDR", RR_2, 1417 }, - { "LTDTR", RRE_2, 1513 }, - { "LTEBR", RRE_2, 1461 }, - { "LTER", RR_2, 1417 }, - { "LTG", RXY_a_2, 755 }, - { "LTGF", RXY_a_2, 755 }, - { "LTGFR", RRE_2, 754 }, - { "LTGR", RRE_2, 754 }, - { "LTR", RR_2, 754 }, - { "LTXBR", RRE_2, 1461 }, - { "LTXR", RRE_2, 1418 }, - { "LTXTR", RRE_2, 1513 }, - { "LURA", RRE_2, 1042 }, - { "LURAG", RRE_2, 1042 }, - { "LXD", RXE_2, 1419 }, - { "LXDB", RRE_2, 1464 }, - { "LXDBR", RRE_2, 1463 }, - { "LXDR", RRE_2, 1419 }, - { "LXDTR", RRF_d_3, 1517 }, - { "LXE", RXE_2, 1419 }, - { "LXEB", RRE_2, 1464 }, - { "LXEBR", RRE_2, 1463 }, - { "LXER", RRE_2, 1419 }, - { "LXR", RRE_2, 959 }, - { "LY", RXY_a_2, 748 }, - { "LZDR", RRE_1, 963 }, - { "LZER", RRE_1, 963 }, - { "LZRF", RXY_a_2, 755 }, - { "LZRG", RXY_a_2, 755 }, - { "LZXR", RRE_1, 963 }, - { "M", RX_a_2_ux, 788 }, - { "MAD", RXF_3_x, 1423 }, - { "MADB", RXF_3_x, 1468 }, - { "MADBR", RRD_3, 1468 }, - { "MADR", RRD_3, 1423 }, - { "MAE", RXF_3_x, 1423 }, - { "MAEB", RXF_3_x, 1468 }, - { "MAEBR", RRD_3, 1468 }, - { "MAER", RRD_3, 1423 }, - { "MAY", RXF_3_x, 1424 }, - { "MAYH", RXF_3_x, 1424 }, - { "MAYHR", RRD_3, 1424 }, - { "MAYL", RXF_3_x, 1424 }, - { "MAYLR", RRD_3, 1424 }, - { "MAYR", RRD_3, 1424 }, - { "MC", SI_2_s, 772 }, - { "MD", RX_a_2_ux, 1422 }, - { "MDB", RXE_2, 1467 }, - { "MDBR", RRE_2, 1467 }, - { "MDE", RX_a_2_ux, 1422 }, - { "MDEB", RXE_2, 1467 }, - { "MDEBR", RRE_2, 1467 }, - { "MDER", RR_2, 1421 }, - { "MDR", RR_2, 1421 }, - { "MDTR", RRF_a_3, 1519 }, - { "MDTRA", RRF_a_4, 1520 }, - { "ME", RX_a_2_ux, 1422 }, - { "MEE", RXE_2, 1422 }, - { "MEEB", RXE_2, 1467 }, - { "MEEBR", RRE_2, 1467 }, - { "MEER", RRE_2, 1421 }, - { "MER", RR_2, 1421 }, - { "MFY", RXY_a_2, 788 }, - { "MG", RXY_a_2, 788 }, - { "MGH", RXY_a_2, 789 }, - { "MGHI", RI_a_2_s, 789 }, - { "MGRK", RRF_a_3, 788 }, - { "MH", RX_a_2_ux, 789 }, - { "MHI", RI_a_2_s, 789 }, - { "MHY", RXY_a_2, 789 }, - { "ML", RXY_a_2, 790 }, - { "MLG", RXY_a_2, 790 }, - { "MLGR", RRE_2, 790 }, - { "MLR", RRE_2, 790 }, - { "MP", SS_b_2, 926 }, - { "MR", RR_2, 788 }, - { "MS", RX_a_2_ux, 791 }, - { "MSC", RXY_a_2, 791 }, - { "MSCH", S_1_u, 1219 }, - { "MSD", RXF_3_x, 1423 }, - { "MSDB", RXF_3_x, 1468 }, - { "MSDBR", RRD_3, 1468 }, - { "MSDR", RRD_3, 1423 }, - { "MSE", RXF_3_x, 1423 }, - { "MSEB", RXF_3_x, 1468 }, - { "MSEBR", RRD_3, 1468 }, - { "MSER", RRD_3, 1423 }, - { "MSFI", RIL_a_2, 791 }, - { "MSG", RXY_a_2, 791 }, - { "MSGC", RXY_a_2, 791 }, - { "MSGF", RXY_a_2, 791 }, - { "MSGFI", RIL_a_2, 791 }, - { "MSGFR", RRE_2, 791 }, - { "MSGR", RRE_2, 791 }, - { "MSGRKC", RRF_a_3, 791 }, - { "MSR", RRE_2, 791 }, - { "MSRKC", RRF_a_3, 791 }, - { "MSTA", RRE_1, 1043 }, - { "MSY", RXY_a_2, 791 }, - { "MVC", SS_a_2_u, 773 }, - { "MVCDK", SSE_2, 1048 }, - { "MVCIN", SS_a_2_u, 774 }, - { "MVCK", SS_d_3, 1049 }, - { "MVCL", RR_2, 774 }, - { "MVCLE", RS_a_3, 778 }, - { "MVCLU", RSY_a_3, 781 }, - { "MVCOS", SSF_3_dr, 1050 }, - { "MVCP", SS_d_3, 1046 }, - { "MVCRL", SSE_2, 788 }, - { "MVCS", SS_d_3, 1046 }, - { "MVCSK", SSE_2, 1053 }, - { "MVGHI", SIL_2_s, 773 }, - { "MVHHI", SIL_2_s, 773 }, - { "MVHI", SIL_2_s, 773 }, - { "MVI", SI_2_u, 773 }, - { "MVIY", SIY_2_su, 773 }, - { "MVN", SS_a_2_u, 785 }, - { "MVO", SS_b_2, 786 }, - { "MVPG", RRE_2, 1044 }, - { "MVST", RRE_2, 785 }, - { "MVZ", SS_a_2_u, 787 }, - { "MXBR", RRE_2, 1467 }, - { "MXD", RX_a_2_ux, 1422 }, - { "MXDB", RXE_2, 1467 }, - { "MXDBR", RRE_2, 1467 }, - { "MXDR", RR_2, 1421 }, - { "MXR", RR_2, 1421 }, - { "MXTR", RRF_a_3, 1519 }, - { "MXTRA", RRF_a_4, 1520 }, - { "MY", RXF_3_x, 1426 }, - { "MYH", RXF_3_x, 1426 }, - { "MYHR", RRD_3, 1426 }, - { "MYL", RXF_3_x, 1426 }, - { "MYLR", RRD_3, 1426 }, - { "MYR", RRD_3, 1426 }, - { "N", RX_a_2_ux, 517 }, - { "NC", SS_a_2_u, 518 }, - { "NCGRK", RRF_a_3, 522 }, - { "NCRK", RRF_a_3, 522 }, - { "NG", RXY_a_2, 517 }, - { "NGR", RRE_2, 517 }, - { "NGRK", RRF_a_3, 517 }, - { "NI", SI_2_u, 517 }, - { "NIAI", IE_2, 792 }, - { "NIHF", RIL_a_2, 518 }, - { "NIHH", RI_a_2_u, 518 }, - { "NIHL", RI_a_2_u, 518 }, - { "NILF", RIL_a_2, 519 }, - { "NILH", RI_a_2_u, 519 }, - { "NILL", RI_a_2_u, 519 }, - { "NIY", SIY_2_su, 518 }, - { "NNGRK", RRF_a_3, 796 }, - { "NNRK", RRF_a_3, 796 }, - { "NOGRK", RRF_a_3, 799 }, - { "NORK", RRF_a_3, 799 }, - { "NR", RR_2, 517 }, - { "NRK", RRF_a_3, 517 }, - { "NTSTG", RXY_a_2, 794 }, - { "NXGRK", RRF_a_3, 799 }, - { "NXRK", RRF_a_3, 799 }, - { "NY", RXY_a_2, 517 }, - { "O", RX_a_2_ux, 794 }, - { "OC", SS_a_2_u, 795 }, - { "OCGRK", RRF_a_3, 802 }, - { "OCRK", RRF_a_3, 802 }, - { "OG", RXY_a_2, 795 }, - { "OGR", RRE_2, 794 }, - { "OGRK", RRF_a_3, 794 }, - { "OI", SI_2_u, 795 }, - { "OIHF", RIL_a_2, 796 }, - { "OIHH", RI_a_2_u, 796 }, - { "OIHL", RI_a_2_u, 796 }, - { "OILF", RIL_a_2, 796 }, - { "OILH", RI_a_2_u, 796 }, - { "OILL", RI_a_2_u, 796 }, - { "OIY", SIY_2_su, 795 }, - { "OR", RR_2, 794 }, - { "ORK", RRF_a_3, 794 }, - { "OY", RXY_a_2, 794 }, - { "PACK", SS_b_2, 796 }, - { "PALB", RRE_0, 1098 }, - { "PC", S_1_u, 1072 }, - { "PCC", RRE_0, 799 }, - { "PCKMO", RRE_0, 1056 }, - { "PFD", RXY_b_2, 843 }, - { "PFDRL", RIL_c_2, 843 }, - { "PFMF", RRE_2, 1059 }, - { "PFPO", E_0, 963 }, - { "PGIN", RRE_2, 1054 }, - { "PGOUT", RRE_2, 1055 }, - { "PKA", SS_f_2, 797 }, - { "PKU", SS_f_2, 798 }, - { "PLO", SS_e_4_br, 815 }, - { "POPCNT", RRF_c_3_opt, 853 }, - { "PPA", RRF_c_3, 829 }, - { "PPNO", RRE_2, 830 }, - { "PR", E_0, 1085 }, - { "PRNO", RRE_2, 830 }, - { "PT", RRE_2, 1089 }, - { "PTF", RRE_1, 1071 }, - { "PTFF", E_0, 1063 }, - { "PTI", RRE_2, 1089 }, - { "PTLB", S_0, 1098 }, - { "QADTR", RRF_b_4, 1521 }, - { "QAXTR", RRF_b_4, 1521 }, - { "QCTRI", S_1_u, 43 }, - { "QSI", S_1_u, 45 }, - { "RCHP", S_0, 1221 }, - { "RISBG", RIE_f_5, 847 }, - { "RISBGN", RIE_f_5, 847 }, - { "RISBGNZ", RIE_f_5, 860 }, - { "RISBGZ", RIE_f_5, 858 }, - { "RISBHG", RIE_f_5, 848 }, - { "RISBHGZ", RIE_f_5, 860 }, - { "RISBLG", RIE_f_5, 849 }, - { "RISBLGZ", RIE_f_5, 860 }, - { "RLL", RSY_a_3, 845 }, - { "RLLG", RSY_a_3, 845 }, - { "RNSBG", RIE_f_5, 845 }, - { "RNSBGT", RIE_f_5, 845 }, - { "ROSBG", RIE_f_5, 846 }, - { "ROSBGT", RIE_f_5, 858 }, - { "RP", S_1_u, 1099 }, - { "RRB", S_1_u, 295 }, - { "RRBE", RRE_2, 1098 }, - { "RRBM", RRE_2, 1099 }, - { "RRDTR", RRF_b_4, 1524 }, - { "RRXTR", RRF_b_4, 1524 }, - { "RSCH", S_0, 1222 }, - { "RXSBG", RIE_f_5, 846 }, - { "RXSBGT", RIE_f_5, 846 }, - { "S", RX_a_2_ux, 872 }, - { "SAC", S_1_u, 1102 }, - { "SACF", S_1_u, 1102 }, - { "SAL", S_0, 1224 }, - { "SAM24", E_0, 854 }, - { "SAM31", E_0, 854 }, - { "SAM64", E_0, 854 }, - { "SAR", RRE_2, 854 }, - { "SCCTR", RRE_2, 46 }, - { "SCHM", S_0, 1225 }, - { "SCK", S_1_u, 1103 }, - { "SCKC", S_1_u, 1104 }, - { "SCKPF", E_0, 1105 }, - { "SD", RX_a_2_ux, 1428 }, - { "SDB", RXE_2, 1470 }, - { "SDBR", RRE_2, 1470 }, - { "SDR", RR_2, 1428 }, - { "SDTR", RRF_a_3, 1527 }, - { "SDTRA", RRF_a_4, 1527 }, - { "SE", RX_a_2_ux, 1428 }, - { "SEB", RXE_2, 1470 }, - { "SEBR", RRE_2, 1470 }, - { "SELFHR", RRF_a_4, 864 }, - { "SELGR", RRF_a_4, 864 }, - { "SELR", RRF_a_4, 864 }, - { "SER", RR_2, 1428 }, - { "SFASR", RRE_1, 976 }, - { "SFPC", RRE_1, 975 }, - { "SG", RXY_a_2, 872 }, - { "SGF", RXY_a_2, 872 }, - { "SGFR", RRE_2, 871 }, - { "SGH", RXY_a_2, 872 }, - { "SGR", RRE_2, 871 }, - { "SGRK", RRF_a_3, 872 }, - { "SH", RX_a_2_ux, 872 }, - { "SHHHR", RRF_a_3, 873 }, - { "SHHLR", RRF_a_3, 873 }, - { "SHY", RXY_a_2, 872 }, - { "SIE", S_1_u, 7 }, - { "SIGP", RS_a_3, 1115 }, - { "SIO", S_1_u, 129 }, - { "SIOF", S_1_u, 129 }, - { "SL", RX_a_2_ux, 874 }, - { "SLA", RS_a_2, 856 }, - { "SLAG", RSY_a_3, 856 }, - { "SLAK", RSY_a_3, 856 }, - { "SLB", RXY_a_2, 875 }, - { "SLBG", RXY_a_2, 875 }, - { "SLBGR", RRE_2, 875 }, - { "SLBR", RRE_2, 875 }, - { "SLDA", RS_a_2, 855 }, - { "SLDL", RS_a_2, 856 }, - { "SLDT", RXF_3_x, 1526 }, - { "SLFI", RIL_a_2, 874 }, - { "SLG", RXY_a_2, 874 }, - { "SLGF", RXY_a_2, 874 }, - { "SLGFI", RIL_a_2, 874 }, - { "SLGFR", RRE_2, 873 }, - { "SLGR", RRE_2, 873 }, - { "SLGRK", RRF_a_3, 873 }, - { "SLHHHR", RRF_a_3, 875 }, - { "SLHHLR", RRF_a_3, 875 }, - { "SLL", RS_a_2, 857 }, - { "SLLG", RSY_a_3, 857 }, - { "SLLK", RSY_a_3, 857 }, - { "SLR", RR_2, 873 }, - { "SLRK", RRF_a_3, 873 }, - { "SLXT", RXF_3_x, 1526 }, - { "SLY", RXY_a_2, 874 }, - { "SORTL", RRE_2, 19 }, - { "SP", SS_b_2, 927 }, - { "SPCTR", RRE_2, 47 }, - { "SPKA", S_1_u, 1106 }, - { "SPM", RR_1, 855 }, - { "SPT", S_1_u, 1105 }, - { "SPX", S_1_u, 1105 }, - { "SQD", RXE_2, 1427 }, - { "SQDB", RXE_2, 1470 }, - { "SQDBR", RRE_2, 1470 }, - { "SQDR", RRE_2, 1427 }, - { "SQE", RXE_2, 1427 }, - { "SQEB", RXE_2, 1470 }, - { "SQEBR", RRE_2, 1470 }, - { "SQER", RRE_2, 1427 }, - { "SQXBR", RRE_2, 1470 }, - { "SQXR", RRE_2, 1427 }, - { "SR", RR_2, 871 }, - { "SRA", RS_a_2, 859 }, - { "SRAG", RSY_a_3, 859 }, - { "SRAK", RSY_a_3, 859 }, - { "SRDA", RS_a_2, 858 }, - { "SRDL", RS_a_2, 858 }, - { "SRDT", RXF_3_x, 1526 }, - { "SRK", RRF_a_3, 871 }, - { "SRL", RS_a_2, 860 }, - { "SRLG", RSY_a_3, 860 }, - { "SRLK", RSY_a_3, 860 }, - { "SRNM", S_1_u, 975 }, - { "SRNMB", S_1_u, 975 }, - { "SRNMT", S_1_u, 975 }, - { "SRP", SS_c_3, 926 }, - { "SRST", RRE_2, 850 }, - { "SRSTU", RRE_2, 852 }, - { "SRXT", RXF_3_x, 1526 }, - { "SSAIR", RRE_1, 1107 }, - { "SSAR", RRE_1, 1107 }, - { "SSCH", S_1_u, 1227 }, - { "SSK", RR_2, 304 }, - { "SSKE", RRF_c_3_opt, 1112 }, - { "SSM", SI_1, 1115 }, - { "ST", RX_a_2_ux, 860 }, - { "STAM", RS_a_3, 861 }, - { "STAMY", RSY_a_3, 861 }, - { "STAP", S_1_u, 1118 }, - { "STC", RX_a_2_ux, 862 }, - { "STCH", RXY_a_2, 862 }, - { "STCK", S_1_u, 863 }, - { "STCKC", S_1_u, 1117 }, - { "STCKE", S_1_u, 864 }, - { "STCKF", S_1_u, 863 }, - { "STCM", RS_b_3, 862 }, - { "STCMH", RSY_b_3_us, 862 }, - { "STCMY", RSY_b_3_us, 862 }, - { "STCPS", S_1_u, 1228 }, - { "STCRW", S_1_u, 1229 }, - { "STCTG", RSY_a_3, 1117 }, - { "STCTL", RS_a_3, 1117 }, - { "STCY", RXY_a_2, 862 }, - { "STD", RX_a_2_ux, 976 }, - { "STDY", RXY_a_2, 977 }, - { "STE", RX_a_2_ux, 976 }, - { "STEY", RXY_a_2, 977 }, - { "STFH", RXY_a_2, 868 }, - { "STFL", S_1_u, 1120 }, - { "STFLE", S_1_s, 866 }, - { "STFPC", S_1_u, 977 }, - { "STG", RXY_a_2, 861 }, - { "STGRL", RIL_b_2, 861 }, - { "STGSC", RXY_a_2, 867 }, - { "STH", RX_a_2_ux, 867 }, - { "STHH", RXY_a_2, 868 }, - { "STHRL", RIL_b_2, 868 }, - { "STHY", RXY_a_2, 868 }, - { "STIDC", S_1_u, 129 }, - { "STIDP", S_1_u, 1118 }, - { "STM", RS_a_3, 869 }, - { "STMG", RSY_a_3, 869 }, - { "STMH", RSY_a_3, 869 }, - { "STMY", RSY_a_3, 869 }, - { "STNSM", SI_2_u, 1146 }, - { "STOC", RSY_b_3_su, 869 }, - { "STOCFH", RSY_b_3_su, 870 }, - { "STOCG", RSY_b_3_su, 869 }, - { "STOSM", SI_2_u, 1146 }, - { "STPQ", RXY_a_2, 870 }, - { "STPT", S_1_u, 1120 }, - { "STPX", S_1_u, 1121 }, - { "STRAG", SSE_2, 1121 }, - { "STRL", RIL_b_2, 861 }, - { "STRV", RXY_a_2, 871 }, - { "STRVG", RXY_a_2, 871 }, - { "STRVH", RXY_a_2, 871 }, - { "STSCH", S_1_u, 1230 }, - { "STSI", S_1_u, 1122 }, - { "STURA", RRE_2, 1147 }, - { "STURG", RRE_2, 1147 }, - { "STY", RXY_a_2, 861 }, - { "SU", RX_a_2_ux, 1429 }, - { "SUR", RR_2, 1429 }, - { "SVC", I_1, 876 }, - { "SW", RX_a_2_ux, 1429 }, - { "SWR", RR_2, 1429 }, - { "SXBR", RRE_2, 1470 }, - { "SXR", RR_2, 1428 }, - { "SXTR", RRF_a_3, 1527 }, - { "SXTRA", RRF_a_4, 1527 }, - { "SY", RXY_a_2, 872 }, - { "TABORT", S_1_u, 878 }, - { "TAM", E_0, 876 }, - { "TAR", RRE_2, 1147 }, - { "TB", RRE_2, 1149 }, - { "TBDR", RRF_e_3, 956 }, - { "TBEDR", RRF_e_3, 956 }, - { "TBEGIN", SIL_2_s, 879 }, - { "TBEGINC", SIL_2_s, 883 }, - { "TCDB", RXE_2, 1471 }, - { "TCEB", RXE_2, 1471 }, - { "TCH", S_1_u, 384 }, - { "TCXB", RXE_2, 1471 }, - { "TDCDT", RXE_2, 1528 }, - { "TDCET", RXE_2, 1528 }, - { "TDCXT", RXE_2, 1528 }, - { "TDGDT", RXE_2, 1529 }, - { "TDGET", RXE_2, 1529 }, - { "TDGXT", RXE_2, 1529 }, - { "TEND", S_0, 885 }, - { "THDER", RRE_2, 955 }, - { "THDR", RRE_2, 955 }, - { "TIO", S_1_u, 385 }, - { "TM", SI_2_u, 877 }, - { "TMH", RI_a_2_u, 877 }, - { "TMHH", RI_a_2_u, 877 }, - { "TMHL", RI_a_2_u, 877 }, - { "TML", RI_a_2_u, 877 }, - { "TMLH", RI_a_2_u, 877 }, - { "TMLL", RI_a_2_u, 877 }, - { "TMY", SIY_2_su, 877 }, - { "TP", RSL_a_1, 928 }, - { "TPEI", RRE_2, 1151 }, - { "TPI", S_1_u, 1231 }, - { "TPROT", SSE_2, 1152 }, - { "TR", SS_a_2_u, 886 }, - { "TRACE", RS_a_3, 1155 }, - { "TRACG", RSY_a_3, 1155 }, - { "TRAP2", E_0, 1156 }, - { "TRAP4", S_1_u, 1156 }, - { "TRE", RRE_2, 893 }, - { "TROO", RRF_c_3_opt, 895 }, - { "TROT", RRF_c_3_opt, 895 }, - { "TRT", SS_a_2_u, 887 }, - { "TRTE", RRF_c_3_opt, 887 }, - { "TRTO", RRF_c_3_opt, 895 }, - { "TRTR", SS_a_2_u, 892 }, - { "TRTRE", RRF_c_3_opt, 888 }, - { "TRTT", RRF_c_3_opt, 895 }, - { "TS", SI_1, 876 }, - { "TSCH", S_1_u, 1232 }, - { "UNPK", SS_b_2, 900 }, - { "UNPKA", SS_a_2_u, 901 }, - { "UNPKU", SS_a_2_u, 902 }, - { "UPT", E_0, 903 }, - { "VA", VRR_c_4, 1557 }, - { "VAC", VRR_d_5, 1558 }, - { "VACC", VRR_c_4, 1558 }, - { "VACCC", VRR_d_5, 1559 }, - { "VACD", RI_a_2_u, 0 }, - { "VACE", RI_a_2_u, 0 }, - { "VACRS", RRE_2, 0 }, - { "VACSV", RRE_2, 0 }, - { "VAD", RI_a_2_u, 0 }, - { "VADS", RI_a_2_u, 0 }, - { "VAE", RI_a_2_u, 0 }, - { "VAES", RI_a_2_u, 0 }, - { "VAP", VRI_f_5, 1643 }, - { "VAS", RI_a_2_u, 0 }, - { "VAVG", VRR_c_4, 1560 }, - { "VAVGL", VRR_c_4, 1560 }, - { "VBPERM", VRR_c_3, 1536 }, - { "VC", RI_a_2_u, 0 }, - { "VCD", RI_a_2_u, 0 }, - { "VCDS", RI_a_2_u, 0 }, - { "VCE", RI_a_2_u, 0 }, - { "VCEQ", VRR_b_5, 1561 }, - { "VCES", RI_a_2_u, 0 }, - { "VCFPL", VRR_a_5, 1643 }, - { "VCFPS", VRR_a_5, 1641 }, - { "VCFPS", VRR_a_5, 1607 }, - { "VCH", VRR_b_5, 1562 }, - { "VCHL", VRR_b_5, 1563 }, - { "VCKSM", VRR_c_3, 1560 }, - { "VCLFP", VRR_a_5, 1611 }, - { "VCLGD", VRR_a_5, 1611 }, - { "VCLZ", VRR_a_3, 1564 }, - { "VCOVM", RRE_2, 0 }, - { "VCP", VRR_h_3, 1644 }, - { "VCS", RI_a_2_u, 0 }, - { "VCSFP", VRR_a_5, 1644 }, - { "VCTZ", VRR_a_3, 1564 }, - { "VCVB", VRR_i_3, 1645 }, - { "VCVBG", VRR_i_3, 1645 }, - { "VCVD", VRI_i_4, 1646 }, - { "VCVDG", VRI_i_4, 1646 }, - { "VCVM", RRE_2, 0 }, - { "VCZVM", RRE_2, 0 }, - { "VDD", RI_a_2_u, 0 }, - { "VDDS", RI_a_2_u, 0 }, - { "VDDS", RI_a_2_u, 0 }, - { "VDE", RI_a_2_u, 0 }, - { "VDES", RI_a_2_u, 0 }, - { "VDP", VRI_f_5, 1648 }, - { "VEC", VRR_a_3, 1561 }, - { "VECL", VRR_a_3, 1561 }, - { "VERIM", VRI_d_5, 1576 }, - { "VERLL", VRS_a_4, 1575 }, - { "VERLLV", VRR_c_4, 1575 }, - { "VESL", VRS_a_4, 1577 }, - { "VESLV", VRR_c_4, 1577 }, - { "VESRA", VRS_a_4, 1577 }, - { "VESRAV", VRR_c_4, 1577 }, - { "VESRL", VRS_a_4, 1578 }, - { "VESRLV", VRR_c_4, 1578 }, - { "VFA", VRR_c_5, 1595 }, - { "VFAE", VRR_b_5_opt, 1585 }, - { "VFCE", VRR_c_6, 1601 }, - { "VFCH", VRR_c_6, 1603 }, - { "VFCHE", VRR_c_6, 1605 }, - { "VFD", VRR_c_5, 1613 }, - { "VFEE", VRR_b_5_opt, 1587 }, - { "VFENE", VRR_b_5_opt, 1588 }, - { "VFI", VRR_a_5, 1615 }, - { "VFLL", VRR_a_4, 1617 }, - { "VFLR", VRR_a_5, 1618 }, - { "VFM", VRR_c_5, 1631 }, - { "VFMA", VRR_e_6, 1633 }, - { "VFMAX", VRR_c_6, 1619 }, - { "VFMIN", VRR_c_6, 1625 }, - { "VFMS", VRR_e_6, 1633 }, - { "VFNMA", VRR_e_6, 1633 }, - { "VFNMS", VRR_e_6, 1633 }, - { "VFPSO", VRR_a_5, 1635 }, - { "VFS", VRR_c_5, 1637 }, - { "VFSQ", VRR_a_4, 1636 }, - { "VFTCI", VRI_e_5, 1638 }, - { "VGBM", VRI_a_2, 1537 }, - { "VGEF", VRV_3, 1536 }, - { "VGEG", VRV_3, 1536 }, - { "VGFM", VRR_c_4, 1565 }, - { "VGFMA", VRR_d_5, 1566 }, - { "VGM", VRI_b_4, 1537 }, - { "VISTR", VRR_a_4_opt, 1589 }, - { "VL", VRX_3_opt, 1538 }, - { "VLBB", VRX_3, 1542 }, - { "VLBIX", RRE_2, 0 }, - { "VLBR", VRX_3, 1563 }, - { "VLBRREP", VRX_3, 1562 }, - { "VLC", VRR_a_3, 1566 }, - { "VLCVM", RRE_2, 0 }, - { "VLD", RI_a_2_u, 0 }, - { "VLEB", VRX_3, 1538 }, - { "VLEBRG", VRX_3, 1561 }, - { "VLEBRH", VRX_3, 1561 }, - { "VLEF", VRX_3, 1539 }, - { "VLEG", VRX_3, 1539 }, - { "VLEH", VRX_3, 1539 }, - { "VLEIB", VRI_a_3, 1539 }, - { "VLEIF", VRI_a_3, 1539 }, - { "VLEIG", VRI_a_3, 1539 }, - { "VLEIH", VRI_a_3, 1539 }, - { "VLELD", RRE_2, 0 }, - { "VLELE", RRE_2, 0 }, - { "VLER", VRX_3, 1564 }, - { "VLGV", VRS_c_4, 1539 }, - { "VLH", RI_a_2_u, 0 }, - { "VLI", RRE_2, 0 }, - { "VLID", RRE_2, 0 }, - { "VLINT", RI_a_2_u, 0 }, - { "VLIP", VRI_h_3, 1649 }, - { "VLL", VRS_b_3, 1543 }, - { "VLLEBRZ", VRX_3, 1562 }, - { "VLLEZ", VRX_3, 1540 }, - { "VLM", VRS_a_4_opt, 1541 }, - { "VLMD", RI_a_2_u, 0 }, - { "VLP", VRR_a_3, 1566 }, - { "VLR", VRR_a_2, 1538 }, - { "VLREP", VRX_3, 1538 }, - { "VLRL", VSI_3, 1541 }, - { "VLRLR", VRS_d_3, 1541 }, - { "VLVCA", RRE_2, 0 }, - { "VLVCU", RRE_2, 0 }, - { "VLVG", VRS_b_4, 1543 }, - { "VLVGP", VRR_f_3, 1543 }, - { "VLVM", RRE_2, 0 }, - { "VLY", RI_a_2_u, 0 }, - { "VLYD", RI_a_2_u, 0 }, - { "VM", RI_a_2_u, 0 }, - { "VMAD", RI_a_2_u, 0 }, - { "VMADS", RI_a_2_u, 0 }, - { "VMAE", VRR_d_5, 1569 }, - { "VMAES", RI_a_2_u, 0 }, - { "VMAH", VRR_d_5, 1569 }, - { "VMAL", VRR_d_5, 1568 }, - { "VMALE", VRR_d_5, 1569 }, - { "VMALH", VRR_d_5, 1569 }, - { "VMALO", VRR_d_5, 1570 }, - { "VMAO", VRR_d_5, 1570 }, - { "VMCD", RI_a_2_u, 0 }, - { "VMCE", RI_a_2_u, 0 }, - { "VMD", RI_a_2_u, 0 }, - { "VMD", RI_a_2_u, 0 }, - { "VMDS", RI_a_2_u, 0 }, - { "VME", VRR_c_4, 1572 }, - { "VMES", RI_a_2_u, 0 }, - { "VMH", VRR_c_4, 1570 }, - { "VML", VRR_c_4, 1571 }, - { "VMLE", VRR_c_4, 1572 }, - { "VMLH", VRR_c_4, 1571 }, - { "VMLO", VRR_c_4, 1572 }, - { "VMN", VRR_c_4, 1567 }, - { "VMNL", VRR_c_4, 1568 }, - { "VMNSD", RRE_2, 0 }, - { "VMNSE", RRE_2, 0 }, - { "VMO", VRR_c_4, 1572 }, - { "VMP", VRI_f_5, 1650 }, - { "VMRH", VRR_c_4, 1544 }, - { "VMRL", VRR_c_4, 1544 }, - { "VMRRS", RRE_2, 0 }, - { "VMRSV", RRE_2, 0 }, - { "VMS", RI_a_2_u, 0 }, - { "VMSD", RI_a_2_u, 0 }, - { "VMSDS", RI_a_2_u, 0 }, - { "VMSE", RI_a_2_u, 0 }, - { "VMSES", RI_a_2_u, 0 }, - { "VMSL", VRR_d_6, 1573 }, - { "VMSP", VRI_f_5, 1651 }, - { "VMX", VRR_c_4, 1567 }, - { "VMXAD", RRE_2, 0 }, - { "VMXAE", RRE_2, 0 }, - { "VMXL", VRR_c_4, 1567 }, - { "VMXSE", RRE_2, 0 }, - { "VN", VRR_c_3, 1559 }, - { "VNC", VRR_c_3, 1559 }, - { "VNN", VRR_c_3, 1574 }, - { "VNO", VRR_c_3, 1574 }, - { "VNS", RI_a_2_u, 0 }, - { "VNVM", RRE_2, 0 }, - { "VNX", VRR_c_3, 1574 }, - { "VO", VRR_c_3, 1574 }, - { "VOC", VRR_c_3, 1575 }, - { "VOS", RI_a_2_u, 0 }, - { "VOVM", RRE_2, 0 }, - { "VOVM", RRE_2, 0 }, - { "VPDI", VRR_c_4, 1547 }, - { "VPERM", VRR_e_4, 1547 }, - { "VPK", VRR_c_4, 1545 }, - { "VPKLS", VRR_b_5, 1546 }, - { "VPKS", VRR_b_5, 1545 }, - { "VPKZ", VSI_3, 1652 }, - { "VPOPCT", VRR_a_3, 1575 }, - { "VPSOP", VRI_g_5_u, 1653 }, - { "VRCL", RRE_2, 0 }, - { "VREP", VRI_c_4, 1547 }, - { "VREPI", VRI_a_3, 1548 }, - { "VRP", VRI_f_5, 1654 }, - { "VRRS", RRE_2, 0 }, - { "VRSV", RRE_2, 0 }, - { "VRSVC", RRE_2, 0 }, - { "VS", VRR_c_4, 1580 }, - { "VSBCBI", VRR_d_5, 1582 }, - { "VSBI", VRR_d_5, 1581 }, - { "VSCBI", VRR_c_4, 1581 }, - { "VSCEF", VRV_3, 1548 }, - { "VSCEG", VRV_3, 1548 }, - { "VSD", RI_a_2_u, 0 }, - { "VSD", RI_a_2_u, 0 }, - { "VSDP", VRI_f_5, 1656 }, - { "VSDS", RI_a_2_u, 0 }, - { "VSDS", RI_a_2_u, 0 }, - { "VSE", RI_a_2_u, 0 }, - { "VSEG", VRR_a_3, 1549 }, - { "VSEL", VRR_e_4, 1549 }, - { "VSES", RI_a_2_u, 0 }, - { "VSL", VRR_c_3, 1579 }, - { "VSLB", VRR_c_3, 1579 }, - { "VSLD", VRI_d_4, 1607 }, - { "VSLDB", VRI_d_4, 1579 }, - { "VSLL", RRE_2, 0 }, - { "VSP", VRI_f_5, 1658 }, - { "VSPSD", RRE_2, 0 }, - { "VSRA", VRR_c_3, 1579 }, - { "VSRAB", VRR_c_3, 1580 }, - { "VSRD", VRI_d_4, 1608 }, - { "VSRL", VRR_c_3, 1580 }, - { "VSRLB", VRR_c_3, 1580 }, - { "VSRP", VRI_g_5_s, 1657 }, - { "VSRRS", RRE_2, 0 }, - { "VSRSV", RRE_2, 0 }, - { "VSS", RI_a_2_u, 0 }, - { "VST", VRX_3_opt, 1550 }, - { "VSTBR", VRX_3, 1576 }, - { "VSTD", RI_a_2_u, 0 }, - { "VSTEB", VRX_3, 1550 }, - { "VSTEBRF", VRX_3, 1576 }, - { "VSTEBRG", VRX_3, 1576 }, - { "VSTEBRH", VRX_3, 1576 }, - { "VSTEF", VRX_3, 1550 }, - { "VSTEG", VRX_3, 1550 }, - { "VSTEH", VRX_3, 1550 }, - { "VSTER", VRX_3, 1578 }, - { "VSTH", RI_a_2_u, 0 }, - { "VSTI", RRE_2, 0 }, - { "VSTID", RRE_2, 0 }, - { "VSTK", RI_a_2_u, 0 }, - { "VSTKD", RI_a_2_u, 0 }, - { "VSTL", VRS_b_3, 1552 }, - { "VSTM", VRS_a_4_opt, 1551 }, - { "VSTMD", RI_a_2_u, 0 }, - { "VSTRC", VRR_d_6_opt, 1590 }, - { "VSTRL", VSI_3, 1551 }, - { "VSTRLR", VRS_d_3, 1551 }, - { "VSTRS", VRR_d_6_opt, 1622 }, - { "VSTVM", RRE_2, 0 }, - { "VSTVP", RRE_2, 0 }, - { "VSUM", VRR_c_4, 1583 }, - { "VSUMG", VRR_c_4, 1582 }, - { "VSUMQ", VRR_c_4, 1583 }, - { "VSVMM", RRE_2, 0 }, - { "VTM", VRR_a_2, 1584 }, - { "VTP", VRR_g_1, 1660 }, - { "VTVM", RRE_2, 0 }, - { "VUPH", VRR_a_3, 1552 }, - { "VUPKZ", VSI_3, 1660 }, - { "VUPL", VRR_a_3, 1553 }, - { "VUPLH", VRR_a_3, 1553 }, - { "VUPLL", VRR_a_3, 1554 }, - { "VX", VRR_c_3, 1565 }, - { "VXELD", RRE_2, 0 }, - { "VXELE", RRE_2, 0 }, - { "VXS", RI_a_2_u, 0 }, - { "VXVC", RRE_2, 0 }, - { "VXVM", RRE_2, 0 }, - { "VXVMM", RRE_2, 0 }, - { "VZPSD", RRE_2, 0 }, - { "WFC", VRR_a_4, 1599 }, - { "WFK", VRR_a_4, 1600 }, - { "X", RX_a_2_ux, 738 }, - { "XC", SS_a_2_s, 739 }, - { "XG", RXY_a_2, 738 }, - { "XGR", RRE_2, 738 }, - { "XGRK", RRF_a_3, 738 }, - { "XI", SI_2_u, 739 }, - { "XIHF", RIL_a_2, 740 }, - { "XILF", RIL_a_2, 740 }, - { "XIY", SIY_2_su, 739 }, - { "XR", RR_2, 738 }, - { "XRK", RRF_a_3, 738 }, - { "XSCH", S_0, 1215 }, - { "XY", RXY_a_2, 738 }, - { "ZAP", SS_b_2, 928 }, + { "A", RX_a_2_ux, 510, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "AD", RX_a_2_ux, 1412, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "ADB", RXE_2, 1445, UNI_ESA_SINCE_ZOP }, + { "ADBR", RRE_2, 1445, UNI_ESA_SINCE_ZOP }, + { "ADDFRR", RRE_2, 7, ESA_XA }, + { "ADR", RR_2, 1412, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "ADTR", RRF_a_3, 1491, UNI_SINCE_Z9 }, + { "ADTRA", RRF_a_4, 1491, UNI_SINCE_Z11 }, + { "AE", RX_a_2_ux, 1412, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "AEB", RXE_2, 1445, UNI_ESA_SINCE_ZOP }, + { "AEBR", RRE_2, 1445, UNI_ESA_SINCE_ZOP }, + { "AER", RR_2, 1412, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "AFI", RIL_a_2, 511, UNI_SINCE_Z9 }, + { "AG", RXY_a_2, 511, UNI_SINCE_ZOP }, + { "AGF", RXY_a_2, 511, UNI_SINCE_ZOP }, + { "AGFI", RIL_a_2, 511, UNI_SINCE_Z9 }, + { "AGFR", RRE_2, 510, UNI_SINCE_ZOP }, + { "AGH", RXY_a_2, 512, UNI_SINCE_Z14 }, + { "AGHI", RI_a_2_s, 513, UNI_SINCE_ZOP }, + { "AGHIK", RIE_d_3, 511, UNI_SINCE_Z11 }, + { "AGR", RRE_2, 510, UNI_SINCE_ZOP }, + { "AGRK", RRF_a_3, 510, UNI_SINCE_Z11 }, + { "AGSI", SIY_2_ss, 511, UNI_SINCE_Z10 }, + { "AH", RX_a_2_ux, 512, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "AHHHR", RRF_a_3, 513, UNI_SINCE_Z11 }, + { "AHHLR", RRF_a_3, 513, UNI_SINCE_Z11 }, + { "AHI", RI_a_2_s, 512, UNI_ESA_SINCE_ZOP }, + { "AHIK", RIE_d_3, 511, UNI_SINCE_Z11 }, + { "AHY", RXY_a_2, 512, UNI_SINCE_YOP }, + { "AIH", RIL_a_2, 513, UNI_SINCE_Z11 }, + { "AL", RX_a_2_ux, 514, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "ALC", RXY_a_2, 515, UNI_ESA_SINCE_ZOP }, + { "ALCG", RXY_a_2, 515, UNI_SINCE_ZOP }, + { "ALCGR", RRE_2, 515, UNI_SINCE_ZOP }, + { "ALCR", RRE_2, 515, UNI_ESA_SINCE_ZOP }, + { "ALFI", RIL_a_2, 514, UNI_SINCE_Z9 }, + { "ALG", RXY_a_2, 514, UNI_SINCE_ZOP }, + { "ALGF", RXY_a_2, 514, UNI_SINCE_ZOP }, + { "ALGFI", RIL_a_2, 514, UNI_SINCE_Z9 }, + { "ALGFR", RRE_2, 514, UNI_SINCE_ZOP }, + { "ALGHSIK", RIE_d_3, 516, UNI_SINCE_Z11 }, + { "ALGR", RRE_2, 514, UNI_SINCE_ZOP }, + { "ALGRK", RRF_a_3, 514, UNI_SINCE_Z11 }, + { "ALGSI", SIY_2_ss, 516, UNI_SINCE_Z10 }, + { "ALHHHR", RRF_a_3, 515, UNI_SINCE_Z11 }, + { "ALHHLR", RRF_a_3, 515, UNI_SINCE_Z11 }, + { "ALHSIK", RIE_d_3, 516, UNI_SINCE_Z11 }, + { "ALR", RR_2, 514, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "ALRK", RRF_a_3, 514, UNI_SINCE_Z11 }, + { "ALSI", SIY_2_ss, 516, UNI_SINCE_Z10 }, + { "ALSIH", RIL_a_2, 517, UNI_SINCE_Z11 }, + { "ALSIHN", RIL_a_2, 517, UNI_SINCE_Z11 }, + { "ALY", RXY_a_2, 514, UNI_SINCE_YOP }, + { "AP", SS_b_2, 920, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "AR", RR_2, 510, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "ARK", RRF_a_3, 510, UNI_SINCE_Z11 }, + { "ASI", SIY_2_ss, 511, UNI_SINCE_Z10 }, + { "AU", RX_a_2_ux, 1413, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "AUR", RR_2, 1413, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "AW", RX_a_2_ux, 1413, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "AWR", RR_2, 1413, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "AXBR", RRE_2, 1445, UNI_ESA_SINCE_ZOP }, + { "AXR", RR_2, 1412, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "AXTR", RRF_a_3, 1491, UNI_SINCE_Z9 }, + { "AXTRA", RRF_a_4, 1491, UNI_SINCE_Z11 }, + { "AY", RXY_a_2, 511, UNI_SINCE_YOP }, + { "BAKR", RRE_2, 993, UNI_ESA_SINCE_ZOP }, + { "BAL", RX_a_2_ux, 519, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BALR", RR_2, 519, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BAS", RX_a_2_ux, 520, UNI_ESA_XA_370_SINCE_ZOP }, + { "BASR", RR_2, 520, UNI_ESA_XA_370_SINCE_ZOP }, + { "BASSM", RX_a_2, 520, UNI_ESA_XA_SINCE_ZOP }, + { "BC", RX_b_2, 524, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BCR", RR_2_m, 524, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BCT", RX_a_2_ux, 525, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BCTG", RXY_a_2, 525, UNI_SINCE_ZOP }, + { "BCTGR", RRE_2, 525, UNI_SINCE_ZOP }, + { "BCTR", RR_2, 525, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BIC", RXY_b_2, 523, UNI_SINCE_Z14 }, + { "BPP", SMI_3, 527, UNI_SINCE_Z12 }, + { "BPRP", MII_3, 527, UNI_SINCE_Z12 }, + { "BRAS", RI_b_2, 530, UNI_ESA_SINCE_ZOP }, + { "BRASL", RIL_b_2, 530, UNI_ESA_SINCE_ZOP }, + { "BRC", RI_c_2, 530, UNI_ESA_SINCE_ZOP }, + { "BRCL", RIL_c_2, 530, UNI_ESA_SINCE_ZOP }, + { "BRCT", RI_b_2, 531, UNI_ESA_SINCE_ZOP }, + { "BRCTG", RI_b_2, 531, UNI_SINCE_ZOP }, + { "BRCTH", RIL_b_2, 531, UNI_SINCE_Z11 }, + { "BRXH", RSI_3, 532, UNI_ESA_SINCE_ZOP }, + { "BRXHG", RIE_e_3, 532, UNI_SINCE_ZOP }, + { "BRXLE", RSI_3, 532, UNI_ESA_SINCE_ZOP }, + { "BRXLG", RIE_e_3, 532, UNI_SINCE_ZOP }, + { "BSA", RRE_2, 989, UNI_ESA_SINCE_ZOP }, + { "BSG", RRE_2, 995, UNI_ESA_SINCE_ZOP }, + { "BSM", RR_2, 522, UNI_ESA_XA_SINCE_ZOP }, + { "BXH", RS_a_3, 526, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BXHG", RSY_a_3, 526, UNI_SINCE_ZOP }, + { "BXLE", RS_a_3, 526, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BXLEG", RSY_a_3, 526, UNI_SINCE_ZOP }, + { "C", RX_a_2_ux, 618, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CD", RX_a_2_ux, 1414, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CDB", RXE_2, 1447, UNI_ESA_SINCE_ZOP }, + { "CDBR", RRE_2, 1447, UNI_ESA_SINCE_ZOP }, + { "CDFBR", RRE_2, 1449, UNI_ESA_SINCE_ZOP }, + { "CDFBRA", RRF_e_4, 1449, UNI_SINCE_Z11 }, + { "CDFR", RRE_2, 1415, UNI_ESA_SINCE_ZOP }, + { "CDFTR", RRF_e_4, 1496, UNI_SINCE_Z11 }, + { "CDGBR", RRE_2, 1449, UNI_SINCE_ZOP }, + { "CDGBRA", RRF_e_4, 1449, UNI_SINCE_Z11 }, + { "CDGR", RRE_2, 1415, UNI_SINCE_ZOP }, + { "CDGTR", RRE_2, 1496, UNI_SINCE_Z9 }, + { "CDGTRA", RRF_e_4, 1496, UNI_SINCE_Z11 }, + { "CDLFBR", RRF_e_4, 1451, UNI_SINCE_Z11 }, + { "CDLFTR", RRF_e_4, 1497, UNI_SINCE_Z11 }, + { "CDLGBR", RRF_e_4, 1451, UNI_SINCE_Z11 }, + { "CDLGTR", RRF_e_4, 1497, UNI_SINCE_Z11 }, + { "CDPT", RSL_b_3, 1498, UNI_SINCE_Z13 }, + { "CDR", RR_2, 1414, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CDS", RS_a_3, 628, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CDSG", RSY_a_3, 628, UNI_SINCE_ZOP }, + { "CDSTR", RRE_2, 1500, UNI_SINCE_Z9 }, + { "CDSY", RSY_a_3, 628, UNI_SINCE_YOP }, + { "CDTR", RRE_2, 1494, UNI_SINCE_Z9 }, + { "CDUTR", RRE_2, 1500, UNI_SINCE_Z9 }, + { "CDZT", RSL_b_3, 1501, UNI_SINCE_Z12 }, + { "CE", RX_a_2_ux, 1414, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CEB", RXE_2, 1447, UNI_ESA_SINCE_ZOP }, + { "CEBR", RRE_2, 1447, UNI_ESA_SINCE_ZOP }, + { "CEDTR", RRE_2, 1495, UNI_SINCE_Z9 }, + { "CEFBR", RRE_2, 1449, UNI_ESA_SINCE_ZOP }, + { "CEFBRA", RRF_e_4, 1449, UNI_SINCE_Z11 }, + { "CEFR", RRE_2, 1415, UNI_ESA_SINCE_ZOP }, + { "CEGBR", RRE_2, 1449, UNI_SINCE_ZOP }, + { "CEGBRA", RRF_e_4, 1449, UNI_SINCE_Z11 }, + { "CEGR", RRE_2, 1415, UNI_SINCE_ZOP }, + { "CELFBR", RRF_e_4, 1451, UNI_SINCE_Z11 }, + { "CELGBR", RRF_e_4, 1451, UNI_SINCE_Z11 }, + { "CER", RR_2, 1414, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CEXTR", RRE_2, 1495, UNI_SINCE_Z9 }, + { "CFC", S_1_u, 621, UNI_ESA_XA_SINCE_ZOP }, + { "CFDBR", RRF_e_3, 1452, UNI_ESA_SINCE_ZOP }, + { "CFDBRA", RRF_e_4, 1452, UNI_SINCE_Z11 }, + { "CFDR", RRF_e_3, 1415, UNI_ESA_SINCE_ZOP }, + { "CFDTR", RRF_e_4, 1502, UNI_SINCE_Z11 }, + { "CFEBR", RRF_e_3, 1452, UNI_ESA_SINCE_ZOP }, + { "CFEBRA", RRF_e_4, 1452, UNI_SINCE_Z11 }, + { "CFER", RRF_e_3, 1415, UNI_ESA_SINCE_ZOP }, + { "CFI", RIL_a_2, 618, UNI_SINCE_Z9 }, + { "CFXBR", RRF_e_3, 1452, UNI_ESA_SINCE_ZOP }, + { "CFXBRA", RRF_e_4, 1452, UNI_SINCE_Z11 }, + { "CFXR", RRF_e_3, 1415, UNI_ESA_SINCE_ZOP }, + { "CFXTR", RRF_e_4, 1502, UNI_SINCE_Z11 }, + { "CG", RXY_a_2, 618, UNI_SINCE_ZOP }, + { "CGDBR", RRF_e_3, 1452, UNI_SINCE_ZOP }, + { "CGDBRA", RRF_e_4, 1452, UNI_SINCE_Z11 }, + { "CGDR", RRF_e_3, 1415, UNI_SINCE_ZOP }, + { "CGDTR", RRF_e_3, 1501, UNI_SINCE_Z9 }, + { "CGDTRA", RRF_e_4, 1502, UNI_SINCE_Z11 }, + { "CGEBR", RRF_e_3, 1452, UNI_SINCE_ZOP }, + { "CGEBRA", RRF_e_4, 1452, UNI_SINCE_Z11 }, + { "CGER", RRF_e_3, 1415, UNI_SINCE_ZOP }, + { "CGF", RXY_a_2, 618, UNI_SINCE_ZOP }, + { "CGFI", RIL_a_2, 619, UNI_SINCE_Z9 }, + { "CGFR", RRE_2, 618, UNI_SINCE_ZOP }, + { "CGFRL", RIL_b_2, 619, UNI_SINCE_Z10 }, + { "CGH", RXY_a_2, 634, UNI_SINCE_Z10 }, + { "CGHI", RI_a_2_s, 634, UNI_SINCE_ZOP }, + { "CGHRL", RIL_b_2, 634, UNI_SINCE_Z10 }, + { "CGHSI", SIL_2_s, 634, UNI_SINCE_Z10 }, + { "CGIB", RIS_4, 620, UNI_SINCE_Z10 }, + { "CGIJ", RIE_c_4, 620, UNI_SINCE_Z10 }, + { "CGIT", RIE_a_3, 633, UNI_SINCE_Z10 }, + { "CGR", RRE_2, 618, UNI_SINCE_ZOP }, + { "CGRB", RRS_4, 619, UNI_SINCE_Z10 }, + { "CGRJ", RIE_b_4, 620, UNI_SINCE_Z10 }, + { "CGRL", RIL_b_2, 619, UNI_SINCE_Z10 }, + { "CGRT", RRF_c_3, 633, UNI_SINCE_Z10 }, + { "CGXBR", RRF_e_3, 1452, UNI_SINCE_ZOP }, + { "CGXBRA", RRF_e_4, 1452, UNI_SINCE_Z11 }, + { "CGXR", RRF_e_3, 1415, UNI_SINCE_ZOP }, + { "CGXTR", RRF_e_3, 1501, UNI_SINCE_Z9 }, + { "CGXTRA", RRF_e_4, 1502, UNI_SINCE_Z11 }, + { "CH", RX_a_2_ux, 634, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CHF", RXY_a_2, 635, UNI_SINCE_Z11 }, + { "CHHR", RRE_2, 635, UNI_SINCE_Z11 }, + { "CHHSI", SIL_2_s, 634, UNI_SINCE_Z10 }, + { "CHI", RI_a_2_s, 634, UNI_ESA_SINCE_ZOP }, + { "CHLR", RRE_2, 635, UNI_SINCE_Z11 }, + { "CHRL", RIL_b_2, 634, UNI_SINCE_Z10 }, + { "CHSI", SIL_2_s, 634, UNI_SINCE_Z10 }, + { "CHY", RXY_a_2, 634, UNI_SINCE_YOP }, + { "CIB", RIS_4, 620, UNI_SINCE_Z10 }, + { "CIH", RIL_a_2, 635, UNI_SINCE_Z11 }, + { "CIJ", RIE_c_4, 620, UNI_SINCE_Z10 }, + { "CIT", RIE_a_3, 633, UNI_SINCE_Z10 }, + { "CKSM", RRE_2, 533, UNI_ESA_SINCE_ZOP }, + { "CL", RX_a_2_ux, 636, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CLC", SS_a_2_u, 636, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CLCL", RR_2, 642, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CLCLE", RS_a_3, 644, UNI_ESA_SINCE_ZOP }, + { "CLCLU", RSY_a_3, 647, UNI_SINCE_ZOP }, + { "CLFDBR", RRF_e_4, 1455, UNI_SINCE_Z11 }, + { "CLFDTR", RRF_e_4, 1504, UNI_SINCE_Z11 }, + { "CLFEBR", RRF_e_4, 1455, UNI_SINCE_Z11 }, + { "CLFHSI", SIL_2_u, 636, UNI_SINCE_Z10 }, + { "CLFI", RIL_a_2, 636, UNI_SINCE_Z9 }, + { "CLFIT", RIE_a_3, 640, UNI_SINCE_Z10 }, + { "CLFXBR", RRF_e_4, 1455, UNI_SINCE_Z11 }, + { "CLFXTR", RRF_e_4, 1504, UNI_SINCE_Z11 }, + { "CLG", RXY_a_2, 636, UNI_SINCE_ZOP }, + { "CLGDBR", RRF_e_4, 1455, UNI_SINCE_Z11 }, + { "CLGDTR", RRF_e_4, 1504, UNI_SINCE_Z11 }, + { "CLGEBR", RRF_e_4, 1455, UNI_SINCE_Z11 }, + { "CLGF", RXY_a_2, 636, UNI_SINCE_ZOP }, + { "CLGFI", RIL_a_2, 636, UNI_SINCE_Z9 }, + { "CLGFR", RRE_2, 636, UNI_SINCE_ZOP }, + { "CLGFRL", RIL_b_2, 637, UNI_SINCE_Z10 }, + { "CLGHRL", RIL_b_2, 637, UNI_SINCE_Z10 }, + { "CLGHSI", SIL_2_u, 636, UNI_SINCE_Z10 }, + { "CLGIB", RIS_4, 638, UNI_SINCE_Z10 }, + { "CLGIJ", RIE_c_4, 638, UNI_SINCE_Z10 }, + { "CLGIT", RIE_a_3, 640, UNI_SINCE_Z10 }, + { "CLGR", RRE_2, 636, UNI_SINCE_ZOP }, + { "CLGRB", RRS_4, 638, UNI_SINCE_Z10 }, + { "CLGRJ", RIE_b_4, 638, UNI_SINCE_Z10 }, + { "CLGRL", RIL_b_2, 637, UNI_SINCE_Z10 }, + { "CLGRT", RRF_c_3, 639, UNI_SINCE_Z10 }, + { "CLGT", RSY_b_3_ux, 639, UNI_SINCE_Z12 }, + { "CLGXBR", RRF_e_4, 1455, UNI_SINCE_Z11 }, + { "CLGXTR", RRF_e_4, 1504, UNI_SINCE_Z11 }, + { "CLHF", RXY_a_2, 641, UNI_SINCE_Z11 }, + { "CLHHR", RRE_2, 641, UNI_SINCE_Z11 }, + { "CLHHSI", SIL_2_u, 636, UNI_SINCE_Z10 }, + { "CLHLR", RRE_2, 641, UNI_SINCE_Z11 }, + { "CLHRL", RIL_b_2, 637, UNI_SINCE_Z10 }, + { "CLI", SI_2_u, 636, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CLIB", RIS_4, 638, UNI_SINCE_Z10 }, + { "CLIH", RIL_a_2, 642, UNI_SINCE_Z11 }, + { "CLIJ", RIE_c_4, 638, UNI_SINCE_Z10 }, + { "CLIY", SIY_2_su, 636, UNI_SINCE_YOP }, + { "CLM", RS_b_3, 641, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CLMH", RSY_b_3_us, 641, UNI_SINCE_ZOP }, + { "CLMY", RSY_b_3_us, 641, UNI_SINCE_YOP }, + { "CLR", RR_2, 636, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CLRB", RRS_4, 638, UNI_SINCE_Z10 }, + { "CLRCH", S_1_u, 367, UNI_370 }, + { "CLRIO", S_1_u, 368, UNI_370_DOS }, + { "CLRJ", RIE_b_4, 638, UNI_SINCE_Z10 }, + { "CLRL", RIL_b_2, 637, UNI_SINCE_Z10 }, + { "CLRT", RRF_c_3, 639, UNI_SINCE_Z10 }, + { "CLST", RRE_2, 650, UNI_ESA_SINCE_ZOP }, + { "CLT", RSY_b_3_ux, 639, UNI_SINCE_Z12 }, + { "CLY", RXY_a_2, 636, UNI_SINCE_YOP }, + { "CMPSC", RRE_2, 654, UNI_ESA_SINCE_ZOP }, + { "CONCS", S_1_u, 263, UNI_370 }, + { "CP", SS_b_2, 921, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CPDT", RSL_b_3, 1505, UNI_SINCE_Z13 }, + { "CPSDR", RRF_b_3, 958, UNI_SINCE_Z9 }, + { "CPXT", RSL_b_3, 1505, UNI_SINCE_Z13 }, + { "CPYA", RRE_2, 736, UNI_ESA_SINCE_ZOP }, + { "CR", RR_2, 618, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CRB", RRS_4, 619, UNI_SINCE_Z10 }, + { "CRDTE", RRF_b_4_opt, 999, UNI_SINCE_Z12 }, + { "CRJ", RIE_b_4, 619, UNI_SINCE_Z10 }, + { "CRL", RIL_b_2, 619, UNI_SINCE_Z10 }, + { "CRT", RRF_c_3, 633, UNI_SINCE_Z10 }, + { "CS", RS_a_3, 628, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CSCH", S_0, 1217, UNI_ESA_XA_SINCE_ZOP }, + { "CSDTR", RRF_d_3, 1507, UNI_SINCE_Z9 }, + { "CSG", RSY_a_3, 628, UNI_SINCE_ZOP }, + { "CSP", RRE_2, 1003, UNI_SINCE_ZOP }, + { "CSPG", RRE_2, 1003, UNI_SINCE_YOP }, + { "CSST", SSF_3_dr, 630, UNI_SINCE_Z9 }, + { "CSXTR", RRF_d_3, 1507, UNI_SINCE_Z9 }, + { "CSY", RSY_a_3, 628, UNI_SINCE_YOP }, + { "CU12", RRF_c_3_opt, 728, UNI_SINCE_YOP }, + { "CU14", RRF_c_3_opt, 732, UNI_SINCE_YOP }, + { "CU21", RRF_c_3_opt, 718, UNI_SINCE_YOP }, + { "CU24", RRF_c_3_opt, 715, UNI_SINCE_YOP }, + { "CU41", RRE_2, 725, UNI_SINCE_YOP }, + { "CU42", RRE_2, 722, UNI_SINCE_YOP }, + { "CUDTR", RRE_2, 1507, UNI_SINCE_Z9 }, + { "CUSE", RRE_2, 651, UNI_ESA_SINCE_ZOP }, + { "CUTFU", RRF_c_3_opt, 728, UNI_ESA_SINCE_ZOP }, + { "CUUTF", RRF_c_3_opt, 718, UNI_ESA_SINCE_ZOP }, + { "CUXTR", RRE_2, 1507, UNI_SINCE_Z9 }, + { "CVB", RX_a_2_ux, 714, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CVBG", RXY_a_2, 714, UNI_SINCE_ZOP }, + { "CVBY", RXY_a_2, 714, UNI_SINCE_YOP }, + { "CVD", RX_a_2_ux, 715, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CVDG", RXY_a_2, 715, UNI_SINCE_ZOP }, + { "CVDY", RXY_a_2, 715, UNI_SINCE_YOP }, + { "CXBR", RRE_2, 1447, UNI_ESA_SINCE_ZOP }, + { "CXFBR", RRE_2, 1449, UNI_ESA_SINCE_ZOP }, + { "CXFBRA", RRF_e_4, 1449, UNI_SINCE_Z11 }, + { "CXFR", RRE_2, 1415, UNI_ESA_SINCE_ZOP }, + { "CXFTR", RRF_e_4, 1496, UNI_SINCE_Z11 }, + { "CXGBR", RRE_2, 1449, UNI_SINCE_ZOP }, + { "CXGBRA", RRF_e_4, 1449, UNI_SINCE_Z11 }, + { "CXGR", RRE_2, 1415, UNI_SINCE_ZOP }, + { "CXGTR", RRE_2, 1496, UNI_SINCE_Z9 }, + { "CXGTRA", RRF_e_4, 1496, UNI_SINCE_Z11 }, + { "CXLFBR", RRF_e_4, 1451, UNI_SINCE_Z11 }, + { "CXLFTR", RRF_e_4, 1497, UNI_SINCE_Z11 }, + { "CXLGBR", RRF_e_4, 1451, UNI_SINCE_Z11 }, + { "CXLGTR", RRF_e_4, 1497, UNI_SINCE_Z11 }, + { "CXPT", RSL_b_3, 1498, UNI_SINCE_Z13 }, + { "CXR", RRE_2, 1414, UNI_ESA_SINCE_ZOP }, + { "CXSTR", RRE_2, 1500, UNI_SINCE_Z9 }, + { "CXTR", RRE_2, 1494, UNI_SINCE_Z9 }, + { "CXUTR", RRE_2, 1500, UNI_SINCE_Z9 }, + { "CXZT", RSL_b_3, 1501, UNI_SINCE_Z12 }, + { "CY", RXY_a_2, 618, UNI_SINCE_YOP }, + { "CZDT", RSL_b_3, 1508, UNI_SINCE_Z12 }, + { "CZXT", RSL_b_3, 1508, UNI_SINCE_Z12 }, + { "D", RX_a_2_ux, 736, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "DD", RX_a_2_ux, 1416, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "DDB", RXE_2, 1457, UNI_ESA_SINCE_ZOP }, + { "DDBR", RRE_2, 1457, UNI_ESA_SINCE_ZOP }, + { "DDR", RR_2, 1416, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "DDTR", RRF_a_3, 1509, UNI_SINCE_Z9 }, + { "DDTRA", RRF_a_4, 1509, UNI_SINCE_Z11 }, + { "DE", RX_a_2_ux, 1416, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "DEB", RXE_2, 1457, UNI_ESA_SINCE_ZOP }, + { "DEBR", RRE_2, 1457, UNI_ESA_SINCE_ZOP }, + { "DER", RR_2, 1416, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "DFLTCC", RRF_a_3, 1714, UNI_SINCE_Z15 }, + { "DIDBR", RRF_b_4, 1458, UNI_ESA_SINCE_ZOP }, + { "DIEBR", RRF_b_4, 1458, UNI_ESA_SINCE_ZOP }, + { "DISCS", S_1_u, 265, UNI_370 }, + { "DL", RXY_a_2, 737, UNI_ESA_SINCE_ZOP }, + { "DLG", RXY_a_2, 737, UNI_SINCE_ZOP }, + { "DLGR", RRE_2, 737, UNI_SINCE_ZOP }, + { "DLR", RRE_2, 737, UNI_ESA_SINCE_ZOP }, + { "DP", SS_b_2, 921, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "DR", RR_2, 736, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "DSG", RXY_a_2, 738, UNI_SINCE_ZOP }, + { "DSGF", RXY_a_2, 738, UNI_SINCE_ZOP }, + { "DSGFR", RRE_2, 738, UNI_SINCE_ZOP }, + { "DSGR", RRE_2, 738, UNI_SINCE_ZOP }, + { "DXBR", RRE_2, 1457, UNI_ESA_SINCE_ZOP }, + { "DXR", RRE_2, 1416, UNI_ESA_XA_SINCE_ZOP }, + { "DXTR", RRF_a_3, 1509, UNI_SINCE_Z9 }, + { "DXTRA", RRF_a_4, 1509, UNI_SINCE_Z11 }, + { "EAR", RRE_2, 741, UNI_ESA_SINCE_ZOP }, + { "ECAG", RSY_a_3, 741, UNI_SINCE_Z10 }, + { "ECCTR", RRE_2, 39, UNI_SINCE_Z10 }, + { "ECPGA", RRE_2, 39, UNI_SINCE_Z10 }, + { "ECTG", SSF_3_dr, 744, UNI_SINCE_Z9 }, + { "ED", SS_a_2_u, 922, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "EDMK", SS_a_2_u, 925, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "EEDTR", RRE_2, 1511, UNI_SINCE_Z9 }, + { "EEXTR", RRE_2, 1511, UNI_SINCE_Z9 }, + { "EFPC", RRE_1, 958, UNI_ESA_SINCE_ZOP }, + { "EPAIR", RRE_1, 1006, UNI_SINCE_YOP }, + { "EPAR", RRE_1, 1006, UNI_ESA_XA_370_SINCE_ZOP }, + { "EPCTR", RRE_2, 39, UNI_SINCE_Z10 }, + { "EPSW", RRE_2, 745, UNI_ESA_SINCE_ZOP }, + { "EREG", RRE_2, 1007, UNI_ESA_SINCE_ZOP }, + { "EREGG", RRE_2, 1007, UNI_SINCE_ZOP }, + { "ESAIR", RRE_1, 1007, UNI_SINCE_YOP }, + { "ESAR", RRE_1, 1006, UNI_ESA_XA_370_SINCE_ZOP }, + { "ESDTR", RRE_2, 1511, UNI_SINCE_Z9 }, + { "ESEA", RRE_1, 1006, UNI_SINCE_ZOP }, + { "ESTA", RRE_2, 1008, UNI_ESA_SINCE_ZOP }, + { "ESXTR", RRE_2, 1511, UNI_SINCE_Z9 }, + { "ETND", RRE_1, 745, UNI_SINCE_Z12 }, + { "EX", RX_a_2_ux, 740, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "EXRL", RIL_b_2, 740, UNI_SINCE_Z10 }, + { "FIDBR", RRF_e_3, 1462, UNI_ESA_SINCE_ZOP }, + { "FIDBRA", RRF_e_4, 1462, UNI_SINCE_Z11 }, + { "FIDR", RRE_2, 1419, UNI_ESA_SINCE_ZOP }, + { "FIDTR", RRF_e_4, 1514, UNI_SINCE_Z9 }, + { "FIEBR", RRF_e_3, 1462, UNI_ESA_SINCE_ZOP }, + { "FIEBRA", RRF_e_4, 1462, UNI_SINCE_Z11 }, + { "FIER", RRE_2, 1419, UNI_ESA_SINCE_ZOP }, + { "FIXBR", RRF_e_3, 1462, UNI_ESA_SINCE_ZOP }, + { "FIXBRA", RRF_e_4, 1462, UNI_SINCE_Z11 }, + { "FIXR", RRE_2, 1419, UNI_ESA_SINCE_ZOP }, + { "FIXTR", RRF_e_4, 1514, UNI_SINCE_Z9 }, + { "FLOGR", RRE_2, 746, UNI_SINCE_Z9 }, + { "HDR", RR_2, 1417, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "HDV", S_1_u, 129, UNI_370_DOS }, + { "HER", RR_2, 1417, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "HIO", S_1_u, 129, UNI_370_DOS }, + { "HSCH", S_0, 1218, UNI_ESA_XA_SINCE_ZOP }, + { "IAC", RRE_1, 1011, UNI_ESA_XA_370_SINCE_ZOP }, + { "IC", RX_a_2_ux, 746, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "ICM", RS_b_3, 746, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "ICMH", RSY_b_3_us, 746, UNI_SINCE_ZOP }, + { "ICMY", RSY_b_3_us, 746, UNI_SINCE_YOP }, + { "ICY", RXY_a_2, 746, UNI_SINCE_YOP }, + { "IDTE", RRF_b_4_opt, 1014, UNI_SINCE_YOP }, + { "IEDTR", RRF_b_3, 1512, UNI_SINCE_Z9 }, + { "IEXTR", RRF_b_3, 1512, UNI_SINCE_Z9 }, + { "IIHF", RIL_a_2, 747, UNI_SINCE_Z9 }, + { "IIHH", RI_a_2_u, 747, UNI_SINCE_ZOP }, + { "IIHL", RI_a_2_u, 747, UNI_SINCE_ZOP }, + { "IILF", RIL_a_2, 747, UNI_SINCE_Z9 }, + { "IILH", RI_a_2_u, 747, UNI_SINCE_ZOP }, + { "IILL", RI_a_2_u, 747, UNI_SINCE_ZOP }, + { "IPK", S_0, 1012, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "IPM", RRE_1, 748, UNI_ESA_XA_SINCE_ZOP }, + { "IPTE", RRF_a_4_opt, 1019, UNI_ESA_XA_370_SINCE_ZOP }, + { "IRBM", RRE_2, 1012, UNI_SINCE_Z14 }, + { "ISK", RR_2, 268, UNI_370_DOS }, + { "ISKE", RRE_2, 1012, UNI_ESA_XA_370_SINCE_ZOP }, + { "IVSK", RRE_2, 1013, UNI_ESA_XA_370_SINCE_ZOP }, + { "KDB", RXE_2, 1448, UNI_ESA_SINCE_ZOP }, + { "KDBR", RRE_2, 1448, UNI_ESA_SINCE_ZOP }, + { "KDSA", RRE_2, 1700, UNI_SINCE_Z15 }, + { "KDTR", RRE_2, 1495, UNI_SINCE_Z9 }, + { "KEB", RXE_2, 1448, UNI_ESA_SINCE_ZOP }, + { "KEBR", RRE_2, 1448, UNI_ESA_SINCE_ZOP }, + { "KIMD", RRE_2, 672, UNI_SINCE_YOP }, + { "KLMD", RRE_2, 685, UNI_SINCE_YOP }, + { "KM", RRE_2, 537, UNI_SINCE_YOP }, + { "KMA", RRF_b_3, 562, UNI_SINCE_Z14 }, + { "KMAC", RRE_2, 703, UNI_SINCE_YOP }, + { "KMC", RRE_2, 537, UNI_SINCE_YOP }, + { "KMCTR", RRF_b_3, 591, UNI_SINCE_Z11 }, + { "KMF", RRE_2, 576, UNI_SINCE_Z11 }, + { "KMO", RRE_2, 604, UNI_SINCE_Z11 }, + { "KXBR", RRE_2, 1448, UNI_ESA_SINCE_ZOP }, + { "KXTR", RRE_2, 1495, UNI_SINCE_Z9 }, + { "L", RX_a_2_ux, 748, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LA", RX_a_2_ux, 750, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LAA", RSY_a_3, 752, UNI_SINCE_Z11 }, + { "LAAG", RSY_a_3, 752, UNI_SINCE_Z11 }, + { "LAAL", RSY_a_3, 752, UNI_SINCE_Z11 }, + { "LAALG", RSY_a_3, 752, UNI_SINCE_Z11 }, + { "LAE", RX_a_2_ux, 750, UNI_ESA_SINCE_ZOP }, + { "LAEY", RXY_a_2, 750, UNI_SINCE_Z10 }, + { "LAM", RS_a_3, 749, UNI_ESA_SINCE_ZOP }, + { "LAMY", RSY_a_3, 749, UNI_SINCE_YOP }, + { "LAN", RSY_a_3, 753, UNI_SINCE_Z11 }, + { "LANG", RSY_a_3, 753, UNI_SINCE_Z11 }, + { "LAO", RSY_a_3, 754, UNI_SINCE_Z11 }, + { "LAOG", RSY_a_3, 754, UNI_SINCE_Z11 }, + { "LARL", RIL_b_2, 751, UNI_ESA_SINCE_ZOP }, + { "LASP", SSE_2, 1023, UNI_ESA_XA_370_SINCE_ZOP }, + { "LAT", RXY_a_2, 755, UNI_SINCE_Z12 }, + { "LAX", RSY_a_3, 753, UNI_SINCE_Z11 }, + { "LAXG", RSY_a_3, 753, UNI_SINCE_Z11 }, + { "LAY", RXY_a_2, 750, UNI_SINCE_YOP }, + { "LB", RXY_a_2, 756, UNI_SINCE_YOP }, + { "LBH", RXY_a_2, 756, UNI_SINCE_Z11 }, + { "LBR", RRE_2, 756, UNI_SINCE_Z9 }, + { "LCBB", RXE_3_xm, 757, UNI_SINCE_Z13 }, + { "LCCTL", S_1_u, 40, UNI_SINCE_Z10 }, + { "LCDBR", RRE_2, 1461, UNI_ESA_SINCE_ZOP }, + { "LCDFR", RRE_2, 959, UNI_SINCE_Z9 }, + { "LCDR", RR_2, 1418, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LCEBR", RRE_2, 1461, UNI_ESA_SINCE_ZOP }, + { "LCER", RR_2, 1418, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LCGFR", RRE_2, 757, UNI_SINCE_ZOP }, + { "LCGR", RRE_2, 757, UNI_SINCE_ZOP }, + { "LCR", RR_2, 756, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LCTL", RS_a_3, 1032, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LCTLG", RSY_a_3, 1032, UNI_SINCE_ZOP }, + { "LCXBR", RRE_2, 1461, UNI_ESA_SINCE_ZOP }, + { "LCXR", RRE_2, 1418, UNI_ESA_SINCE_ZOP }, + { "LD", RX_a_2_ux, 959, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LDE", RXE_2, 1419, UNI_ESA_SINCE_ZOP }, + { "LDEB", RRE_2, 1464, UNI_ESA_SINCE_ZOP }, + { "LDEBR", RRE_2, 1463, UNI_ESA_SINCE_ZOP }, + { "LDER", RRE_2, 1419, UNI_ESA_SINCE_ZOP }, + { "LDETR", RRF_d_3, 1517, UNI_SINCE_Z9 }, + { "LDGR", RRE_2, 962, UNI_SINCE_Z9 }, + { "LDR", RR_2, 959, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LDXBR", RRE_2, 1465, UNI_ESA_SINCE_ZOP }, + { "LDXBRA", RRF_e_4, 1465, UNI_SINCE_Z11 }, + { "LDXR", RR_2, 1421, UNI_ESA_SINCE_ZOP }, + { "LDXTR", RRF_e_4, 1518, UNI_SINCE_Z9 }, + { "LDY", RXY_a_2, 959, UNI_SINCE_YOP }, + { "LE", RX_a_2_ux, 959, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LEDBR", RRE_2, 1465, UNI_ESA_SINCE_ZOP }, + { "LEDBRA", RRF_e_4, 1465, UNI_SINCE_Z11 }, + { "LEDR", RR_2, 1421, UNI_ESA_SINCE_ZOP }, + { "LEDTR", RRF_e_4, 1518, UNI_SINCE_Z9 }, + { "LER", RR_2, 959, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LEXBR", RRE_2, 1465, UNI_ESA_SINCE_ZOP }, + { "LEXBRA", RRF_e_4, 1465, UNI_SINCE_Z11 }, + { "LEXR", RRE_2, 1421, UNI_ESA_SINCE_ZOP }, + { "LEY", RXY_a_2, 959, UNI_SINCE_YOP }, + { "LFAS", S_1_u, 960, UNI_SINCE_Z9 }, + { "LFH", RXY_a_2, 762, UNI_SINCE_Z11 }, + { "LFHAT", RXY_a_2, 762, UNI_SINCE_Z12 }, + { "LFPC", S_1_u, 959, UNI_ESA_SINCE_ZOP }, + { "LG", RXY_a_2, 748, UNI_SINCE_ZOP }, + { "LGAT", RXY_a_2, 755, UNI_SINCE_Z12 }, + { "LGB", RXY_a_2, 756, UNI_SINCE_YOP }, + { "LGBR", RRE_2, 756, UNI_SINCE_Z9 }, + { "LGDR", RRE_2, 962, UNI_SINCE_Z9 }, + { "LGF", RXY_a_2, 748, UNI_SINCE_ZOP }, + { "LGFI", RIL_a_2, 748, UNI_SINCE_Z9 }, + { "LGFR", RRE_2, 748, UNI_SINCE_ZOP }, + { "LGFRL", RIL_b_2, 748, UNI_SINCE_Z10 }, + { "LGG", RXY_a_2, 758, UNI_SINCE_Z14 }, + { "LGH", RXY_a_2, 760, UNI_SINCE_ZOP }, + { "LGHI", RI_a_2_s, 760, UNI_SINCE_ZOP }, + { "LGHR", RRE_2, 760, UNI_SINCE_Z9 }, + { "LGHRL", RIL_b_2, 760, UNI_SINCE_Z10 }, + { "LGR", RRE_2, 748, UNI_SINCE_ZOP }, + { "LGRL", RIL_b_2, 748, UNI_SINCE_Z10 }, + { "LGSC", RXY_a_2, 759, UNI_SINCE_Z14 }, + { "LH", RX_a_2_ux, 760, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LHH", RXY_a_2, 761, UNI_SINCE_Z11 }, + { "LHI", RI_a_2_s, 760, UNI_ESA_SINCE_ZOP }, + { "LHR", RRE_2, 760, UNI_SINCE_Z9 }, + { "LHRL", RIL_b_2, 760, UNI_SINCE_Z10 }, + { "LHY", RXY_a_2, 760, UNI_SINCE_YOP }, + { "LLC", RXY_a_2, 763, UNI_SINCE_Z9 }, + { "LLCH", RXY_a_2, 764, UNI_SINCE_Z11 }, + { "LLCR", RRE_2, 763, UNI_SINCE_Z9 }, + { "LLGC", RXY_a_2, 763, UNI_SINCE_ZOP }, + { "LLGCR", RRE_2, 763, UNI_SINCE_Z9 }, + { "LLGF", RXY_a_2, 762, UNI_SINCE_ZOP }, + { "LLGFAT", RXY_a_2, 763, UNI_SINCE_Z12 }, + { "LLGFR", RRE_2, 762, UNI_SINCE_ZOP }, + { "LLGFRL", RIL_b_2, 762, UNI_SINCE_Z10 }, + { "LLGFSG", RXY_a_2, 758, UNI_SINCE_Z14 }, + { "LLGH", RXY_a_2, 764, UNI_SINCE_ZOP }, + { "LLGHR", RRE_2, 764, UNI_SINCE_Z9 }, + { "LLGHRL", RIL_b_2, 764, UNI_SINCE_Z10 }, + { "LLGT", RXY_a_2, 766, UNI_SINCE_ZOP }, + { "LLGTAT", RXY_a_2, 766, UNI_SINCE_Z12 }, + { "LLGTR", RRE_2, 765, UNI_SINCE_ZOP }, + { "LLH", RXY_a_2, 764, UNI_SINCE_Z9 }, + { "LLHH", RXY_a_2, 765, UNI_SINCE_Z11 }, + { "LLHR", RRE_2, 764, UNI_SINCE_Z9 }, + { "LLHRL", RIL_b_2, 764, UNI_SINCE_Z10 }, + { "LLIHF", RIL_a_2, 765, UNI_SINCE_Z9 }, + { "LLIHH", RI_a_2_u, 765, UNI_SINCE_ZOP }, + { "LLIHL", RI_a_2_u, 765, UNI_SINCE_ZOP }, + { "LLILF", RIL_a_2, 765, UNI_SINCE_Z9 }, + { "LLILH", RI_a_2_u, 765, UNI_SINCE_ZOP }, + { "LLILL", RI_a_2_u, 765, UNI_SINCE_ZOP }, + { "LLZRGF", RXY_a_2, 763, UNI_SINCE_Z13 }, + { "LM", RS_a_3, 766, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LMD", SS_e_4_rb, 767, UNI_SINCE_ZOP }, + { "LMG", RSY_a_3, 766, UNI_SINCE_ZOP }, + { "LMH", RSY_a_3, 767, UNI_SINCE_ZOP }, + { "LMY", RSY_a_3, 766, UNI_SINCE_YOP }, + { "LNDBR", RRE_2, 1464, UNI_ESA_SINCE_ZOP }, + { "LNDFR", RRE_2, 962, UNI_SINCE_Z9 }, + { "LNDR", RR_2, 1420, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LNEBR", RRE_2, 1464, UNI_ESA_SINCE_ZOP }, + { "LNER", RR_2, 1420, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LNGFR", RRE_2, 768, UNI_SINCE_ZOP }, + { "LNGR", RRE_2, 767, UNI_SINCE_ZOP }, + { "LNR", RR_2, 767, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LNXBR", RRE_2, 1464, UNI_ESA_SINCE_ZOP }, + { "LNXR", RRE_2, 1420, UNI_ESA_SINCE_ZOP }, + { "LOC", RSY_b_3_su, 768, UNI_SINCE_Z11 }, + { "LOCFH", RSY_b_3_su, 768, UNI_SINCE_Z13 }, + { "LOCFHR", RRF_c_3, 768, UNI_SINCE_Z13 }, + { "LOCG", RSY_b_3_su, 768, UNI_SINCE_Z11 }, + { "LOCGHI", RIE_g_3, 761, UNI_SINCE_Z13 }, + { "LOCGR", RRF_c_3, 768, UNI_SINCE_Z11 }, + { "LOCHHI", RIE_g_3, 761, UNI_SINCE_Z13 }, + { "LOCHI", RIE_g_3, 761, UNI_SINCE_Z13 }, + { "LOCR", RRF_c_3, 768, UNI_SINCE_Z11 }, + { "LPCTL", S_1_u, 41, UNI_SINCE_Z10 }, + { "LPD", SSF_3_rd, 769, UNI_SINCE_Z11 }, + { "LPDBR", RRE_2, 1465, UNI_ESA_SINCE_ZOP }, + { "LPDFR", RRE_2, 962, UNI_SINCE_Z9 }, + { "LPDG", SSF_3_rd, 769, UNI_SINCE_Z11 }, + { "LPDR", RR_2, 1420, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LPEBR", RRE_2, 1465, UNI_ESA_SINCE_ZOP }, + { "LPER", RR_2, 1420, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LPGFR", RRE_2, 771, UNI_SINCE_ZOP }, + { "LPGR", RRE_2, 771, UNI_SINCE_ZOP }, + { "LPP", S_1_u, 11, UNI_SINCE_Z10 }, + { "LPQ", RXY_a_2, 770, UNI_SINCE_ZOP }, + { "LPR", RR_2, 771, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LPSW", SI_1, 1036, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LPSWE", S_1_u, 1037, UNI_SINCE_ZOP }, + { "LPTEA", RRF_b_4, 1032, UNI_SINCE_Z9 }, + { "LPXBR", RRE_2, 1465, UNI_ESA_SINCE_ZOP }, + { "LPXR", RRE_2, 1420, UNI_ESA_SINCE_ZOP }, + { "LR", RR_2, 748, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LRA", RX_a_2_ux, 1038, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LRAG", RXY_a_2, 1038, UNI_SINCE_ZOP }, + { "LRAY", RXY_a_2, 1038, UNI_SINCE_YOP }, + { "LRDR", RR_2, 1421, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LRER", RR_2, 1421, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LRL", RIL_b_2, 748, UNI_SINCE_Z10 }, + { "LRV", RXY_a_2, 771, UNI_ESA_SINCE_ZOP }, + { "LRVG", RXY_a_2, 771, UNI_SINCE_ZOP }, + { "LRVGR", RRE_2, 771, UNI_SINCE_ZOP }, + { "LRVH", RXY_a_2, 771, UNI_ESA_SINCE_ZOP }, + { "LRVR", RRE_2, 771, UNI_ESA_SINCE_ZOP }, + { "LSCTL", S_1_u, 42, UNI_SINCE_Z10 }, + { "LT", RXY_a_2, 755, UNI_SINCE_Z9 }, + { "LTDBR", RRE_2, 1461, UNI_ESA_SINCE_ZOP }, + { "LTDR", RR_2, 1417, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LTDTR", RRE_2, 1513, UNI_SINCE_Z9 }, + { "LTEBR", RRE_2, 1461, UNI_ESA_SINCE_ZOP }, + { "LTER", RR_2, 1417, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LTG", RXY_a_2, 755, UNI_SINCE_Z9 }, + { "LTGF", RXY_a_2, 755, UNI_SINCE_Z10 }, + { "LTGFR", RRE_2, 754, UNI_SINCE_ZOP }, + { "LTGR", RRE_2, 754, UNI_SINCE_ZOP }, + { "LTR", RR_2, 754, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "LTXBR", RRE_2, 1461, UNI_ESA_SINCE_ZOP }, + { "LTXR", RRE_2, 1418, UNI_ESA_SINCE_ZOP }, + { "LTXTR", RRE_2, 1513, UNI_SINCE_Z9 }, + { "LURA", RRE_2, 1042, UNI_ESA_SINCE_ZOP }, + { "LURAG", RRE_2, 1042, UNI_SINCE_ZOP }, + { "LXD", RXE_2, 1419, UNI_ESA_SINCE_ZOP }, + { "LXDB", RRE_2, 1464, UNI_ESA_SINCE_ZOP }, + { "LXDBR", RRE_2, 1463, UNI_ESA_SINCE_ZOP }, + { "LXDR", RRE_2, 1419, UNI_ESA_SINCE_ZOP }, + { "LXDTR", RRF_d_3, 1517, UNI_SINCE_Z9 }, + { "LXE", RXE_2, 1419, UNI_ESA_SINCE_ZOP }, + { "LXEB", RRE_2, 1464, UNI_ESA_SINCE_ZOP }, + { "LXEBR", RRE_2, 1463, UNI_ESA_SINCE_ZOP }, + { "LXER", RRE_2, 1419, UNI_ESA_SINCE_ZOP }, + { "LXR", RRE_2, 959, UNI_ESA_SINCE_ZOP }, + { "LY", RXY_a_2, 748, UNI_SINCE_YOP }, + { "LZDR", RRE_1, 963, UNI_ESA_SINCE_ZOP }, + { "LZER", RRE_1, 963, UNI_ESA_SINCE_ZOP }, + { "LZRF", RXY_a_2, 755, UNI_SINCE_Z13 }, + { "LZRG", RXY_a_2, 755, UNI_SINCE_Z13 }, + { "LZXR", RRE_1, 963, UNI_ESA_SINCE_ZOP }, + { "M", RX_a_2_ux, 788, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MAD", RXF_3_x, 1423, UNI_SINCE_YOP }, + { "MADB", RXF_3_x, 1468, UNI_ESA_SINCE_ZOP }, + { "MADBR", RRD_3, 1468, UNI_ESA_SINCE_ZOP }, + { "MADR", RRD_3, 1423, UNI_SINCE_YOP }, + { "MAE", RXF_3_x, 1423, UNI_SINCE_YOP }, + { "MAEB", RXF_3_x, 1468, UNI_ESA_SINCE_ZOP }, + { "MAEBR", RRD_3, 1468, UNI_ESA_SINCE_ZOP }, + { "MAER", RRD_3, 1423, UNI_SINCE_YOP }, + { "MAY", RXF_3_x, 1424, UNI_SINCE_Z9 }, + { "MAYH", RXF_3_x, 1424, UNI_SINCE_Z9 }, + { "MAYHR", RRD_3, 1424, UNI_SINCE_Z9 }, + { "MAYL", RXF_3_x, 1424, UNI_SINCE_Z9 }, + { "MAYLR", RRD_3, 1424, UNI_SINCE_Z9 }, + { "MAYR", RRD_3, 1424, UNI_SINCE_Z9 }, + { "MC", SI_2_s, 772, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MD", RX_a_2_ux, 1422, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MDB", RXE_2, 1467, UNI_ESA_SINCE_ZOP }, + { "MDBR", RRE_2, 1467, UNI_ESA_SINCE_ZOP }, + { "MDE", RX_a_2_ux, 1422, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MDEB", RXE_2, 1467, UNI_ESA_SINCE_ZOP }, + { "MDEBR", RRE_2, 1467, UNI_ESA_SINCE_ZOP }, + { "MDER", RR_2, 1421, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MDR", RR_2, 1421, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MDTR", RRF_a_3, 1519, UNI_SINCE_Z9 }, + { "MDTRA", RRF_a_4, 1520, UNI_SINCE_Z11 }, + { "ME", RX_a_2_ux, 1422, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MEE", RXE_2, 1422, UNI_ESA_SINCE_ZOP }, + { "MEEB", RXE_2, 1467, UNI_ESA_SINCE_ZOP }, + { "MEEBR", RRE_2, 1467, UNI_ESA_SINCE_ZOP }, + { "MEER", RRE_2, 1421, UNI_ESA_SINCE_ZOP }, + { "MER", RR_2, 1421, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MFY", RXY_a_2, 788, UNI_SINCE_Z10 }, + { "MG", RXY_a_2, 788, UNI_SINCE_Z14 }, + { "MGH", RXY_a_2, 789, UNI_SINCE_Z14 }, + { "MGHI", RI_a_2_s, 789, UNI_SINCE_ZOP }, + { "MGRK", RRF_a_3, 788, UNI_SINCE_Z14 }, + { "MH", RX_a_2_ux, 789, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MHI", RI_a_2_s, 789, UNI_ESA_SINCE_ZOP }, + { "MHY", RXY_a_2, 789, UNI_SINCE_Z10 }, + { "ML", RXY_a_2, 790, UNI_ESA_SINCE_ZOP }, + { "MLG", RXY_a_2, 790, UNI_SINCE_ZOP }, + { "MLGR", RRE_2, 790, UNI_SINCE_ZOP }, + { "MLR", RRE_2, 790, UNI_ESA_SINCE_ZOP }, + { "MP", SS_b_2, 926, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MR", RR_2, 788, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MS", RX_a_2_ux, 791, UNI_ESA_SINCE_ZOP }, + { "MSC", RXY_a_2, 791, UNI_SINCE_Z14 }, + { "MSCH", S_1_u, 1219, UNI_ESA_XA_SINCE_ZOP }, + { "MSD", RXF_3_x, 1423, UNI_SINCE_YOP }, + { "MSDB", RXF_3_x, 1468, UNI_ESA_SINCE_ZOP }, + { "MSDBR", RRD_3, 1468, UNI_ESA_SINCE_ZOP }, + { "MSDR", RRD_3, 1423, UNI_SINCE_YOP }, + { "MSE", RXF_3_x, 1423, UNI_SINCE_YOP }, + { "MSEB", RXF_3_x, 1468, UNI_ESA_SINCE_ZOP }, + { "MSEBR", RRD_3, 1468, UNI_ESA_SINCE_ZOP }, + { "MSER", RRD_3, 1423, UNI_SINCE_YOP }, + { "MSFI", RIL_a_2, 791, UNI_SINCE_Z10 }, + { "MSG", RXY_a_2, 791, UNI_SINCE_ZOP }, + { "MSGC", RXY_a_2, 791, UNI_SINCE_Z14 }, + { "MSGF", RXY_a_2, 791, UNI_SINCE_ZOP }, + { "MSGFI", RIL_a_2, 791, UNI_SINCE_Z10 }, + { "MSGFR", RRE_2, 791, UNI_SINCE_ZOP }, + { "MSGR", RRE_2, 791, UNI_SINCE_ZOP }, + { "MSGRKC", RRF_a_3, 791, UNI_SINCE_Z14 }, + { "MSR", RRE_2, 791, UNI_ESA_SINCE_ZOP }, + { "MSRKC", RRF_a_3, 791, UNI_SINCE_Z14 }, + { "MSTA", RRE_1, 1043, UNI_ESA_SINCE_ZOP }, + { "MSY", RXY_a_2, 791, UNI_SINCE_YOP }, + { "MVC", SS_a_2_u, 773, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MVCDK", SSE_2, 1048, UNI_ESA_SINCE_ZOP }, + { "MVCIN", SS_a_2_u, 774, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MVCK", SS_d_3, 1049, UNI_ESA_XA_370_SINCE_ZOP }, + { "MVCL", RR_2, 774, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MVCLE", RS_a_3, 778, UNI_ESA_SINCE_ZOP }, + { "MVCLU", RSY_a_3, 781, UNI_SINCE_ZOP }, + { "MVCOS", SSF_3_dr, 1050, UNI_SINCE_Z9 }, + { "MVCP", SS_d_3, 1046, UNI_ESA_XA_370_SINCE_ZOP }, + { "MVCRL", SSE_2, 788, UNI_SINCE_Z15 }, + { "MVCS", SS_d_3, 1046, UNI_ESA_XA_370_SINCE_ZOP }, + { "MVCSK", SSE_2, 1053, UNI_ESA_SINCE_ZOP }, + { "MVGHI", SIL_2_s, 773, UNI_SINCE_Z10 }, + { "MVHHI", SIL_2_s, 773, UNI_SINCE_Z10 }, + { "MVHI", SIL_2_s, 773, UNI_SINCE_Z10 }, + { "MVI", SI_2_u, 773, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MVIY", SIY_2_su, 773, UNI_SINCE_YOP }, + { "MVN", SS_a_2_u, 785, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MVO", SS_b_2, 786, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MVPG", RRE_2, 1044, UNI_ESA_SINCE_ZOP }, + { "MVST", RRE_2, 785, UNI_ESA_SINCE_ZOP }, + { "MVZ", SS_a_2_u, 787, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MXBR", RRE_2, 1467, UNI_ESA_SINCE_ZOP }, + { "MXD", RX_a_2_ux, 1422, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MXDB", RXE_2, 1467, UNI_ESA_SINCE_ZOP }, + { "MXDBR", RRE_2, 1467, UNI_ESA_SINCE_ZOP }, + { "MXDR", RR_2, 1421, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MXR", RR_2, 1421, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "MXTR", RRF_a_3, 1519, UNI_SINCE_Z9 }, + { "MXTRA", RRF_a_4, 1520, UNI_SINCE_Z11 }, + { "MY", RXF_3_x, 1426, UNI_SINCE_Z9 }, + { "MYH", RXF_3_x, 1426, UNI_SINCE_Z9 }, + { "MYHR", RRD_3, 1426, UNI_SINCE_Z9 }, + { "MYL", RXF_3_x, 1426, UNI_SINCE_Z9 }, + { "MYLR", RRD_3, 1426, UNI_SINCE_Z9 }, + { "MYR", RRD_3, 1426, UNI_SINCE_Z9 }, + { "N", RX_a_2_ux, 517, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "NC", SS_a_2_u, 518, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "NCGRK", RRF_a_3, 522, UNI_SINCE_Z15 }, + { "NCRK", RRF_a_3, 522, UNI_SINCE_Z15 }, + { "NG", RXY_a_2, 517, UNI_SINCE_ZOP }, + { "NGR", RRE_2, 517, UNI_SINCE_ZOP }, + { "NGRK", RRF_a_3, 517, UNI_SINCE_Z11 }, + { "NI", SI_2_u, 517, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "NIAI", IE_2, 792, UNI_SINCE_Z12 }, + { "NIHF", RIL_a_2, 518, UNI_SINCE_Z9 }, + { "NIHH", RI_a_2_u, 518, UNI_SINCE_ZOP }, + { "NIHL", RI_a_2_u, 518, UNI_SINCE_ZOP }, + { "NILF", RIL_a_2, 519, UNI_SINCE_Z9 }, + { "NILH", RI_a_2_u, 519, UNI_SINCE_ZOP }, + { "NILL", RI_a_2_u, 519, UNI_SINCE_ZOP }, + { "NIY", SIY_2_su, 518, UNI_SINCE_YOP }, + { "NNGRK", RRF_a_3, 796, UNI_SINCE_Z15 }, + { "NNRK", RRF_a_3, 796, UNI_SINCE_Z15 }, + { "NOGRK", RRF_a_3, 799, UNI_SINCE_Z15 }, + { "NORK", RRF_a_3, 799, UNI_SINCE_Z15 }, + { "NR", RR_2, 517, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "NRK", RRF_a_3, 517, UNI_SINCE_Z11 }, + { "NTSTG", RXY_a_2, 794, UNI_SINCE_Z12 }, + { "NXGRK", RRF_a_3, 799, UNI_SINCE_Z15 }, + { "NXRK", RRF_a_3, 799, UNI_SINCE_Z15 }, + { "NY", RXY_a_2, 517, UNI_SINCE_YOP }, + { "O", RX_a_2_ux, 794, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "OC", SS_a_2_u, 795, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "OCGRK", RRF_a_3, 802, UNI_SINCE_Z15 }, + { "OCRK", RRF_a_3, 802, UNI_SINCE_Z15 }, + { "OG", RXY_a_2, 795, UNI_SINCE_ZOP }, + { "OGR", RRE_2, 794, UNI_SINCE_ZOP }, + { "OGRK", RRF_a_3, 794, UNI_SINCE_Z11 }, + { "OI", SI_2_u, 795, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "OIHF", RIL_a_2, 796, UNI_SINCE_Z9 }, + { "OIHH", RI_a_2_u, 796, UNI_SINCE_ZOP }, + { "OIHL", RI_a_2_u, 796, UNI_SINCE_ZOP }, + { "OILF", RIL_a_2, 796, UNI_SINCE_Z9 }, + { "OILH", RI_a_2_u, 796, UNI_SINCE_ZOP }, + { "OILL", RI_a_2_u, 796, UNI_SINCE_ZOP }, + { "OIY", SIY_2_su, 795, UNI_SINCE_YOP }, + { "OR", RR_2, 794, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "ORK", RRF_a_3, 794, UNI_SINCE_Z11 }, + { "OY", RXY_a_2, 794, UNI_SINCE_YOP }, + { "PACK", SS_b_2, 796, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "PALB", RRE_0, 1098, UNI_ESA_SINCE_ZOP }, + { "PC", S_1_u, 1072, UNI_ESA_XA_370_SINCE_ZOP }, + { "PCC", RRE_0, 799, UNI_SINCE_Z11 }, + { "PCKMO", RRE_0, 1056, UNI_SINCE_Z10 }, + { "PFD", RXY_b_2, 843, UNI_SINCE_Z10 }, + { "PFDRL", RIL_c_2, 843, UNI_SINCE_Z10 }, + { "PFMF", RRE_2, 1059, UNI_SINCE_Z10 }, + { "PFPO", E_0, 963, UNI_SINCE_Z9 }, + { "PGIN", RRE_2, 1054, UNI_ESA_SINCE_ZOP }, + { "PGOUT", RRE_2, 1055, UNI_ESA_SINCE_ZOP }, + { "PKA", SS_f_2, 797, UNI_SINCE_ZOP }, + { "PKU", SS_f_2, 798, UNI_SINCE_ZOP }, + { "PLO", SS_e_4_br, 815, UNI_ESA_SINCE_ZOP }, + { "POPCNT", RRF_c_3_opt, 853, UNI_SINCE_Z11 }, + { "PPA", RRF_c_3, 829, UNI_SINCE_Z12 }, + { "PPNO", RRE_2, 830, UNI_SINCE_Z12 }, + { "PR", E_0, 1085, UNI_ESA_SINCE_ZOP }, + { "PRNO", RRE_2, 830, UNI_SINCE_Z14 }, + { "PT", RRE_2, 1089, UNI_ESA_XA_370_SINCE_ZOP }, + { "PTF", RRE_1, 1071, UNI_SINCE_Z10 }, + { "PTFF", E_0, 1063, UNI_SINCE_Z9 }, + { "PTI", RRE_2, 1089, UNI_SINCE_YOP }, + { "PTLB", S_0, 1098, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "QADTR", RRF_b_4, 1521, UNI_SINCE_Z9 }, + { "QAXTR", RRF_b_4, 1521, UNI_SINCE_Z9 }, + { "QCTRI", S_1_u, 43, UNI_SINCE_Z10 }, + { "QSI", S_1_u, 45, UNI_SINCE_Z10 }, + { "RCHP", S_0, 1221, UNI_ESA_XA_SINCE_ZOP }, + { "RISBG", RIE_f_5, 847, UNI_SINCE_Z10 }, + { "RISBGN", RIE_f_5, 847, UNI_SINCE_Z12 }, + { "RISBGNZ", RIE_f_5, 860, UNI_SINCE_Z12 }, + { "RISBGZ", RIE_f_5, 858, UNI_SINCE_Z10 }, + { "RISBHG", RIE_f_5, 848, UNI_SINCE_Z11 }, + { "RISBHGZ", RIE_f_5, 860, UNI_SINCE_Z11 }, + { "RISBLG", RIE_f_5, 849, UNI_SINCE_Z11 }, + { "RISBLGZ", RIE_f_5, 860, UNI_SINCE_Z11 }, + { "RLL", RSY_a_3, 845, UNI_ESA_SINCE_ZOP }, + { "RLLG", RSY_a_3, 845, UNI_SINCE_ZOP }, + { "RNSBG", RIE_f_5, 845, UNI_SINCE_Z10 }, + { "RNSBGT", RIE_f_5, 845, UNI_SINCE_Z10 }, + { "ROSBG", RIE_f_5, 846, UNI_SINCE_Z10 }, + { "ROSBGT", RIE_f_5, 858, UNI_SINCE_Z10 }, + { "RP", S_1_u, 1099, UNI_ESA_SINCE_ZOP }, + { "RRB", S_1_u, 295, UNI_370_DOS }, + { "RRBE", RRE_2, 1098, UNI_ESA_XA_370_SINCE_ZOP }, + { "RRBM", RRE_2, 1099, UNI_SINCE_Z11 }, + { "RRDTR", RRF_b_4, 1524, UNI_SINCE_Z9 }, + { "RRXTR", RRF_b_4, 1524, UNI_SINCE_Z9 }, + { "RSCH", S_0, 1222, UNI_ESA_XA_SINCE_ZOP }, + { "RXSBG", RIE_f_5, 846, UNI_SINCE_Z10 }, + { "RXSBGT", RIE_f_5, 846, UNI_SINCE_Z10 }, + { "S", RX_a_2_ux, 872, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SAC", S_1_u, 1102, UNI_ESA_XA_370_SINCE_ZOP }, + { "SACF", S_1_u, 1102, UNI_ESA_SINCE_ZOP }, + { "SAL", S_0, 1224, UNI_ESA_XA_SINCE_ZOP }, + { "SAM24", E_0, 854, UNI_ESA_SINCE_ZOP }, + { "SAM31", E_0, 854, UNI_ESA_SINCE_ZOP }, + { "SAM64", E_0, 854, UNI_SINCE_ZOP }, + { "SAR", RRE_2, 854, UNI_ESA_SINCE_ZOP }, + { "SCCTR", RRE_2, 46, UNI_SINCE_Z10 }, + { "SCHM", S_0, 1225, UNI_ESA_XA_SINCE_ZOP }, + { "SCK", S_1_u, 1103, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SCKC", S_1_u, 1104, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SCKPF", E_0, 1105, UNI_ESA_SINCE_ZOP }, + { "SD", RX_a_2_ux, 1428, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SDB", RXE_2, 1470, UNI_ESA_SINCE_ZOP }, + { "SDBR", RRE_2, 1470, UNI_ESA_SINCE_ZOP }, + { "SDR", RR_2, 1428, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SDTR", RRF_a_3, 1527, UNI_SINCE_Z9 }, + { "SDTRA", RRF_a_4, 1527, UNI_SINCE_Z11 }, + { "SE", RX_a_2_ux, 1428, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SEB", RXE_2, 1470, UNI_ESA_SINCE_ZOP }, + { "SEBR", RRE_2, 1470, UNI_ESA_SINCE_ZOP }, + { "SELFHR", RRF_a_4, 864, UNI_SINCE_Z15 }, + { "SELGR", RRF_a_4, 864, UNI_SINCE_Z15 }, + { "SELR", RRF_a_4, 864, UNI_SINCE_Z15 }, + { "SER", RR_2, 1428, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SFASR", RRE_1, 976, UNI_SINCE_Z9 }, + { "SFPC", RRE_1, 975, UNI_ESA_SINCE_ZOP }, + { "SG", RXY_a_2, 872, UNI_SINCE_ZOP }, + { "SGF", RXY_a_2, 872, UNI_SINCE_ZOP }, + { "SGFR", RRE_2, 871, UNI_SINCE_ZOP }, + { "SGH", RXY_a_2, 872, UNI_SINCE_Z14 }, + { "SGR", RRE_2, 871, UNI_SINCE_ZOP }, + { "SGRK", RRF_a_3, 872, UNI_SINCE_Z11 }, + { "SH", RX_a_2_ux, 872, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SHHHR", RRF_a_3, 873, UNI_SINCE_Z11 }, + { "SHHLR", RRF_a_3, 873, UNI_SINCE_Z11 }, + { "SHY", RXY_a_2, 872, UNI_SINCE_YOP }, + { "SIE", S_1_u, 7, UNI_ESA_XA_SINCE_ZOP }, + { "SIGP", RS_a_3, 1115, UNI_ESA_XA_370_SINCE_ZOP }, + { "SIO", S_1_u, 129, UNI_370_DOS }, + { "SIOF", S_1_u, 129, UNI_370_DOS }, + { "SL", RX_a_2_ux, 874, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SLA", RS_a_2, 856, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SLAG", RSY_a_3, 856, UNI_SINCE_ZOP }, + { "SLAK", RSY_a_3, 856, UNI_SINCE_Z11 }, + { "SLB", RXY_a_2, 875, UNI_ESA_SINCE_ZOP }, + { "SLBG", RXY_a_2, 875, UNI_SINCE_ZOP }, + { "SLBGR", RRE_2, 875, UNI_SINCE_ZOP }, + { "SLBR", RRE_2, 875, UNI_ESA_SINCE_ZOP }, + { "SLDA", RS_a_2, 855, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SLDL", RS_a_2, 856, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SLDT", RXF_3_x, 1526, UNI_SINCE_Z9 }, + { "SLFI", RIL_a_2, 874, UNI_SINCE_Z9 }, + { "SLG", RXY_a_2, 874, UNI_SINCE_ZOP }, + { "SLGF", RXY_a_2, 874, UNI_SINCE_ZOP }, + { "SLGFI", RIL_a_2, 874, UNI_SINCE_Z9 }, + { "SLGFR", RRE_2, 873, UNI_SINCE_ZOP }, + { "SLGR", RRE_2, 873, UNI_SINCE_ZOP }, + { "SLGRK", RRF_a_3, 873, UNI_SINCE_Z11 }, + { "SLHHHR", RRF_a_3, 875, UNI_SINCE_Z11 }, + { "SLHHLR", RRF_a_3, 875, UNI_SINCE_Z11 }, + { "SLL", RS_a_2, 857, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SLLG", RSY_a_3, 857, UNI_SINCE_ZOP }, + { "SLLK", RSY_a_3, 857, UNI_SINCE_Z11 }, + { "SLR", RR_2, 873, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SLRK", RRF_a_3, 873, UNI_SINCE_Z11 }, + { "SLXT", RXF_3_x, 1526, UNI_SINCE_Z9 }, + { "SLY", RXY_a_2, 874, UNI_SINCE_YOP }, + { "SORTL", RRE_2, 19, UNI_SINCE_Z15 }, + { "SP", SS_b_2, 927, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SPCTR", RRE_2, 47, UNI_SINCE_Z10 }, + { "SPKA", S_1_u, 1106, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SPM", RR_1, 855, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SPT", S_1_u, 1105, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SPX", S_1_u, 1105, UNI_ESA_XA_370_SINCE_ZOP }, + { "SQD", RXE_2, 1427, UNI_ESA_SINCE_ZOP }, + { "SQDB", RXE_2, 1470, UNI_ESA_SINCE_ZOP }, + { "SQDBR", RRE_2, 1470, UNI_ESA_SINCE_ZOP }, + { "SQDR", RRE_2, 1427, UNI_ESA_XA_SINCE_ZOP }, + { "SQE", RXE_2, 1427, UNI_ESA_SINCE_ZOP }, + { "SQEB", RXE_2, 1470, UNI_ESA_SINCE_ZOP }, + { "SQEBR", RRE_2, 1470, UNI_ESA_SINCE_ZOP }, + { "SQER", RRE_2, 1427, UNI_ESA_XA_SINCE_ZOP }, + { "SQXBR", RRE_2, 1470, UNI_ESA_SINCE_ZOP }, + { "SQXR", RRE_2, 1427, UNI_ESA_SINCE_ZOP }, + { "SR", RR_2, 871, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SRA", RS_a_2, 859, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SRAG", RSY_a_3, 859, UNI_SINCE_ZOP }, + { "SRAK", RSY_a_3, 859, UNI_SINCE_Z11 }, + { "SRDA", RS_a_2, 858, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SRDL", RS_a_2, 858, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SRDT", RXF_3_x, 1526, UNI_SINCE_Z9 }, + { "SRK", RRF_a_3, 871, UNI_SINCE_Z11 }, + { "SRL", RS_a_2, 860, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SRLG", RSY_a_3, 860, UNI_SINCE_ZOP }, + { "SRLK", RSY_a_3, 860, UNI_SINCE_Z11 }, + { "SRNM", S_1_u, 975, UNI_ESA_SINCE_ZOP }, + { "SRNMB", S_1_u, 975, UNI_SINCE_Z11 }, + { "SRNMT", S_1_u, 975, UNI_SINCE_Z9 }, + { "SRP", SS_c_3, 926, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SRST", RRE_2, 850, UNI_ESA_SINCE_ZOP }, + { "SRSTU", RRE_2, 852, UNI_SINCE_YOP }, + { "SRXT", RXF_3_x, 1526, UNI_SINCE_Z9 }, + { "SSAIR", RRE_1, 1107, UNI_SINCE_YOP }, + { "SSAR", RRE_1, 1107, UNI_ESA_XA_370_SINCE_ZOP }, + { "SSCH", S_1_u, 1227, UNI_ESA_XA_SINCE_ZOP }, + { "SSK", RR_2, 304, UNI_370_DOS }, + { "SSKE", RRF_c_3_opt, 1112, UNI_ESA_XA_370_SINCE_ZOP }, + { "SSM", SI_1, 1115, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "ST", RX_a_2_ux, 860, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STAM", RS_a_3, 861, UNI_ESA_SINCE_ZOP }, + { "STAMY", RSY_a_3, 861, UNI_SINCE_YOP }, + { "STAP", S_1_u, 1118, UNI_ESA_XA_370_SINCE_ZOP }, + { "STC", RX_a_2_ux, 862, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STCH", RXY_a_2, 862, UNI_SINCE_Z11 }, + { "STCK", S_1_u, 863, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STCKC", S_1_u, 1117, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STCKE", S_1_u, 864, UNI_ESA_SINCE_ZOP }, + { "STCKF", S_1_u, 863, UNI_SINCE_Z9 }, + { "STCM", RS_b_3, 862, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STCMH", RSY_b_3_us, 862, UNI_SINCE_ZOP }, + { "STCMY", RSY_b_3_us, 862, UNI_SINCE_YOP }, + { "STCPS", S_1_u, 1228, UNI_ESA_XA_SINCE_ZOP }, + { "STCRW", S_1_u, 1229, UNI_ESA_XA_SINCE_ZOP }, + { "STCTG", RSY_a_3, 1117, UNI_SINCE_ZOP }, + { "STCTL", RS_a_3, 1117, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STCY", RXY_a_2, 862, UNI_SINCE_YOP }, + { "STD", RX_a_2_ux, 976, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STDY", RXY_a_2, 977, UNI_SINCE_YOP }, + { "STE", RX_a_2_ux, 976, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STEY", RXY_a_2, 977, UNI_SINCE_YOP }, + { "STFH", RXY_a_2, 868, UNI_SINCE_Z11 }, + { "STFL", S_1_u, 1120, UNI_ESA_SINCE_ZOP }, + { "STFLE", S_1_s, 866, UNI_SINCE_Z9 }, + { "STFPC", S_1_u, 977, UNI_ESA_SINCE_ZOP }, + { "STG", RXY_a_2, 861, UNI_SINCE_ZOP }, + { "STGRL", RIL_b_2, 861, UNI_SINCE_Z10 }, + { "STGSC", RXY_a_2, 867, UNI_SINCE_Z14 }, + { "STH", RX_a_2_ux, 867, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STHH", RXY_a_2, 868, UNI_SINCE_Z11 }, + { "STHRL", RIL_b_2, 868, UNI_SINCE_Z10 }, + { "STHY", RXY_a_2, 868, UNI_SINCE_YOP }, + { "STIDC", S_1_u, 129, UNI_370_DOS }, + { "STIDP", S_1_u, 1118, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STM", RS_a_3, 869, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STMG", RSY_a_3, 869, UNI_SINCE_ZOP }, + { "STMH", RSY_a_3, 869, UNI_SINCE_ZOP }, + { "STMY", RSY_a_3, 869, UNI_SINCE_YOP }, + { "STNSM", SI_2_u, 1146, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STOC", RSY_b_3_su, 869, UNI_SINCE_Z11 }, + { "STOCFH", RSY_b_3_su, 870, UNI_SINCE_Z13 }, + { "STOCG", RSY_b_3_su, 869, UNI_SINCE_Z11 }, + { "STOSM", SI_2_u, 1146, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STPQ", RXY_a_2, 870, UNI_SINCE_ZOP }, + { "STPT", S_1_u, 1120, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "STPX", S_1_u, 1121, UNI_ESA_XA_370_SINCE_ZOP }, + { "STRAG", SSE_2, 1121, UNI_SINCE_ZOP }, + { "STRL", RIL_b_2, 861, UNI_SINCE_Z10 }, + { "STRV", RXY_a_2, 871, UNI_ESA_SINCE_ZOP }, + { "STRVG", RXY_a_2, 871, UNI_SINCE_ZOP }, + { "STRVH", RXY_a_2, 871, UNI_ESA_SINCE_ZOP }, + { "STSCH", S_1_u, 1230, UNI_ESA_XA_SINCE_ZOP }, + { "STSI", S_1_u, 1122, UNI_ESA_SINCE_ZOP }, + { "STURA", RRE_2, 1147, UNI_ESA_SINCE_ZOP }, + { "STURG", RRE_2, 1147, UNI_SINCE_ZOP }, + { "STY", RXY_a_2, 861, UNI_SINCE_YOP }, + { "SU", RX_a_2_ux, 1429, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SUR", RR_2, 1429, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SVC", I_1, 876, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SW", RX_a_2_ux, 1429, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SWR", RR_2, 1429, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SXBR", RRE_2, 1470, UNI_ESA_SINCE_ZOP }, + { "SXR", RR_2, 1428, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "SXTR", RRF_a_3, 1527, UNI_SINCE_Z9 }, + { "SXTRA", RRF_a_4, 1527, UNI_SINCE_Z11 }, + { "SY", RXY_a_2, 872, UNI_SINCE_YOP }, + { "TABORT", S_1_u, 878, UNI_SINCE_Z12 }, + { "TAM", E_0, 876, UNI_ESA_SINCE_ZOP }, + { "TAR", RRE_2, 1147, UNI_ESA_SINCE_ZOP }, + { "TB", RRE_2, 1149, UNI_ESA_XA_370_SINCE_ZOP }, + { "TBDR", RRF_e_3, 956, UNI_ESA_SINCE_ZOP }, + { "TBEDR", RRF_e_3, 956, UNI_ESA_SINCE_ZOP }, + { "TBEGIN", SIL_2_s, 879, UNI_SINCE_Z12 }, + { "TBEGINC", SIL_2_s, 883, UNI_SINCE_Z12 }, + { "TCDB", RXE_2, 1471, UNI_ESA_SINCE_ZOP }, + { "TCEB", RXE_2, 1471, UNI_ESA_SINCE_ZOP }, + { "TCH", S_1_u, 384, UNI_370_DOS }, + { "TCXB", RXE_2, 1471, UNI_ESA_SINCE_ZOP }, + { "TDCDT", RXE_2, 1528, UNI_SINCE_Z9 }, + { "TDCET", RXE_2, 1528, UNI_SINCE_Z9 }, + { "TDCXT", RXE_2, 1528, UNI_SINCE_Z9 }, + { "TDGDT", RXE_2, 1529, UNI_SINCE_Z9 }, + { "TDGET", RXE_2, 1529, UNI_SINCE_Z9 }, + { "TDGXT", RXE_2, 1529, UNI_SINCE_Z9 }, + { "TEND", S_0, 885, UNI_SINCE_Z12 }, + { "THDER", RRE_2, 955, UNI_ESA_SINCE_ZOP }, + { "THDR", RRE_2, 955, UNI_ESA_SINCE_ZOP }, + { "TIO", S_1_u, 385, UNI_370_DOS }, + { "TM", SI_2_u, 877, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "TMH", RI_a_2_u, 877, UNI_ESA_SINCE_ZOP }, + { "TMHH", RI_a_2_u, 877, UNI_SINCE_ZOP }, + { "TMHL", RI_a_2_u, 877, UNI_SINCE_ZOP }, + { "TML", RI_a_2_u, 877, UNI_ESA_SINCE_ZOP }, + { "TMLH", RI_a_2_u, 877, UNI_ESA_SINCE_ZOP }, + { "TMLL", RI_a_2_u, 877, UNI_ESA_SINCE_ZOP }, + { "TMY", SIY_2_su, 877, UNI_SINCE_YOP }, + { "TP", RSL_a_1, 928, UNI_SINCE_ZOP }, + { "TPEI", RRE_2, 1151, UNI_SINCE_Z14 }, + { "TPI", S_1_u, 1231, UNI_ESA_XA_SINCE_ZOP }, + { "TPROT", SSE_2, 1152, UNI_ESA_XA_370_SINCE_ZOP }, + { "TR", SS_a_2_u, 886, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "TRACE", RS_a_3, 1155, UNI_ESA_XA_SINCE_ZOP }, + { "TRACG", RSY_a_3, 1155, UNI_SINCE_ZOP }, + { "TRAP2", E_0, 1156, UNI_ESA_SINCE_ZOP }, + { "TRAP4", S_1_u, 1156, UNI_ESA_SINCE_ZOP }, + { "TRE", RRE_2, 893, UNI_ESA_SINCE_ZOP }, + { "TROO", RRF_c_3_opt, 895, UNI_SINCE_ZOP }, + { "TROT", RRF_c_3_opt, 895, UNI_SINCE_ZOP }, + { "TRT", SS_a_2_u, 887, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "TRTE", RRF_c_3_opt, 887, UNI_SINCE_Z10 }, + { "TRTO", RRF_c_3_opt, 895, UNI_SINCE_ZOP }, + { "TRTR", SS_a_2_u, 892, UNI_SINCE_YOP }, + { "TRTRE", RRF_c_3_opt, 888, UNI_SINCE_Z10 }, + { "TRTT", RRF_c_3_opt, 895, UNI_SINCE_ZOP }, + { "TS", SI_1, 876, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "TSCH", S_1_u, 1232, UNI_ESA_XA_SINCE_ZOP }, + { "UNPK", SS_b_2, 900, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "UNPKA", SS_a_2_u, 901, UNI_SINCE_ZOP }, + { "UNPKU", SS_a_2_u, 902, UNI_SINCE_ZOP }, + { "UPT", E_0, 903, UNI_ESA_XA_SINCE_ZOP }, + { "VA", VRR_c_4, 1557, UNI_ESA_XA_370_SINCE_Z13 }, + { "VAC", VRR_d_5, 1558, UNI_SINCE_Z13 }, + { "VACC", VRR_c_4, 1558, UNI_SINCE_Z13 }, + { "VACCC", VRR_d_5, 1559, UNI_SINCE_Z13 }, + { "VACD", RI_a_2_u, 0, ESA_XA_370 }, + { "VACE", RI_a_2_u, 0, ESA_XA_370 }, + { "VACRS", RRE_2, 0, ESA_XA_370 }, + { "VACSV", RRE_2, 0, ESA_XA_370 }, + { "VAD", RI_a_2_u, 0, ESA_XA_370 }, + { "VADS", RI_a_2_u, 0, ESA_XA_370 }, + { "VAE", RI_a_2_u, 0, ESA_XA_370 }, + { "VAES", RI_a_2_u, 0, ESA_XA_370 }, + { "VAP", VRI_f_5, 1643, UNI_SINCE_Z14 }, + { "VAS", RI_a_2_u, 0, ESA_XA_370 }, + { "VAVG", VRR_c_4, 1560, UNI_SINCE_Z13 }, + { "VAVGL", VRR_c_4, 1560, UNI_SINCE_Z13 }, + { "VBPERM", VRR_c_3, 1536, UNI_SINCE_Z14 }, + { "VC", RI_a_2_u, 0, ESA_XA_370 }, + { "VCD", RI_a_2_u, 0, ESA_XA_370 }, + { "VCDS", RI_a_2_u, 0, ESA_XA_370 }, + { "VCE", RI_a_2_u, 0, ESA_XA_370 }, + { "VCEQ", VRR_b_5, 1561, UNI_ESA_XA_370_SINCE_Z13 }, + { "VCES", RI_a_2_u, 0, ESA_XA_370 }, + { "VCFPL", VRR_a_5, 1643, UNI_SINCE_Z15 }, + { "VCFPS", VRR_a_5, 1641, UNI_SINCE_Z15 }, + { "VCH", VRR_b_5, 1562, UNI_SINCE_Z13 }, + { "VCHL", VRR_b_5, 1563, UNI_SINCE_Z13 }, + { "VCKSM", VRR_c_3, 1560, UNI_SINCE_Z13 }, + { "VCLFP", VRR_a_5, 1611, UNI_SINCE_Z15 }, + { "VCLGD", VRR_a_5, 1611, UNI_SINCE_Z13 }, + { "VCLZ", VRR_a_3, 1564, UNI_SINCE_Z13 }, + { "VCOVM", RRE_2, 0, ESA_XA_370 }, + { "VCP", VRR_h_3, 1644, UNI_SINCE_Z14 }, + { "VCS", RI_a_2_u, 0, ESA_XA_370 }, + { "VCSFP", VRR_a_5, 1644, UNI_SINCE_Z15 }, + { "VCTZ", VRR_a_3, 1564, UNI_SINCE_Z13 }, + { "VCVB", VRR_i_3, 1645, UNI_SINCE_Z14 }, + { "VCVBG", VRR_i_3, 1645, UNI_SINCE_Z14 }, + { "VCVD", VRI_i_4, 1646, UNI_SINCE_Z14 }, + { "VCVDG", VRI_i_4, 1646, UNI_SINCE_Z14 }, + { "VCVM", RRE_2, 0, ESA_XA_370 }, + { "VCZVM", RRE_2, 0, ESA_XA_370 }, + { "VDD", RI_a_2_u, 0, ESA_XA_370 }, + { "VDDS", RI_a_2_u, 0, ESA_XA_370 }, + { "VDE", RI_a_2_u, 0, ESA_XA_370 }, + { "VDES", RI_a_2_u, 0, ESA_XA_370 }, + { "VDP", VRI_f_5, 1648, UNI_SINCE_Z14 }, + { "VEC", VRR_a_3, 1561, UNI_SINCE_Z13 }, + { "VECL", VRR_a_3, 1561, UNI_SINCE_Z13 }, + { "VERIM", VRI_d_5, 1576, UNI_SINCE_Z13 }, + { "VERLL", VRS_a_4, 1575, UNI_SINCE_Z13 }, + { "VERLLV", VRR_c_4, 1575, UNI_SINCE_Z13 }, + { "VESL", VRS_a_4, 1577, UNI_SINCE_Z13 }, + { "VESLV", VRR_c_4, 1577, UNI_SINCE_Z13 }, + { "VESRA", VRS_a_4, 1577, UNI_SINCE_Z13 }, + { "VESRAV", VRR_c_4, 1577, UNI_SINCE_Z13 }, + { "VESRL", VRS_a_4, 1578, UNI_SINCE_Z13 }, + { "VESRLV", VRR_c_4, 1578, UNI_SINCE_Z13 }, + { "VFA", VRR_c_5, 1595, UNI_SINCE_Z13 }, + { "VFAE", VRR_b_5_opt, 1585, UNI_SINCE_Z13 }, + { "VFCE", VRR_c_6, 1601, UNI_SINCE_Z13 }, + { "VFCH", VRR_c_6, 1603, UNI_SINCE_Z13 }, + { "VFCHE", VRR_c_6, 1605, UNI_SINCE_Z13 }, + { "VFD", VRR_c_5, 1613, UNI_SINCE_Z13 }, + { "VFEE", VRR_b_5_opt, 1587, UNI_SINCE_Z13 }, + { "VFENE", VRR_b_5_opt, 1588, UNI_SINCE_Z13 }, + { "VFI", VRR_a_5, 1615, UNI_SINCE_Z13 }, + { "VFLL", VRR_a_4, 1617, UNI_SINCE_Z14 }, + { "VFLR", VRR_a_5, 1618, UNI_SINCE_Z14 }, + { "VFM", VRR_c_5, 1631, UNI_SINCE_Z13 }, + { "VFMA", VRR_e_6, 1633, UNI_SINCE_Z13 }, + { "VFMAX", VRR_c_6, 1619, UNI_SINCE_Z14 }, + { "VFMIN", VRR_c_6, 1625, UNI_SINCE_Z14 }, + { "VFMS", VRR_e_6, 1633, UNI_SINCE_Z13 }, + { "VFNMA", VRR_e_6, 1633, UNI_SINCE_Z14 }, + { "VFNMS", VRR_e_6, 1633, UNI_SINCE_Z14 }, + { "VFPSO", VRR_a_5, 1635, UNI_SINCE_Z13 }, + { "VFS", VRR_c_5, 1637, UNI_SINCE_Z13 }, + { "VFSQ", VRR_a_4, 1636, UNI_SINCE_Z13 }, + { "VFTCI", VRI_e_5, 1638, UNI_SINCE_Z13 }, + { "VGBM", VRI_a_2, 1537, UNI_SINCE_Z13 }, + { "VGEF", VRV_3, 1536, UNI_SINCE_Z13 }, + { "VGEG", VRV_3, 1536, UNI_SINCE_Z13 }, + { "VGFM", VRR_c_4, 1565, UNI_SINCE_Z13 }, + { "VGFMA", VRR_d_5, 1566, UNI_SINCE_Z13 }, + { "VGM", VRI_b_4, 1537, UNI_SINCE_Z13 }, + { "VISTR", VRR_a_4_opt, 1589, UNI_SINCE_Z13 }, + { "VL", VRX_3_opt, 1538, UNI_ESA_XA_370_SINCE_Z13 }, + { "VLBB", VRX_3, 1542, UNI_SINCE_Z13 }, + { "VLBIX", RRE_2, 0, ESA_XA_370 }, + { "VLBR", VRX_3, 1563, UNI_SINCE_Z15 }, + { "VLBRREP", VRX_3, 1562, UNI_SINCE_Z15 }, + { "VLC", VRR_a_3, 1566, UNI_SINCE_Z13 }, + { "VLCVM", RRE_2, 0, ESA_XA_370 }, + { "VLD", RI_a_2_u, 0, ESA_XA_370 }, + { "VLEB", VRX_3, 1538, UNI_SINCE_Z13 }, + { "VLEBRG", VRX_3, 1561, UNI_SINCE_Z15 }, + { "VLEBRH", VRX_3, 1561, UNI_SINCE_Z15 }, + { "VLEF", VRX_3, 1539, UNI_SINCE_Z13 }, + { "VLEG", VRX_3, 1539, UNI_SINCE_Z13 }, + { "VLEH", VRX_3, 1539, UNI_SINCE_Z13 }, + { "VLEIB", VRI_a_3, 1539, UNI_SINCE_Z13 }, + { "VLEIF", VRI_a_3, 1539, UNI_SINCE_Z13 }, + { "VLEIG", VRI_a_3, 1539, UNI_SINCE_Z13 }, + { "VLEIH", VRI_a_3, 1539, UNI_SINCE_Z13 }, + { "VLELD", RRE_2, 0, ESA_XA_370 }, + { "VLELE", RRE_2, 0, ESA_XA_370 }, + { "VLER", VRX_3, 1564, UNI_ESA_XA_370_SINCE_Z15 }, + { "VLGV", VRS_c_4, 1539, UNI_SINCE_Z13 }, + { "VLH", RI_a_2_u, 0, ESA_XA_370 }, + { "VLI", RRE_2, 0, ESA_XA_370 }, + { "VLID", RRE_2, 0, ESA_XA_370 }, + { "VLINT", RI_a_2_u, 0, ESA_XA_370 }, + { "VLIP", VRI_h_3, 1649, UNI_SINCE_Z14 }, + { "VLL", VRS_b_3, 1543, UNI_SINCE_Z13 }, + { "VLLEBRZ", VRX_3, 1562, UNI_SINCE_Z15 }, + { "VLLEZ", VRX_3, 1540, UNI_SINCE_Z13 }, + { "VLM", VRS_a_4_opt, 1541, UNI_ESA_XA_370_SINCE_Z13 }, + { "VLMD", RI_a_2_u, 0, ESA_XA_370 }, + { "VLP", VRR_a_3, 1566, UNI_SINCE_Z13 }, + { "VLR", VRR_a_2, 1538, UNI_ESA_XA_370_SINCE_Z13 }, + { "VLREP", VRX_3, 1538, UNI_SINCE_Z13 }, + { "VLRL", VSI_3, 1541, UNI_SINCE_Z14 }, + { "VLRLR", VRS_d_3, 1541, UNI_SINCE_Z14 }, + { "VLVCA", RRE_2, 0, ESA_XA_370 }, + { "VLVCU", RRE_2, 0, ESA_XA_370 }, + { "VLVG", VRS_b_4, 1543, UNI_SINCE_Z13 }, + { "VLVGP", VRR_f_3, 1543, UNI_SINCE_Z13 }, + { "VLVM", RRE_2, 0, ESA_XA_370 }, + { "VLY", RI_a_2_u, 0, ESA_XA_370 }, + { "VLYD", RI_a_2_u, 0, ESA_XA_370 }, + { "VM", RI_a_2_u, 0, ESA_XA_370 }, + { "VMAD", RI_a_2_u, 0, ESA_XA_370 }, + { "VMADS", RI_a_2_u, 0, ESA_XA_370 }, + { "VMAE", VRR_d_5, 1569, UNI_ESA_XA_370_SINCE_Z13 }, + { "VMAES", RI_a_2_u, 0, ESA_XA_370 }, + { "VMAH", VRR_d_5, 1569, UNI_SINCE_Z13 }, + { "VMAL", VRR_d_5, 1568, UNI_SINCE_Z13 }, + { "VMALE", VRR_d_5, 1569, UNI_SINCE_Z13 }, + { "VMALH", VRR_d_5, 1569, UNI_SINCE_Z13 }, + { "VMALO", VRR_d_5, 1570, UNI_SINCE_Z13 }, + { "VMAO", VRR_d_5, 1570, UNI_SINCE_Z13 }, + { "VMCD", RI_a_2_u, 0, ESA_XA_370 }, + { "VMCE", RI_a_2_u, 0, ESA_XA_370 }, + { "VMD", RI_a_2_u, 0, ESA_XA_370 }, + { "VMDS", RI_a_2_u, 0, ESA_XA_370 }, + { "VME", VRR_c_4, 1572, UNI_ESA_XA_370_SINCE_Z13 }, + { "VMES", RI_a_2_u, 0, ESA_XA_370 }, + { "VMH", VRR_c_4, 1570, UNI_SINCE_Z13 }, + { "VML", VRR_c_4, 1571, UNI_SINCE_Z13 }, + { "VMLE", VRR_c_4, 1572, UNI_SINCE_Z13 }, + { "VMLH", VRR_c_4, 1571, UNI_SINCE_Z13 }, + { "VMLO", VRR_c_4, 1572, UNI_SINCE_Z13 }, + { "VMN", VRR_c_4, 1567, UNI_SINCE_Z13 }, + { "VMNL", VRR_c_4, 1568, UNI_SINCE_Z13 }, + { "VMNSD", RRE_2, 0, ESA_XA_370 }, + { "VMNSE", RRE_2, 0, ESA_XA_370 }, + { "VMO", VRR_c_4, 1572, UNI_SINCE_Z13 }, + { "VMP", VRI_f_5, 1650, UNI_SINCE_Z14 }, + { "VMRH", VRR_c_4, 1544, UNI_SINCE_Z13 }, + { "VMRL", VRR_c_4, 1544, UNI_SINCE_Z13 }, + { "VMRRS", RRE_2, 0, ESA_XA_370 }, + { "VMRSV", RRE_2, 0, ESA_XA_370 }, + { "VMS", RI_a_2_u, 0, ESA_XA_370 }, + { "VMSD", RI_a_2_u, 0, ESA_XA_370 }, + { "VMSDS", RI_a_2_u, 0, ESA_XA_370 }, + { "VMSE", RI_a_2_u, 0, ESA_XA_370 }, + { "VMSES", RI_a_2_u, 0, ESA_XA_370 }, + { "VMSL", VRR_d_6, 1573, UNI_SINCE_Z14 }, + { "VMSP", VRI_f_5, 1651, UNI_SINCE_Z14 }, + { "VMX", VRR_c_4, 1567, UNI_SINCE_Z13 }, + { "VMXAD", RRE_2, 0, ESA_XA_370 }, + { "VMXAE", RRE_2, 0, ESA_XA_370 }, + { "VMXL", VRR_c_4, 1567, UNI_SINCE_Z13 }, + { "VMXSE", RRE_2, 0, ESA_XA_370 }, + { "VN", VRR_c_3, 1559, UNI_ESA_XA_370_SINCE_Z13 }, + { "VNC", VRR_c_3, 1559, UNI_SINCE_Z13 }, + { "VNN", VRR_c_3, 1574, UNI_SINCE_Z14 }, + { "VNO", VRR_c_3, 1574, UNI_SINCE_Z13 }, + { "VNS", RI_a_2_u, 0, ESA_XA_370 }, + { "VNVM", RRE_2, 0, ESA_XA_370 }, + { "VNX", VRR_c_3, 1574, UNI_SINCE_Z14 }, + { "VO", VRR_c_3, 1574, UNI_ESA_XA_370_SINCE_Z13 }, + { "VOC", VRR_c_3, 1575, UNI_SINCE_Z14 }, + { "VOS", RI_a_2_u, 0, ESA_XA_370 }, + { "VOVM", RRE_2, 0, ESA_XA_370 }, + { "VPDI", VRR_c_4, 1547, UNI_SINCE_Z13 }, + { "VPERM", VRR_e_4, 1547, UNI_SINCE_Z13 }, + { "VPK", VRR_c_4, 1545, UNI_SINCE_Z13 }, + { "VPKLS", VRR_b_5, 1546, UNI_SINCE_Z13 }, + { "VPKS", VRR_b_5, 1545, UNI_SINCE_Z13 }, + { "VPKZ", VSI_3, 1652, UNI_SINCE_Z14 }, + { "VPOPCT", VRR_a_3, 1575, UNI_SINCE_Z13 }, + { "VPSOP", VRI_g_5_u, 1653, UNI_SINCE_Z14 }, + { "VRCL", RRE_2, 0, ESA_XA_370 }, + { "VREP", VRI_c_4, 1547, UNI_SINCE_Z13 }, + { "VREPI", VRI_a_3, 1548, UNI_SINCE_Z13 }, + { "VRP", VRI_f_5, 1654, UNI_SINCE_Z14 }, + { "VRRS", RRE_2, 0, ESA_XA_370 }, + { "VRSV", RRE_2, 0, ESA_XA_370 }, + { "VRSVC", RRE_2, 0, ESA_XA_370 }, + { "VS", VRR_c_4, 1580, UNI_ESA_XA_370_SINCE_Z13 }, + { "VSBCBI", VRR_d_5, 1582, UNI_SINCE_Z13 }, + { "VSBI", VRR_d_5, 1581, UNI_SINCE_Z13 }, + { "VSCBI", VRR_c_4, 1581, UNI_SINCE_Z13 }, + { "VSCEF", VRV_3, 1548, UNI_SINCE_Z13 }, + { "VSCEG", VRV_3, 1548, UNI_SINCE_Z13 }, + { "VSD", RI_a_2_u, 0, ESA_XA_370 }, + { "VSDP", VRI_f_5, 1656, UNI_SINCE_Z14 }, + { "VSDS", RI_a_2_u, 0, ESA_XA_370 }, + { "VSE", RI_a_2_u, 0, ESA_XA_370 }, + { "VSEG", VRR_a_3, 1549, UNI_SINCE_Z13 }, + { "VSEL", VRR_e_4, 1549, UNI_SINCE_Z13 }, + { "VSES", RI_a_2_u, 0, ESA_XA_370 }, + { "VSL", VRR_c_3, 1579, UNI_SINCE_Z13 }, + { "VSLB", VRR_c_3, 1579, UNI_SINCE_Z13 }, + { "VSLD", VRI_d_4, 1607, UNI_SINCE_Z15 }, + { "VSLDB", VRI_d_4, 1579, UNI_SINCE_Z13 }, + { "VSLL", RRE_2, 0, ESA_XA_370 }, + { "VSP", VRI_f_5, 1658, UNI_SINCE_Z14 }, + { "VSPSD", RRE_2, 0, ESA_XA_370 }, + { "VSRA", VRR_c_3, 1579, UNI_SINCE_Z13 }, + { "VSRAB", VRR_c_3, 1580, UNI_SINCE_Z13 }, + { "VSRD", VRI_d_4, 1608, UNI_SINCE_Z15 }, + { "VSRL", VRR_c_3, 1580, UNI_ESA_XA_370_SINCE_Z13 }, + { "VSRLB", VRR_c_3, 1580, UNI_SINCE_Z13 }, + { "VSRP", VRI_g_5_s, 1657, UNI_SINCE_Z14 }, + { "VSRRS", RRE_2, 0, ESA_XA_370 }, + { "VSRSV", RRE_2, 0, ESA_XA_370 }, + { "VSS", RI_a_2_u, 0, ESA_XA_370 }, + { "VST", VRX_3_opt, 1550, UNI_ESA_XA_370_SINCE_Z13 }, + { "VSTBR", VRX_3, 1576, UNI_SINCE_Z15 }, + { "VSTD", RI_a_2_u, 0, ESA_XA_370 }, + { "VSTEB", VRX_3, 1550, UNI_SINCE_Z13 }, + { "VSTEBRF", VRX_3, 1576, UNI_SINCE_Z15 }, + { "VSTEBRG", VRX_3, 1576, UNI_SINCE_Z15 }, + { "VSTEBRH", VRX_3, 1576, UNI_SINCE_Z15 }, + { "VSTEF", VRX_3, 1550, UNI_SINCE_Z13 }, + { "VSTEG", VRX_3, 1550, UNI_SINCE_Z13 }, + { "VSTEH", VRX_3, 1550, UNI_SINCE_Z13 }, + { "VSTER", VRX_3, 1578, UNI_SINCE_Z15 }, + { "VSTH", RI_a_2_u, 0, ESA_XA_370 }, + { "VSTI", RRE_2, 0, ESA_XA_370 }, + { "VSTID", RRE_2, 0, ESA_XA_370 }, + { "VSTK", RI_a_2_u, 0, ESA_XA_370 }, + { "VSTKD", RI_a_2_u, 0, ESA_XA_370 }, + { "VSTL", VRS_b_3, 1552, UNI_SINCE_Z13 }, + { "VSTM", VRS_a_4_opt, 1551, UNI_ESA_XA_370_SINCE_Z13 }, + { "VSTMD", RI_a_2_u, 0, ESA_XA_370 }, + { "VSTRC", VRR_d_6_opt, 1590, UNI_SINCE_Z13 }, + { "VSTRL", VSI_3, 1551, UNI_SINCE_Z14 }, + { "VSTRLR", VRS_d_3, 1551, UNI_SINCE_Z14 }, + { "VSTRS", VRR_d_6_opt, 1622, UNI_SINCE_Z15 }, + { "VSTVM", RRE_2, 0, ESA_XA_370 }, + { "VSTVP", RRE_2, 0, ESA_XA_370 }, + { "VSUM", VRR_c_4, 1583, UNI_SINCE_Z13 }, + { "VSUMG", VRR_c_4, 1582, UNI_SINCE_Z13 }, + { "VSUMQ", VRR_c_4, 1583, UNI_SINCE_Z13 }, + { "VSVMM", RRE_2, 0, ESA_XA_370 }, + { "VTM", VRR_a_2, 1584, UNI_SINCE_Z13 }, + { "VTP", VRR_g_1, 1660, UNI_SINCE_Z14 }, + { "VTVM", RRE_2, 0, ESA_XA_370 }, + { "VUPH", VRR_a_3, 1552, UNI_SINCE_Z13 }, + { "VUPKZ", VSI_3, 1660, UNI_SINCE_Z14 }, + { "VUPL", VRR_a_3, 1553, UNI_SINCE_Z13 }, + { "VUPLH", VRR_a_3, 1553, UNI_SINCE_Z13 }, + { "VUPLL", VRR_a_3, 1554, UNI_SINCE_Z13 }, + { "VX", VRR_c_3, 1565, UNI_ESA_XA_370_SINCE_Z13 }, + { "VXELD", RRE_2, 0, ESA_XA_370 }, + { "VXELE", RRE_2, 0, ESA_XA_370 }, + { "VXS", RI_a_2_u, 0, ESA_XA_370 }, + { "VXVC", RRE_2, 0, ESA_XA_370 }, + { "VXVM", RRE_2, 0, ESA_XA_370 }, + { "VXVMM", RRE_2, 0, ESA_XA_370 }, + { "VZPSD", RRE_2, 0, ESA_XA_370 }, + { "WFC", VRR_a_4, 1599, UNI_SINCE_Z13 }, + { "WFK", VRR_a_4, 1600, UNI_SINCE_Z13 }, + { "X", RX_a_2_ux, 738, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "XC", SS_a_2_s, 739, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "XG", RXY_a_2, 738, UNI_SINCE_ZOP }, + { "XGR", RRE_2, 738, UNI_SINCE_ZOP }, + { "XGRK", RRF_a_3, 738, UNI_SINCE_Z11 }, + { "XI", SI_2_u, 739, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "XIHF", RIL_a_2, 740, UNI_SINCE_Z9 }, + { "XILF", RIL_a_2, 740, UNI_SINCE_Z9 }, + { "XIY", SIY_2_su, 739, UNI_SINCE_YOP }, + { "XR", RR_2, 738, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "XRK", RRF_a_3, 738, UNI_SINCE_Z11 }, + { "XSCH", S_0, 1215, UNI_ESA_SINCE_ZOP }, + { "XY", RXY_a_2, 738, UNI_SINCE_YOP }, + { "ZAP", SS_b_2, 928, UNI_ESA_XA_370_DOS_SINCE_ZOP }, }; #ifdef __cpp_lib_ranges static_assert(std::ranges::is_sorted(machine_instructions, {}, &machine_instruction::name)); @@ -2097,951 +2153,944 @@ constexpr auto mi_WFC = find_mi("WFC"); constexpr auto mi_WFK = find_mi("WFK"); constexpr mnemonic_code mnemonic_codes[] = { - { "B", mi_BC, { { 0, 15 } } }, - { "BE", mi_BC, { { 0, 8 } } }, - { "BER", mi_BCR, { { 0, 8 } } }, - { "BH", mi_BC, { { 0, 2 } } }, - { "BHR", mi_BCR, { { 0, 2 } } }, - { "BI", mi_BIC, { { 0, 15 } } }, - { "BIE", mi_BIC, { { 0, 8 } } }, - { "BIH", mi_BIC, { { 0, 2 } } }, - { "BIL", mi_BIC, { { 0, 4 } } }, - { "BIM", mi_BIC, { { 0, 4 } } }, - { "BINE", mi_BIC, { { 0, 7 } } }, - { "BINH", mi_BIC, { { 0, 13 } } }, - { "BINL", mi_BIC, { { 0, 11 } } }, - { "BINM", mi_BIC, { { 0, 11 } } }, - { "BINO", mi_BIC, { { 0, 14 } } }, - { "BINP", mi_BIC, { { 0, 13 } } }, - { "BINZ", mi_BIC, { { 0, 7 } } }, - { "BIO", mi_BIC, { { 0, 1 } } }, - { "BIP", mi_BIC, { { 0, 2 } } }, - { "BIZ", mi_BIC, { { 0, 8 } } }, - { "BL", mi_BC, { { 0, 4 } } }, - { "BLR", mi_BCR, { { 0, 4 } } }, - { "BM", mi_BC, { { 0, 4 } } }, - { "BMR", mi_BCR, { { 0, 4 } } }, - { "BNE", mi_BC, { { 0, 7 } } }, - { "BNER", mi_BCR, { { 0, 7 } } }, - { "BNH", mi_BC, { { 0, 13 } } }, - { "BNHR", mi_BCR, { { 0, 13 } } }, - { "BNL", mi_BC, { { 0, 11 } } }, - { "BNLR", mi_BCR, { { 0, 11 } } }, - { "BNM", mi_BC, { { 0, 11 } } }, - { "BNMR", mi_BCR, { { 0, 11 } } }, - { "BNO", mi_BC, { { 0, 14 } } }, - { "BNOR", mi_BCR, { { 0, 14 } } }, - { "BNP", mi_BC, { { 0, 13 } } }, - { "BNPR", mi_BCR, { { 0, 13 } } }, - { "BNZ", mi_BC, { { 0, 7 } } }, - { "BNZR", mi_BCR, { { 0, 7 } } }, - { "BO", mi_BC, { { 0, 1 } } }, - { "BOR", mi_BCR, { { 0, 1 } } }, - { "BP", mi_BC, { { 0, 2 } } }, - { "BPR", mi_BCR, { { 0, 2 } } }, - { "BR", mi_BCR, { { 0, 15 } } }, - { "BRE", mi_BRC, { { 0, 8 } } }, - { "BREL", mi_BRCL, { { 0, 8 } } }, - { "BRH", mi_BRC, { { 0, 2 } } }, - { "BRHL", mi_BRCL, { { 0, 2 } } }, - { "BRL", mi_BRC, { { 0, 4 } } }, - { "BRLL", mi_BRCL, { { 0, 4 } } }, - { "BRM", mi_BRC, { { 0, 4 } } }, - { "BRML", mi_BRCL, { { 0, 4 } } }, - { "BRNE", mi_BRC, { { 0, 7 } } }, - { "BRNEL", mi_BRCL, { { 0, 7 } } }, - { "BRNH", mi_BRC, { { 0, 13 } } }, - { "BRNHL", mi_BRCL, { { 0, 13 } } }, - { "BRNL", mi_BRC, { { 0, 11 } } }, - { "BRNLL", mi_BRCL, { { 0, 11 } } }, - { "BRNM", mi_BRC, { { 0, 11 } } }, - { "BRNML", mi_BRCL, { { 0, 11 } } }, - { "BRNO", mi_BRC, { { 0, 14 } } }, - { "BRNOL", mi_BRCL, { { 0, 14 } } }, - { "BRNP", mi_BRC, { { 0, 13 } } }, - { "BRNPL", mi_BRCL, { { 0, 13 } } }, - { "BRNZ", mi_BRC, { { 0, 7 } } }, - { "BRNZL", mi_BRCL, { { 0, 7 } } }, - { "BRO", mi_BRC, { { 0, 1 } } }, - { "BROL", mi_BRCL, { { 0, 1 } } }, - { "BRP", mi_BRC, { { 0, 2 } } }, - { "BRPL", mi_BRCL, { { 0, 2 } } }, - { "BRU", mi_BRC, { { 0, 15 } } }, - { "BRUL", mi_BRCL, { { 0, 15 } } }, - { "BRZ", mi_BRC, { { 0, 8 } } }, - { "BRZL", mi_BRCL, { { 0, 8 } } }, - { "BZ", mi_BC, { { 0, 8 } } }, - { "BZR", mi_BCR, { { 0, 8 } } }, - { "CGIBE", mi_CGIB, { { 2, 8 } } }, - { "CGIBH", mi_CGIB, { { 2, 2 } } }, - { "CGIBL", mi_CGIB, { { 2, 4 } } }, - { "CGIBNE", mi_CGIB, { { 2, 6 } } }, - { "CGIBNH", mi_CGIB, { { 2, 12 } } }, - { "CGIBNL", mi_CGIB, { { 2, 10 } } }, - { "CGIJE", mi_CGIJ, { { 2, 8 } } }, - { "CGIJH", mi_CGIJ, { { 2, 2 } } }, - { "CGIJL", mi_CGIJ, { { 2, 4 } } }, - { "CGIJNE", mi_CGIJ, { { 2, 6 } } }, - { "CGIJNH", mi_CGIJ, { { 2, 12 } } }, - { "CGIJNL", mi_CGIJ, { { 2, 10 } } }, - { "CGITE", mi_CGIT, { { 2, 8 } } }, - { "CGITH", mi_CGIT, { { 2, 2 } } }, - { "CGITL", mi_CGIT, { { 2, 4 } } }, - { "CGITNE", mi_CGIT, { { 2, 6 } } }, - { "CGITNH", mi_CGIT, { { 2, 12 } } }, - { "CGITNL", mi_CGIT, { { 2, 10 } } }, - { "CGRBE", mi_CGRB, { { 2, 8 } } }, - { "CGRBH", mi_CGRB, { { 2, 2 } } }, - { "CGRBL", mi_CGRB, { { 2, 4 } } }, - { "CGRBNE", mi_CGRB, { { 2, 6 } } }, - { "CGRBNH", mi_CGRB, { { 2, 12 } } }, - { "CGRBNL", mi_CGRB, { { 2, 10 } } }, - { "CGRJE", mi_CGRJ, { { 2, 8 } } }, - { "CGRJH", mi_CGRJ, { { 2, 2 } } }, - { "CGRJL", mi_CGRJ, { { 2, 4 } } }, - { "CGRJNE", mi_CGRJ, { { 2, 6 } } }, - { "CGRJNH", mi_CGRJ, { { 2, 12 } } }, - { "CGRJNL", mi_CGRJ, { { 2, 10 } } }, - { "CGRTE", mi_CGRT, { { 2, 8 } } }, - { "CGRTH", mi_CGRT, { { 2, 2 } } }, - { "CGRTL", mi_CGRT, { { 2, 4 } } }, - { "CGRTNE", mi_CGRT, { { 2, 6 } } }, - { "CGRTNH", mi_CGRT, { { 2, 12 } } }, - { "CGRTNL", mi_CGRT, { { 2, 10 } } }, - { "CIBE", mi_CIB, { { 2, 8 } } }, - { "CIBH", mi_CIB, { { 2, 2 } } }, - { "CIBL", mi_CIB, { { 2, 4 } } }, - { "CIBNE", mi_CIB, { { 2, 6 } } }, - { "CIBNH", mi_CIB, { { 2, 12 } } }, - { "CIBNL", mi_CIB, { { 2, 10 } } }, - { "CIJE", mi_CIJ, { { 2, 8 } } }, - { "CIJH", mi_CIJ, { { 2, 2 } } }, - { "CIJL", mi_CIJ, { { 2, 4 } } }, - { "CIJNE", mi_CIJ, { { 2, 6 } } }, - { "CIJNH", mi_CIJ, { { 2, 12 } } }, - { "CIJNL", mi_CIJ, { { 2, 10 } } }, - { "CITE", mi_CIT, { { 2, 8 } } }, - { "CITH", mi_CIT, { { 2, 2 } } }, - { "CITL", mi_CIT, { { 2, 4 } } }, - { "CITNE", mi_CIT, { { 2, 6 } } }, - { "CITNH", mi_CIT, { { 2, 12 } } }, - { "CITNL", mi_CIT, { { 2, 10 } } }, - { "CLFITE", mi_CLFIT, { { 2, 8 } } }, - { "CLFITH", mi_CLFIT, { { 2, 2 } } }, - { "CLFITL", mi_CLFIT, { { 2, 4 } } }, - { "CLFITNE", mi_CLFIT, { { 2, 6 } } }, - { "CLFITNH", mi_CLFIT, { { 2, 12 } } }, - { "CLFITNL", mi_CLFIT, { { 2, 10 } } }, - { "CLGIBE", mi_CLGIB, { { 2, 8 } } }, - { "CLGIBH", mi_CLGIB, { { 2, 2 } } }, - { "CLGIBL", mi_CLGIB, { { 2, 4 } } }, - { "CLGIBNE", mi_CLGIB, { { 2, 6 } } }, - { "CLGIBNH", mi_CLGIB, { { 2, 12 } } }, - { "CLGIBNL", mi_CLGIB, { { 2, 10 } } }, - { "CLGIJE", mi_CLGIJ, { { 2, 8 } } }, - { "CLGIJH", mi_CLGIJ, { { 2, 2 } } }, - { "CLGIJL", mi_CLGIJ, { { 2, 4 } } }, - { "CLGIJNE", mi_CLGIJ, { { 2, 6 } } }, - { "CLGIJNH", mi_CLGIJ, { { 2, 12 } } }, - { "CLGIJNL", mi_CLGIJ, { { 2, 10 } } }, - { "CLGITE", mi_CLGIT, { { 2, 8 } } }, - { "CLGITH", mi_CLGIT, { { 2, 2 } } }, - { "CLGITL", mi_CLGIT, { { 2, 4 } } }, - { "CLGITNE", mi_CLGIT, { { 2, 6 } } }, - { "CLGITNH", mi_CLGIT, { { 2, 12 } } }, - { "CLGITNL", mi_CLGIT, { { 2, 10 } } }, - { "CLGRBE", mi_CLGRB, { { 2, 8 } } }, - { "CLGRBH", mi_CLGRB, { { 2, 2 } } }, - { "CLGRBL", mi_CLGRB, { { 2, 4 } } }, - { "CLGRBNE", mi_CLGRB, { { 2, 6 } } }, - { "CLGRBNH", mi_CLGRB, { { 2, 12 } } }, - { "CLGRBNL", mi_CLGRB, { { 2, 10 } } }, - { "CLGRJE", mi_CLGRJ, { { 2, 8 } } }, - { "CLGRJH", mi_CLGRJ, { { 2, 2 } } }, - { "CLGRJL", mi_CLGRJ, { { 2, 4 } } }, - { "CLGRJNE", mi_CLGRJ, { { 2, 6 } } }, - { "CLGRJNH", mi_CLGRJ, { { 2, 12 } } }, - { "CLGRJNL", mi_CLGRJ, { { 2, 10 } } }, - { "CLGRTE", mi_CLGRT, { { 2, 8 } } }, - { "CLGRTH", mi_CLGRT, { { 2, 2 } } }, - { "CLGRTL", mi_CLGRT, { { 2, 4 } } }, - { "CLGRTNE", mi_CLGRT, { { 2, 6 } } }, - { "CLGRTNH", mi_CLGRT, { { 2, 12 } } }, - { "CLGRTNL", mi_CLGRT, { { 2, 10 } } }, - { "CLGTE", mi_CLGT, { { 1, 8 } } }, - { "CLGTH", mi_CLGT, { { 1, 2 } } }, - { "CLGTL", mi_CLGT, { { 1, 4 } } }, - { "CLGTNE", mi_CLGT, { { 1, 6 } } }, - { "CLGTNH", mi_CLGT, { { 1, 12 } } }, - { "CLGTNL", mi_CLGT, { { 1, 10 } } }, - { "CLIBE", mi_CLIB, { { 2, 8 } } }, - { "CLIBH", mi_CLIB, { { 2, 2 } } }, - { "CLIBL", mi_CLIB, { { 2, 4 } } }, - { "CLIBNE", mi_CLIB, { { 2, 6 } } }, - { "CLIBNH", mi_CLIB, { { 2, 12 } } }, - { "CLIBNL", mi_CLIB, { { 2, 10 } } }, - { "CLIJE", mi_CLIJ, { { 2, 8 } } }, - { "CLIJH", mi_CLIJ, { { 2, 2 } } }, - { "CLIJL", mi_CLIJ, { { 2, 4 } } }, - { "CLIJNE", mi_CLIJ, { { 2, 6 } } }, - { "CLIJNH", mi_CLIJ, { { 2, 12 } } }, - { "CLIJNL", mi_CLIJ, { { 2, 10 } } }, - { "CLRBE", mi_CLRB, { { 2, 8 } } }, - { "CLRBH", mi_CLRB, { { 2, 2 } } }, - { "CLRBL", mi_CLRB, { { 2, 4 } } }, - { "CLRBNE", mi_CLRB, { { 2, 6 } } }, - { "CLRBNH", mi_CLRB, { { 2, 12 } } }, - { "CLRBNL", mi_CLRB, { { 2, 10 } } }, - { "CLRJE", mi_CLRJ, { { 2, 8 } } }, - { "CLRJH", mi_CLRJ, { { 2, 2 } } }, - { "CLRJL", mi_CLRJ, { { 2, 4 } } }, - { "CLRJNE", mi_CLRJ, { { 2, 6 } } }, - { "CLRJNH", mi_CLRJ, { { 2, 12 } } }, - { "CLRJNL", mi_CLRJ, { { 2, 10 } } }, - { "CLRTE", mi_CLRT, { { 2, 8 } } }, - { "CLRTH", mi_CLRT, { { 2, 2 } } }, - { "CLRTL", mi_CLRT, { { 2, 4 } } }, - { "CLRTNE", mi_CLRT, { { 2, 6 } } }, - { "CLRTNH", mi_CLRT, { { 2, 12 } } }, - { "CLRTNL", mi_CLRT, { { 2, 10 } } }, - { "CLTE", mi_CLT, { { 1, 8 } } }, - { "CLTH", mi_CLT, { { 1, 2 } } }, - { "CLTL", mi_CLT, { { 1, 4 } } }, - { "CLTNE", mi_CLT, { { 1, 6 } } }, - { "CLTNH", mi_CLT, { { 1, 12 } } }, - { "CLTNL", mi_CLT, { { 1, 10 } } }, - { "CRBE", mi_CRB, { { 2, 8 } } }, - { "CRBH", mi_CRB, { { 2, 2 } } }, - { "CRBL", mi_CRB, { { 2, 4 } } }, - { "CRBNE", mi_CRB, { { 2, 6 } } }, - { "CRBNH", mi_CRB, { { 2, 12 } } }, - { "CRBNL", mi_CRB, { { 2, 10 } } }, - { "CRJE", mi_CRJ, { { 2, 8 } } }, - { "CRJH", mi_CRJ, { { 2, 2 } } }, - { "CRJL", mi_CRJ, { { 2, 4 } } }, - { "CRJNE", mi_CRJ, { { 2, 6 } } }, - { "CRJNH", mi_CRJ, { { 2, 12 } } }, - { "CRJNL", mi_CRJ, { { 2, 10 } } }, - { "CRTE", mi_CRT, { { 2, 8 } } }, - { "CRTH", mi_CRT, { { 2, 2 } } }, - { "CRTL", mi_CRT, { { 2, 4 } } }, - { "CRTNE", mi_CRT, { { 2, 6 } } }, - { "CRTNH", mi_CRT, { { 2, 12 } } }, - { "CRTNL", mi_CRT, { { 2, 10 } } }, - { "J", mi_BRC, { { 0, 15 } } }, - { "JAS", mi_BRAS, {} }, - { "JASL", mi_BRASL, {} }, - { "JC", mi_BRC, {} }, - { "JCT", mi_BRCT, {} }, - { "JCTG", mi_BRCTG, {} }, - { "JE", mi_BRC, { { 0, 8 } } }, - { "JH", mi_BRC, { { 0, 2 } } }, - { "JL", mi_BRC, { { 0, 4 } } }, - { "JLE", mi_BRCL, { { 0, 8 } } }, - { "JLH", mi_BRCL, { { 0, 2 } } }, - { "JLL", mi_BRCL, { { 0, 4 } } }, - { "JLM", mi_BRCL, { { 0, 4 } } }, - { "JLNE", mi_BRCL, { { 0, 7 } } }, - { "JLNH", mi_BRCL, { { 0, 13 } } }, - { "JLNL", mi_BRCL, { { 0, 11 } } }, - { "JLNM", mi_BRCL, { { 0, 11 } } }, - { "JLNO", mi_BRCL, { { 0, 14 } } }, - { "JLNOP", mi_BRCL, { { 0, 0 } } }, - { "JLNP", mi_BRCL, { { 0, 13 } } }, - { "JLNZ", mi_BRCL, { { 0, 7 } } }, - { "JLO", mi_BRCL, { { 0, 1 } } }, - { "JLP", mi_BRCL, { { 0, 2 } } }, - { "JLU", mi_BRCL, { { 0, 15 } } }, - { "JLZ", mi_BRCL, { { 0, 8 } } }, - { "JM", mi_BRC, { { 0, 4 } } }, - { "JNE", mi_BRC, { { 0, 7 } } }, - { "JNH", mi_BRC, { { 0, 13 } } }, - { "JNL", mi_BRC, { { 0, 11 } } }, - { "JNM", mi_BRC, { { 0, 11 } } }, - { "JNO", mi_BRC, { { 0, 14 } } }, - { "JNOP", mi_BRC, { { 0, 0 } } }, - { "JNP", mi_BRC, { { 0, 13 } } }, - { "JNZ", mi_BRC, { { 0, 7 } } }, - { "JO", mi_BRC, { { 0, 1 } } }, - { "JP", mi_BRC, { { 0, 2 } } }, - { "JXH", mi_BRXH, {} }, - { "JXHG", mi_BRXHG, {} }, - { "JXLE", mi_BRXLE, {} }, - { "JXLEG", mi_BRXLG, {} }, - { "JZ", mi_BRC, { { 0, 8 } } }, - { "LDRV", mi_VLLEBRZ, { { 2, 3 } } }, - { "LERV", mi_VLLEBRZ, { { 2, 6 } } }, - { "LHHR", mi_RISBHGZ, { { 2, 0 }, { 3, 31 } } }, - { "LHLR", mi_RISBHGZ, { { 2, 0 }, { 3, 31 }, { 4, 32 } } }, - { "LLCHHR", mi_RISBHGZ, { { 2, 24 }, { 3, 31 } } }, - { "LLCHLR", mi_RISBHGZ, { { 2, 24 }, { 3, 31 }, { 4, 32 } } }, - { "LLCLHR", mi_RISBLGZ, { { 2, 24 }, { 3, 31 }, { 4, 32 } } }, - { "LLHFR", mi_RISBLGZ, { { 2, 0 }, { 3, 31 }, { 4, 32 } } }, - { "LLHHHR", mi_RISBHGZ, { { 2, 16 }, { 3, 31 } } }, - { "LLHHLR", mi_RISBHGZ, { { 2, 16 }, { 3, 31 }, { 4, 32 } } }, - { "LLHLHR", mi_RISBLGZ, { { 2, 16 }, { 3, 31 }, { 4, 32 } } }, - { "LOCE", mi_LOC, { { 2, 8 } } }, - { "LOCFHE", mi_LOCFH, { { 2, 8 } } }, - { "LOCFHH", mi_LOCFH, { { 2, 2 } } }, - { "LOCFHL", mi_LOCFH, { { 2, 4 } } }, - { "LOCFHNE", mi_LOCFH, { { 2, 7 } } }, - { "LOCFHNH", mi_LOCFH, { { 2, 13 } } }, - { "LOCFHNL", mi_LOCFH, { { 2, 11 } } }, - { "LOCFHNO", mi_LOCFH, { { 2, 14 } } }, - { "LOCFHO", mi_LOCFH, { { 2, 1 } } }, - { "LOCFHRE", mi_LOCFHR, { { 2, 8 } } }, - { "LOCFHRH", mi_LOCFHR, { { 2, 2 } } }, - { "LOCFHRL", mi_LOCFHR, { { 2, 4 } } }, - { "LOCFHRNE", mi_LOCFHR, { { 2, 7 } } }, - { "LOCFHRNH", mi_LOCFHR, { { 2, 13 } } }, - { "LOCFHRNL", mi_LOCFHR, { { 2, 11 } } }, - { "LOCFHRNO", mi_LOCFHR, { { 2, 14 } } }, - { "LOCFHRO", mi_LOCFHR, { { 2, 1 } } }, - { "LOCGE", mi_LOCG, { { 2, 8 } } }, - { "LOCGH", mi_LOCG, { { 2, 2 } } }, - { "LOCGHIE", mi_LOCGHI, { { 2, 8 } } }, - { "LOCGHIH", mi_LOCGHI, { { 2, 2 } } }, - { "LOCGHIL", mi_LOCGHI, { { 2, 4 } } }, - { "LOCGHINE", mi_LOCGHI, { { 2, 7 } } }, - { "LOCGHINH", mi_LOCGHI, { { 2, 13 } } }, - { "LOCGHINL", mi_LOCGHI, { { 2, 11 } } }, - { "LOCGHINO", mi_LOCGHI, { { 2, 14 } } }, - { "LOCGHIO", mi_LOCGHI, { { 2, 1 } } }, - { "LOCGL", mi_LOCG, { { 2, 4 } } }, - { "LOCGNE", mi_LOCG, { { 2, 6 } } }, - { "LOCGNH", mi_LOCG, { { 2, 12 } } }, - { "LOCGNL", mi_LOCG, { { 2, 10 } } }, - { "LOCGNO", mi_LOCG, { { 2, 14 } } }, - { "LOCGO", mi_LOCG, { { 2, 1 } } }, - { "LOCGRE", mi_LOCGR, { { 2, 8 } } }, - { "LOCGRH", mi_LOCGR, { { 2, 2 } } }, - { "LOCGRL", mi_LOCGR, { { 2, 4 } } }, - { "LOCGRNE", mi_LOCGR, { { 2, 6 } } }, - { "LOCGRNH", mi_LOCGR, { { 2, 12 } } }, - { "LOCGRNL", mi_LOCGR, { { 2, 10 } } }, - { "LOCGRNO", mi_LOCGR, { { 2, 14 } } }, - { "LOCGRO", mi_LOCGR, { { 2, 1 } } }, - { "LOCH", mi_LOC, { { 2, 2 } } }, - { "LOCHHIE", mi_LOCHHI, { { 2, 8 } } }, - { "LOCHHIH", mi_LOCHHI, { { 2, 2 } } }, - { "LOCHHIL", mi_LOCHHI, { { 2, 4 } } }, - { "LOCHHINE", mi_LOCHHI, { { 2, 7 } } }, - { "LOCHHINH", mi_LOCHHI, { { 2, 13 } } }, - { "LOCHHINL", mi_LOCHHI, { { 2, 11 } } }, - { "LOCHHINO", mi_LOCHHI, { { 2, 14 } } }, - { "LOCHHIO", mi_LOCHHI, { { 2, 1 } } }, - { "LOCHIE", mi_LOCHI, { { 2, 8 } } }, - { "LOCHIH", mi_LOCHI, { { 2, 2 } } }, - { "LOCHIL", mi_LOCHI, { { 2, 4 } } }, - { "LOCHINE", mi_LOCHI, { { 2, 7 } } }, - { "LOCHINH", mi_LOCHI, { { 2, 13 } } }, - { "LOCHINL", mi_LOCHI, { { 2, 11 } } }, - { "LOCHINO", mi_LOCHI, { { 2, 14 } } }, - { "LOCHIO", mi_LOCHI, { { 2, 1 } } }, - { "LOCL", mi_LOC, { { 2, 4 } } }, - { "LOCNE", mi_LOC, { { 2, 6 } } }, - { "LOCNH", mi_LOC, { { 2, 12 } } }, - { "LOCNL", mi_LOC, { { 2, 10 } } }, - { "LOCNO", mi_LOC, { { 2, 14 } } }, - { "LOCO", mi_LOC, { { 2, 1 } } }, - { "LOCRE", mi_LOCR, { { 2, 8 } } }, - { "LOCRH", mi_LOCR, { { 2, 2 } } }, - { "LOCRL", mi_LOCR, { { 2, 4 } } }, - { "LOCRNE", mi_LOCR, { { 2, 6 } } }, - { "LOCRNH", mi_LOCR, { { 2, 12 } } }, - { "LOCRNL", mi_LOCR, { { 2, 10 } } }, - { "LOCRNO", mi_LOCR, { { 2, 14 } } }, - { "LOCRO", mi_LOCR, { { 2, 1 } } }, - { "NHHR", mi_RNSBG, { { 2, 0 }, { 3, 31 } } }, - { "NHLR", mi_RNSBG, { { 2, 0 }, { 3, 31 }, { 4, 32 } } }, - { "NLHR", mi_RNSBG, { { 2, 32 }, { 3, 63 }, { 4, 32 } } }, - { "NOP", mi_BC, { { 0, 0 } } }, - { "NOPR", mi_BCR, { { 0, 0 } } }, - { "NOTGR", mi_NOGRK, { { 2, 0 } } }, // operand with index 2 was omitted - { "NOTR", mi_NORK, { { 2, 0 } } }, // operand with index 2 was omitted - { "OHHR", mi_ROSBG, { { 2, 0 }, { 3, 31 } } }, - { "OHLR", mi_ROSBG, { { 2, 0 }, { 3, 31 }, { 4, 32 } } }, - { "OLHR", mi_ROSBG, { { 2, 32 }, { 3, 63 }, { 4, 32 } } }, - { "SELFHRE", mi_SELFHR, { { 3, 8 } } }, - { "SELFHRH", mi_SELFHR, { { 3, 2 } } }, - { "SELFHRL", mi_SELFHR, { { 3, 4 } } }, - { "SELFHRNE", mi_SELFHR, { { 3, 7 } } }, - { "SELFHRNH", mi_SELFHR, { { 3, 13 } } }, - { "SELFHRNL", mi_SELFHR, { { 3, 11 } } }, - { "SELFHRNO", mi_SELFHR, { { 3, 14 } } }, - { "SELFHRO", mi_SELFHR, { { 3, 1 } } }, - { "SELGRE", mi_SELGR, { { 3, 8 } } }, - { "SELGRH", mi_SELGR, { { 3, 2 } } }, - { "SELGRL", mi_SELGR, { { 3, 4 } } }, - { "SELGRNE", mi_SELGR, { { 3, 7 } } }, - { "SELGRNH", mi_SELGR, { { 3, 13 } } }, - { "SELGRNL", mi_SELGR, { { 3, 11 } } }, - { "SELGRNO", mi_SELGR, { { 3, 14 } } }, - { "SELGRO", mi_SELGR, { { 3, 1 } } }, - { "SELRE", mi_SELR, { { 3, 8 } } }, - { "SELRH", mi_SELR, { { 3, 2 } } }, - { "SELRL", mi_SELR, { { 3, 4 } } }, - { "SELRNE", mi_SELR, { { 3, 7 } } }, - { "SELRNH", mi_SELR, { { 3, 13 } } }, - { "SELRNL", mi_SELR, { { 3, 11 } } }, - { "SELRNO", mi_SELR, { { 3, 14 } } }, - { "SELRO", mi_SELR, { { 3, 1 } } }, - { "STDRV", mi_VSTEBRG, { { 2, 0 } } }, - { "STERV", mi_VSTEBRF, { { 2, 0 } } }, - { "STOCE", mi_STOC, { { 2, 8 } } }, - { "STOCFHE", mi_STOCFH, { { 2, 8 } } }, - { "STOCFHH", mi_STOCFH, { { 2, 2 } } }, - { "STOCFHL", mi_STOCFH, { { 2, 4 } } }, - { "STOCFHNE", mi_STOCFH, { { 2, 7 } } }, - { "STOCFHNH", mi_STOCFH, { { 2, 13 } } }, - { "STOCFHNL", mi_STOCFH, { { 2, 11 } } }, - { "STOCFHNO", mi_STOCFH, { { 2, 14 } } }, - { "STOCFHO", mi_STOCFH, { { 2, 1 } } }, - { "STOCGE", mi_STOCG, { { 2, 8 } } }, - { "STOCGH", mi_STOCG, { { 2, 2 } } }, - { "STOCGL", mi_STOCG, { { 2, 4 } } }, - { "STOCGNE", mi_STOCG, { { 2, 6 } } }, - { "STOCGNH", mi_STOCG, { { 2, 12 } } }, - { "STOCGNL", mi_STOCG, { { 2, 10 } } }, - { "STOCGNO", mi_STOCG, { { 2, 14 } } }, - { "STOCGO", mi_STOCG, { { 2, 1 } } }, - { "STOCH", mi_STOC, { { 2, 2 } } }, - { "STOCL", mi_STOC, { { 2, 4 } } }, - { "STOCNE", mi_STOC, { { 2, 6 } } }, - { "STOCNH", mi_STOC, { { 2, 12 } } }, - { "STOCNL", mi_STOC, { { 2, 10 } } }, - { "STOCNO", mi_STOC, { { 2, 14 } } }, - { "STOCO", mi_STOC, { { 2, 1 } } }, - { "VAB", mi_VA, { { 3, 0 } } }, - { "VACCB", mi_VACC, { { 3, 0 } } }, - { "VACCCQ", mi_VACCC, { { 3, 4 } } }, - { "VACCF", mi_VACC, { { 3, 2 } } }, - { "VACCG", mi_VACC, { { 3, 3 } } }, - { "VACCH", mi_VACC, { { 3, 1 } } }, - { "VACCQ", mi_VACC, { { 3, 4 } } }, - { "VACQ", mi_VAC, { { 3, 4 } } }, - { "VAF", mi_VA, { { 3, 2 } } }, - { "VAG", mi_VA, { { 3, 3 } } }, - { "VAH", mi_VA, { { 3, 1 } } }, - { "VAQ", mi_VA, { { 3, 4 } } }, - { "VAVGB", mi_VAVG, { { 3, 0 } } }, - { "VAVGF", mi_VAVG, { { 3, 2 } } }, - { "VAVGG", mi_VAVG, { { 3, 3 } } }, - { "VAVGH", mi_VAVG, { { 3, 1 } } }, - { "VAVGLB", mi_VAVGL, { { 3, 0 } } }, - { "VAVGLF", mi_VAVGL, { { 3, 2 } } }, - { "VAVGLG", mi_VAVGL, { { 3, 3 } } }, - { "VAVGLH", mi_VAVGL, { { 3, 1 } } }, - { "VCDG", mi_VCFPS, {} }, - { "VCDGB", mi_VCFPS, { { 2, 3 } } }, - { "VCDLG", mi_VCFPL, {} }, - { "VCDLGB", mi_VCFPL, { { 2, 3 } } }, - { "VCEFB", mi_VCFPS, { { 2, 0 } } }, - { "VCELFB", mi_VCFPL, { { 2, 0 } } }, - { "VCEQB", mi_VCEQ, { { 3, 0 }, { 4, 0 } } }, - { "VCEQBS", mi_VCEQ, { { 3, 0 }, { 4, 1 } } }, - { "VCEQF", mi_VCEQ, { { 3, 2 }, { 4, 0 } } }, - { "VCEQFS", mi_VCEQ, { { 3, 2 }, { 4, 1 } } }, - { "VCEQG", mi_VCEQ, { { 3, 3 }, { 4, 0 } } }, - { "VCEQGS", mi_VCEQ, { { 3, 3 }, { 4, 1 } } }, - { "VCEQH", mi_VCEQ, { { 3, 1 }, { 4, 0 } } }, - { "VCEQHS", mi_VCEQ, { { 3, 1 }, { 4, 1 } } }, - { "VCFEB", mi_VCSFP, { { 2, 2 } } }, - { "VCGD", mi_VCSFP, {} }, - { "VCGDB", mi_VCSFP, { { 2, 3 } } }, - { "VCHB", mi_VCH, { { 3, 0 }, { 4, 0 } } }, - { "VCHBS", mi_VCH, { { 3, 0 }, { 4, 1 } } }, - { "VCHF", mi_VCH, { { 3, 2 }, { 4, 0 } } }, - { "VCHFS", mi_VCH, { { 3, 2 }, { 4, 1 } } }, - { "VCHG", mi_VCH, { { 3, 3 }, { 4, 0 } } }, - { "VCHGS", mi_VCH, { { 3, 3 }, { 4, 1 } } }, - { "VCHH", mi_VCH, { { 3, 1 }, { 4, 0 } } }, - { "VCHHS", mi_VCH, { { 3, 1 }, { 4, 1 } } }, - { "VCHLB", mi_VCHL, { { 3, 0 }, { 4, 0 } } }, - { "VCHLBS", mi_VCHL, { { 3, 0 }, { 4, 1 } } }, - { "VCHLF", mi_VCHL, { { 3, 2 }, { 4, 0 } } }, - { "VCHLFS", mi_VCHL, { { 3, 2 }, { 4, 1 } } }, - { "VCHLG", mi_VCHL, { { 3, 3 }, { 4, 0 } } }, - { "VCHLGS", mi_VCHL, { { 3, 3 }, { 4, 1 } } }, - { "VCHLH", mi_VCHL, { { 3, 1 }, { 4, 0 } } }, - { "VCHLHS", mi_VCHL, { { 3, 1 }, { 4, 1 } } }, - { "VCLFEB", mi_VCLFP, { { 2, 0 } } }, - { "VCLGDB", mi_VCLGD, { { 2, 3 } } }, - { "VCLZB", mi_VCLZ, { { 2, 0 } } }, - { "VCLZF", mi_VCLZ, { { 2, 2 } } }, - { "VCLZG", mi_VCLZ, { { 2, 3 } } }, - { "VCLZH", mi_VCLZ, { { 2, 1 } } }, - { "VECB", mi_VEC, { { 2, 0 } } }, - { "VECF", mi_VEC, { { 2, 2 } } }, - { "VECG", mi_VEC, { { 2, 3 } } }, - { "VECH", mi_VEC, { { 2, 1 } } }, - { "VECLB", mi_VECL, { { 2, 0 } } }, - { "VECLF", mi_VECL, { { 2, 2 } } }, - { "VECLG", mi_VECL, { { 2, 3 } } }, - { "VECLH", mi_VECL, { { 2, 1 } } }, - { "VERIMB", mi_VERIM, { { 4, 0 } } }, - { "VERIMF", mi_VERIM, { { 4, 2 } } }, - { "VERIMG", mi_VERIM, { { 4, 3 } } }, - { "VERIMH", mi_VERIM, { { 4, 1 } } }, - { "VERLLB", mi_VERLL, { { 3, 0 } } }, - { "VERLLF", mi_VERLL, { { 3, 2 } } }, - { "VERLLG", mi_VERLL, { { 3, 3 } } }, - { "VERLLH", mi_VERLL, { { 3, 1 } } }, - { "VERLLVB", mi_VERLLV, { { 3, 0 } } }, - { "VERLLVF", mi_VERLLV, { { 3, 2 } } }, - { "VERLLVG", mi_VERLLV, { { 3, 3 } } }, - { "VERLLVH", mi_VERLLV, { { 3, 1 } } }, - { "VESLB", mi_VESL, { { 3, 0 } } }, - { "VESLF", mi_VESL, { { 3, 2 } } }, - { "VESLG", mi_VESL, { { 3, 3 } } }, - { "VESLH", mi_VESL, { { 3, 1 } } }, - { "VESLVB", mi_VESLV, { { 3, 0 } } }, - { "VESLVF", mi_VESLV, { { 3, 2 } } }, - { "VESLVG", mi_VESLV, { { 3, 3 } } }, - { "VESLVH", mi_VESLV, { { 3, 1 } } }, - { "VESRAB", mi_VESRA, { { 3, 0 } } }, - { "VESRAF", mi_VESRA, { { 3, 2 } } }, - { "VESRAG", mi_VESRA, { { 3, 3 } } }, - { "VESRAH", mi_VESRA, { { 3, 1 } } }, - { "VESRAVB", mi_VESRAV, { { 3, 0 } } }, - { "VESRAVF", mi_VESRAV, { { 3, 2 } } }, - { "VESRAVG", mi_VESRAV, { { 3, 3 } } }, - { "VESRAVH", mi_VESRAV, { { 3, 1 } } }, - { "VESRLB", mi_VESRL, { { 3, 0 } } }, - { "VESRLF", mi_VESRL, { { 3, 2 } } }, - { "VESRLG", mi_VESRL, { { 3, 3 } } }, - { "VESRLH", mi_VESRL, { { 3, 1 } } }, - { "VESRLVB", mi_VESRLV, { { 3, 0 } } }, - { "VESRLVF", mi_VESRLV, { { 3, 2 } } }, - { "VESRLVG", mi_VESRLV, { { 3, 3 } } }, - { "VESRLVH", mi_VESRLV, { { 3, 1 } } }, - { "VFADB", mi_VFA, { { 3, 3 }, { 4, 0 } } }, - { "VFAEB", mi_VFAE, { { 3, 0 } } }, - { "VFAEBS", mi_VFAE, { { 3, 0 } } }, // operand with index 4 ORed with 1 - { "VFAEF", mi_VFAE, { { 3, 2 } } }, - { "VFAEFS", mi_VFAE, { { 3, 2 } } }, // operand with index 4 ORed with 1 - { "VFAEH", mi_VFAE, { { 3, 1 } } }, - { "VFAEHS", mi_VFAE, { { 3, 1 } } }, // operand with index 4 ORed with 1 - { "VFAEZB", mi_VFAE, { { 3, 0 } } }, // operand with index 4 ORed with 2 - { "VFAEZBS", mi_VFAE, { { 3, 0 } } }, // operand with index 4 ORed with 3 - { "VFAEZF", mi_VFAE, { { 3, 2 } } }, // operand with index 4 ORed with 2 - { "VFAEZFS", mi_VFAE, { { 3, 2 } } }, // operand with index 4 ORed with 3 - { "VFAEZH", mi_VFAE, { { 3, 1 } } }, // operand with index 4 ORed with 2 - { "VFAEZHS", mi_VFAE, { { 3, 1 } } }, // operand with index 4 ORed with 3 - { "VFASB", mi_VFA, { { 3, 2 }, { 4, 0 } } }, - { "VFCEDB", mi_VFCE, { { 3, 3 }, { 4, 0 }, { 5, 0 } } }, - { "VFCEDBS", mi_VFCE, { { 3, 3 }, { 4, 0 }, { 5, 1 } } }, - { "VFCESB", mi_VFCE, { { 3, 2 }, { 4, 0 }, { 5, 0 } } }, - { "VFCESBS", mi_VFCE, { { 3, 2 }, { 4, 0 }, { 5, 1 } } }, - { "VFCHDB", mi_VFCH, { { 3, 3 }, { 4, 0 }, { 5, 0 } } }, - { "VFCHDBS", mi_VFCH, { { 3, 3 }, { 4, 0 }, { 5, 1 } } }, - { "VFCHEDB", mi_VFCHE, { { 3, 3 }, { 4, 0 }, { 5, 0 } } }, - { "VFCHEDBS", mi_VFCHE, { { 3, 3 }, { 4, 0 }, { 5, 1 } } }, - { "VFCHESB", mi_VFCHE, { { 3, 2 }, { 4, 0 }, { 5, 0 } } }, - { "VFCHESBS", mi_VFCHE, { { 3, 2 }, { 4, 0 }, { 5, 1 } } }, - { "VFCHSB", mi_VFCH, { { 3, 2 }, { 4, 0 }, { 5, 0 } } }, - { "VFCHSBS", mi_VFCH, { { 3, 2 }, { 4, 0 }, { 5, 1 } } }, - { "VFDDB", mi_VFD, { { 3, 3 }, { 4, 0 } } }, - { "VFDSB", mi_VFD, { { 3, 2 }, { 4, 0 } } }, - { "VFEEB", mi_VFEE, { { 3, 0 } } }, - { "VFEEBS", mi_VFEE, { { 3, 0 }, { 4, 1 } } }, - { "VFEEF", mi_VFEE, { { 3, 2 } } }, - { "VFEEFS", mi_VFEE, { { 3, 2 }, { 4, 1 } } }, - { "VFEEGS", mi_VFEE, { { 3, 1 }, { 4, 1 } } }, - { "VFEEH", mi_VFEE, { { 3, 1 } } }, - { "VFEEZB", mi_VFEE, { { 3, 0 }, { 4, 2 } } }, - { "VFEEZBS", mi_VFEE, { { 3, 0 }, { 4, 3 } } }, - { "VFEEZF", mi_VFEE, { { 3, 2 }, { 4, 2 } } }, - { "VFEEZFS", mi_VFEE, { { 3, 2 }, { 4, 3 } } }, - { "VFEEZH", mi_VFEE, { { 3, 1 }, { 4, 2 } } }, - { "VFEEZHS", mi_VFEE, { { 3, 1 }, { 4, 3 } } }, - { "VFENEB", mi_VFENE, { { 3, 0 } } }, - { "VFENEBS", mi_VFENE, { { 3, 0 }, { 4, 1 } } }, - { "VFENEF", mi_VFENE, { { 3, 2 } } }, - { "VFENEFS", mi_VFENE, { { 3, 2 }, { 4, 1 } } }, - { "VFENEH", mi_VFENE, { { 3, 1 } } }, - { "VFENEHS", mi_VFENE, { { 3, 1 }, { 4, 1 } } }, - { "VFENEZB", mi_VFENE, { { 3, 0 }, { 4, 2 } } }, - { "VFENEZBS", mi_VFENE, { { 3, 0 }, { 4, 3 } } }, - { "VFENEZF", mi_VFENE, { { 3, 2 }, { 4, 2 } } }, - { "VFENEZFS", mi_VFENE, { { 3, 2 }, { 4, 3 } } }, - { "VFENEZH", mi_VFENE, { { 3, 1 }, { 4, 2 } } }, - { "VFENEZHS", mi_VFENE, { { 3, 1 }, { 4, 3 } } }, - { "VFIDB", mi_VFI, { { 2, 3 } } }, - { "VFISB", mi_VFI, { { 2, 2 } } }, - { "VFKEDB", mi_VFCE, { { 3, 3 }, { 4, 4 }, { 5, 0 } } }, - { "VFKEDBS", mi_VFCE, { { 3, 3 }, { 4, 4 }, { 5, 1 } } }, - { "VFKESB", mi_VFCE, { { 3, 2 }, { 4, 4 }, { 5, 0 } } }, - { "VFKESBS", mi_VFCE, { { 3, 2 }, { 4, 4 }, { 5, 1 } } }, - { "VFKHDB", mi_VFCH, { { 3, 3 }, { 4, 4 }, { 5, 0 } } }, - { "VFKHDBS", mi_VFCH, { { 3, 3 }, { 4, 4 }, { 5, 1 } } }, - { "VFKHEDB", mi_VFCHE, { { 3, 3 }, { 4, 4 }, { 5, 0 } } }, - { "VFKHEDBS", mi_VFCHE, { { 3, 3 }, { 4, 4 }, { 5, 1 } } }, - { "VFKHESB", mi_VFCHE, { { 3, 2 }, { 4, 4 }, { 5, 0 } } }, - { "VFKHESBS", mi_VFCHE, { { 3, 2 }, { 4, 4 }, { 5, 1 } } }, - { "VFKHSB", mi_VFCH, { { 3, 2 }, { 4, 4 }, { 5, 0 } } }, - { "VFKHSBS", mi_VFCH, { { 3, 2 }, { 4, 4 }, { 5, 1 } } }, - { "VFLCDB", mi_VFPSO, { { 2, 3 }, { 3, 0 }, { 4, 0 } } }, - { "VFLCSB", mi_VFPSO, { { 2, 2 }, { 3, 0 }, { 4, 0 } } }, - { "VFLLS", mi_VFLL, { { 2, 2 }, { 3, 0 } } }, - { "VFLNDB", mi_VFPSO, { { 2, 3 }, { 3, 0 }, { 4, 1 } } }, - { "VFLNSB", mi_VFPSO, { { 2, 2 }, { 3, 0 }, { 4, 1 } } }, - { "VFLPDB", mi_VFPSO, { { 2, 3 }, { 3, 0 }, { 4, 2 } } }, - { "VFLPSB", mi_VFPSO, { { 2, 2 }, { 3, 0 }, { 4, 2 } } }, - { "VFLRD", mi_VFLR, { { 2, 3 } } }, - { "VFMADB", mi_VFMA, { { 4, 0 }, { 5, 3 } } }, - { "VFMASB", mi_VFMA, { { 4, 0 }, { 5, 2 } } }, - { "VFMAXDB", mi_VFMAX, { { 3, 3 }, { 4, 0 } } }, - { "VFMAXSB", mi_VFMAX, { { 3, 2 }, { 4, 0 } } }, - { "VFMDB", mi_VFM, { { 3, 3 }, { 4, 0 } } }, - { "VFMINDB", mi_VFMIN, { { 3, 3 }, { 4, 0 } } }, - { "VFMINSB", mi_VFMIN, { { 3, 2 }, { 4, 0 } } }, - { "VFMSB", mi_VFM, { { 3, 2 }, { 4, 0 } } }, - { "VFMSDB", mi_VFMS, { { 4, 0 }, { 5, 3 } } }, - { "VFMSSB", mi_VFMS, { { 4, 0 }, { 5, 2 } } }, - { "VFNMADB", mi_VFNMA, { { 4, 0 }, { 5, 3 } } }, - { "VFNMASB", mi_VFNMA, { { 4, 0 }, { 5, 2 } } }, - { "VFNMSDB", mi_VFNMS, { { 4, 0 }, { 5, 3 } } }, - { "VFNMSSB", mi_VFNMS, { { 4, 0 }, { 5, 2 } } }, - { "VFPSODB", mi_VFPSO, { { 2, 3 }, { 3, 0 } } }, - { "VFPSOSB", mi_VFPSO, { { 2, 2 }, { 3, 0 } } }, - { "VFSDB", mi_VFS, { { 2, 3 }, { 3, 0 } } }, - { "VFSQDB", mi_VFSQ, { { 2, 3 }, { 3, 0 } } }, - { "VFSQSB", mi_VFSQ, { { 2, 2 }, { 3, 0 } } }, - { "VFSSB", mi_VFS, { { 2, 2 }, { 3, 0 } } }, - { "VFTCIDB", mi_VFTCI, { { 3, 3 }, { 4, 0 } } }, - { "VFTCISB", mi_VFTCI, { { 3, 2 }, { 4, 0 } } }, - { "VGFMAB", mi_VGFMA, { { 4, 0 } } }, - { "VGFMAF", mi_VGFMA, { { 4, 2 } } }, - { "VGFMAG", mi_VGFMA, { { 4, 3 } } }, - { "VGFMAH", mi_VGFMA, { { 4, 1 } } }, - { "VGFMB", mi_VGFM, { { 3, 0 } } }, - { "VGFMF", mi_VGFM, { { 3, 2 } } }, - { "VGFMG", mi_VGFM, { { 3, 3 } } }, - { "VGFMH", mi_VGFM, { { 3, 1 } } }, - { "VGMB", mi_VGM, { { 3, 0 } } }, - { "VGMF", mi_VGM, { { 3, 2 } } }, - { "VGMG", mi_VGM, { { 3, 3 } } }, - { "VGMH", mi_VGM, { { 3, 1 } } }, - { "VISTRB", mi_VISTR, { { 3, 0 } } }, - { "VISTRBS", mi_VISTR, { { 3, 0 }, { 4, 1 } } }, - { "VISTRF", mi_VISTR, { { 3, 2 } } }, - { "VISTRFS", mi_VISTR, { { 3, 2 }, { 4, 1 } } }, - { "VISTRH", mi_VISTR, { { 3, 1 } } }, - { "VISTRHS", mi_VISTR, { { 3, 1 }, { 4, 1 } } }, - { "VLBRF", mi_VLBR, { { 2, 2 } } }, - { "VLBRG", mi_VLBR, { { 2, 3 } } }, - { "VLBRH", mi_VLBR, { { 2, 1 } } }, - { "VLBRQ", mi_VLBR, { { 2, 4 } } }, - { "VLBRREPF", mi_VLBRREP, { { 2, 2 } } }, - { "VLBRREPG", mi_VLBRREP, { { 2, 3 } } }, - { "VLBRREPH", mi_VLBRREP, { { 2, 1 } } }, - { "VLCB", mi_VLC, { { 2, 0 } } }, - { "VLCF", mi_VLC, { { 2, 2 } } }, - { "VLCG", mi_VLC, { { 2, 3 } } }, - { "VLCH", mi_VLC, { { 2, 1 } } }, - { "VLDE", mi_VFLL, {} }, - { "VLDEB", mi_VFLL, { { 2, 2 }, { 3, 0 } } }, - { "VLED", mi_VFLR, {} }, - { "VLEDB", mi_VFLR, { { 2, 3 } } }, - { "VLERF", mi_VLER, { { 2, 2 } } }, - { "VLERG", mi_VLER, { { 2, 3 } } }, - { "VLERH", mi_VLER, { { 2, 1 } } }, - { "VLGVB", mi_VLGV, { { 3, 0 } } }, - { "VLGVF", mi_VLGV, { { 3, 2 } } }, - { "VLGVG", mi_VLGV, { { 3, 3 } } }, - { "VLGVH", mi_VLGV, { { 3, 1 } } }, - { "VLLEBRZE", mi_VLLEBRZ, { { 2, 6 } } }, - { "VLLEBRZE", mi_VLLEBRZ, { { 2, 6 } } }, - { "VLLEBRZF", mi_VLLEBRZ, { { 2, 2 } } }, - { "VLLEBRZF", mi_VLLEBRZ, { { 2, 2 } } }, - { "VLLEBRZG", mi_VLLEBRZ, { { 2, 3 } } }, - { "VLLEBRZG", mi_VLLEBRZ, { { 2, 3 } } }, - { "VLLEBRZH", mi_VLLEBRZ, { { 2, 1 } } }, - { "VLLEBRZH", mi_VLLEBRZ, { { 2, 1 } } }, - { "VLLEZB", mi_VLLEZ, { { 2, 0 } } }, - { "VLLEZF", mi_VLLEZ, { { 2, 2 } } }, - { "VLLEZG", mi_VLLEZ, { { 2, 3 } } }, - { "VLLEZH", mi_VLLEZ, { { 2, 1 } } }, - { "VLLEZLF", mi_VLLEZ, { { 2, 6 } } }, - { "VLPB", mi_VLP, { { 2, 0 } } }, - { "VLPF", mi_VLP, { { 2, 2 } } }, - { "VLPG", mi_VLP, { { 2, 3 } } }, - { "VLPH", mi_VLP, { { 2, 1 } } }, - { "VLREPB", mi_VLREP, { { 2, 0 } } }, - { "VLREPF", mi_VLREP, { { 2, 2 } } }, - { "VLREPG", mi_VLREP, { { 2, 3 } } }, - { "VLREPH", mi_VLREP, { { 2, 1 } } }, - { "VLVGB", mi_VLVG, { { 3, 0 } } }, - { "VLVGF", mi_VLVG, { { 3, 2 } } }, - { "VLVGG", mi_VLVG, { { 3, 3 } } }, - { "VLVGH", mi_VLVG, { { 3, 1 } } }, - { "VMAEB", mi_VMAE, { { 4, 0 } } }, - { "VMAEF", mi_VMAE, { { 4, 2 } } }, - { "VMAEH", mi_VMAE, { { 4, 1 } } }, - { "VMAHB", mi_VMAH, { { 4, 0 } } }, - { "VMAHF", mi_VMAH, { { 4, 2 } } }, - { "VMAHH", mi_VMAH, { { 4, 1 } } }, - { "VMALB", mi_VMAL, { { 4, 0 } } }, - { "VMALEB", mi_VMALE, { { 4, 0 } } }, - { "VMALEF", mi_VMALE, { { 4, 2 } } }, - { "VMALEH", mi_VMALE, { { 4, 1 } } }, - { "VMALF", mi_VMAL, { { 4, 2 } } }, - { "VMALHB", mi_VMALH, { { 4, 0 } } }, - { "VMALHF", mi_VMALH, { { 4, 2 } } }, - { "VMALHH", mi_VMALH, { { 4, 1 } } }, - { "VMALHW", mi_VMAL, { { 4, 1 } } }, - { "VMALOB", mi_VMALO, { { 4, 0 } } }, - { "VMALOF", mi_VMALO, { { 4, 2 } } }, - { "VMALOH", mi_VMALO, { { 4, 1 } } }, - { "VMAOB", mi_VMAO, { { 4, 0 } } }, - { "VMAOF", mi_VMAO, { { 4, 2 } } }, - { "VMAOH", mi_VMAO, { { 4, 1 } } }, - { "VMEB", mi_VME, { { 3, 0 } } }, - { "VMEF", mi_VME, { { 3, 2 } } }, - { "VMEH", mi_VME, { { 3, 1 } } }, - { "VMHB", mi_VMH, { { 3, 0 } } }, - { "VMHF", mi_VMH, { { 3, 2 } } }, - { "VMHH", mi_VMH, { { 3, 1 } } }, - { "VMLB", mi_VML, { { 3, 0 } } }, - { "VMLEB", mi_VMLE, { { 3, 0 } } }, - { "VMLEF", mi_VMLE, { { 3, 2 } } }, - { "VMLEH", mi_VMLE, { { 3, 1 } } }, - { "VMLF", mi_VML, { { 3, 2 } } }, - { "VMLHB", mi_VMLH, { { 3, 0 } } }, - { "VMLHF", mi_VMLH, { { 3, 2 } } }, - { "VMLHH", mi_VMLH, { { 3, 1 } } }, - { "VMLHW", mi_VML, { { 3, 1 } } }, - { "VMLOB", mi_VMLO, { { 3, 0 } } }, - { "VMLOF", mi_VMLO, { { 3, 2 } } }, - { "VMLOH", mi_VMLO, { { 3, 1 } } }, - { "VMNB", mi_VMN, { { 3, 0 } } }, - { "VMNF", mi_VMN, { { 3, 2 } } }, - { "VMNG", mi_VMN, { { 3, 3 } } }, - { "VMNH", mi_VMN, { { 3, 1 } } }, - { "VMNLB", mi_VMNL, { { 3, 0 } } }, - { "VMNLF", mi_VMNL, { { 3, 2 } } }, - { "VMNLG", mi_VMNL, { { 3, 3 } } }, - { "VMNLH", mi_VMNL, { { 3, 1 } } }, - { "VMOB", mi_VMO, { { 3, 0 } } }, - { "VMOF", mi_VMO, { { 3, 2 } } }, - { "VMOH", mi_VMO, { { 3, 1 } } }, - { "VMRHB", mi_VMRH, { { 3, 0 } } }, - { "VMRHF", mi_VMRH, { { 3, 2 } } }, - { "VMRHG", mi_VMRH, { { 3, 3 } } }, - { "VMRHH", mi_VMRH, { { 3, 1 } } }, - { "VMRLB", mi_VMRL, { { 3, 0 } } }, - { "VMRLF", mi_VMRL, { { 3, 2 } } }, - { "VMRLG", mi_VMRL, { { 3, 3 } } }, - { "VMRLH", mi_VMRL, { { 3, 1 } } }, - { "VMSLG", mi_VMSL, { { 4, 3 } } }, - { "VMXB", mi_VMX, { { 3, 0 } } }, - { "VMXF", mi_VMX, { { 3, 2 } } }, - { "VMXG", mi_VMX, { { 3, 3 } } }, - { "VMXH", mi_VMX, { { 3, 1 } } }, - { "VMXLB", mi_VMXL, { { 3, 0 } } }, - { "VMXLF", mi_VMXL, { { 3, 2 } } }, - { "VMXLG", mi_VMXL, { { 3, 3 } } }, - { "VMXLH", mi_VMXL, { { 3, 1 } } }, - { "VNOT", mi_VNO, { { 2, 0 } } }, // VNO V1,V2,V2 (operand with index 2 replaced with 0 ) - { "VONE", mi_VGBM, { { 1, 65535 } } }, - { "VPKF", mi_VPK, { { 3, 2 } } }, - { "VPKG", mi_VPK, { { 3, 3 } } }, - { "VPKH", mi_VPK, { { 3, 1 } } }, - { "VPKLSF", mi_VPKLS, { { 3, 2 }, { 4, 0 } } }, - { "VPKLSFS", mi_VPKLS, { { 3, 2 }, { 4, 1 } } }, - { "VPKLSG", mi_VPKLS, { { 3, 3 }, { 4, 0 } } }, - { "VPKLSGS", mi_VPKLS, { { 3, 3 }, { 4, 1 } } }, - { "VPKLSH", mi_VPKLS, { { 3, 1 }, { 4, 0 } } }, - { "VPKLSHS", mi_VPKLS, { { 3, 1 }, { 4, 1 } } }, - { "VPKSF", mi_VPKS, { { 3, 2 }, { 4, 0 } } }, - { "VPKSFS", mi_VPKS, { { 3, 2 }, { 4, 1 } } }, - { "VPKSG", mi_VPKS, { { 3, 3 }, { 4, 0 } } }, - { "VPKSGS", mi_VPKS, { { 3, 3 }, { 4, 1 } } }, - { "VPKSH", mi_VPKS, { { 3, 1 }, { 4, 0 } } }, - { "VPKSHS", mi_VPKS, { { 3, 1 }, { 4, 1 } } }, - { "VPOPCTB", mi_VPOPCT, { { 2, 0 } } }, - { "VPOPCTF", mi_VPOPCT, { { 2, 2 } } }, - { "VPOPCTG", mi_VPOPCT, { { 2, 3 } } }, - { "VPOPCTH", mi_VPOPCT, { { 2, 1 } } }, - { "VREPB", mi_VREP, { { 3, 0 } } }, - { "VREPF", mi_VREP, { { 3, 2 } } }, - { "VREPG", mi_VREP, { { 3, 3 } } }, - { "VREPH", mi_VREP, { { 3, 1 } } }, - { "VREPIB", mi_VREPI, { { 2, 0 } } }, - { "VREPIF", mi_VREPI, { { 2, 2 } } }, - { "VREPIG", mi_VREPI, { { 2, 3 } } }, - { "VREPIH", mi_VREPI, { { 2, 1 } } }, - { "VSB", mi_VS, { { 3, 0 } } }, - { "VSBCBIQ", mi_VSBCBI, { { 4, 4 } } }, - { "VSBIQ", mi_VSBI, { { 4, 4 } } }, - { "VSCBIB", mi_VSCBI, { { 3, 0 } } }, - { "VSCBIF", mi_VSCBI, { { 3, 2 } } }, - { "VSCBIG", mi_VSCBI, { { 3, 3 } } }, - { "VSCBIH", mi_VSCBI, { { 3, 1 } } }, - { "VSCBIQ", mi_VSCBI, { { 3, 4 } } }, - { "VSEGB", mi_VSEG, { { 2, 0 } } }, - { "VSEGF", mi_VSEG, { { 2, 2 } } }, - { "VSEGH", mi_VSEG, { { 2, 1 } } }, - { "VSF", mi_VS, { { 3, 2 } } }, - { "VSG", mi_VS, { { 3, 3 } } }, - { "VSH", mi_VS, { { 3, 1 } } }, - { "VSQ", mi_VS, { { 3, 4 } } }, - { "VSTBRF", mi_VSTBR, { { 2, 2 } } }, - { "VSTBRG", mi_VSTBR, { { 2, 3 } } }, - { "VSTBRH", mi_VSTBR, { { 2, 1 } } }, - { "VSTBRQ", mi_VSTBR, { { 2, 4 } } }, - { "VSTERF", mi_VSTER, { { 2, 2 } } }, - { "VSTERG", mi_VSTER, { { 2, 3 } } }, - { "VSTERH", mi_VSTER, { { 2, 1 } } }, - { "VSTRCB", mi_VSTRC, { { 4, 0 } } }, - { "VSTRCBS", mi_VSTRC, { { 4, 0 } } }, // operand with index 5 ORed with 1 - { "VSTRCF", mi_VSTRC, { { 4, 2 } } }, - { "VSTRCFS", mi_VSTRC, { { 4, 2 } } }, // operand with index 5 ORed with 1 - { "VSTRCH", mi_VSTRC, { { 4, 1 } } }, - { "VSTRCHS", mi_VSTRC, { { 4, 1 } } }, // operand with index 5 ORed with 1 - { "VSTRCZB", mi_VSTRC, { { 4, 0 } } }, // operand with index 5 ORed with 2 - { "VSTRCZBS", mi_VSTRC, { { 4, 0 } } }, // operand with index 5 ORed with 3 - { "VSTRCZF", mi_VSTRC, { { 4, 2 } } }, // operand with index 5 ORed with 2 - { "VSTRCZFS", mi_VSTRC, { { 4, 2 } } }, // operand with index 5 ORed with 3 always OR - { "VSTRCZH", mi_VSTRC, { { 4, 1 } } }, // operand with index 5 ORed with 2 - { "VSTRCZHS", mi_VSTRC, { { 4, 1 } } }, // operand with index 5 ORed with 3 - { "VSTRSB", mi_VSTRS, { { 4, 0 } } }, - { "VSTRSF", mi_VSTRS, { { 4, 2 } } }, - { "VSTRSH", mi_VSTRS, { { 4, 1 } } }, - { "VSTRSZB", mi_VSTRS, { { 4, 0 }, { 5, 2 } } }, - { "VSUMB", mi_VSUM, { { 3, 0 } } }, - { "VSUMGF", mi_VSUMG, { { 3, 2 } } }, - { "VSUMGH", mi_VSUMG, { { 3, 1 } } }, - { "VSUMH", mi_VSUM, { { 3, 1 } } }, - { "VSUMQF", mi_VSUMQ, { { 3, 2 } } }, - { "VSUMQG", mi_VSUMQ, { { 3, 3 } } }, - { "VUPHB", mi_VUPH, { { 2, 0 } } }, - { "VUPHF", mi_VUPH, { { 2, 2 } } }, - { "VUPHH", mi_VUPH, { { 2, 1 } } }, - { "VUPLB", mi_VUPL, { { 2, 0 } } }, - { "VUPLF", mi_VUPL, { { 2, 2 } } }, - { "VUPLHB", mi_VUPLH, { { 2, 0 } } }, - { "VUPLHF", mi_VUPLH, { { 2, 2 } } }, - { "VUPLHG", mi_VUPLH, { { 2, 1 } } }, - { "VUPLHW", mi_VUPL, { { 2, 1 } } }, - { "VUPLLB", mi_VUPLL, { { 2, 0 } } }, - { "VUPLLF", mi_VUPLL, { { 2, 2 } } }, - { "VUPLLH", mi_VUPLL, { { 2, 1 } } }, - { "VZERO", mi_VGBM, { { 0, 1 } } }, - { "WCDGB", mi_VCFPS, { { 2, 2 } } }, - { "WCDGB", mi_VCFPS, { { 2, 3 } } }, // operand with index 3 ORed with 8 - { "WCDLGB", mi_VCFPL, { { 2, 3 } } }, // operand with index 3 ORed with 8 - { "WCEFB", mi_VCFPS, { { 2, 2 } } }, // operand with index 3 ORed with 8 - { "WCELFB", mi_VCFPL, { { 2, 2 } } }, // operand with index 3 ORed with 8 - { "WCFEB", mi_VCSFP, { { 2, 2 } } }, // operand with index 3 ORed with 8 - { "WCGDB", mi_VCSFP, { { 2, 3 } } }, // operand with index 3 ORed with 8 - { "WCLFEB", mi_VCLFP, { { 2, 2 } } }, // operand with index 3 ORed with 8 - { "WCLGDB", mi_VCLGD, { { 2, 3 } } }, // operand with index 3 ORed with 8 - { "WFADB", mi_VFA, { { 3, 3 }, { 4, 8 } } }, - { "WFASB", mi_VFA, { { 3, 2 }, { 4, 8 } } }, - { "WFAXB", mi_VFA, { { 3, 4 }, { 4, 8 } } }, - { "WFCDB", mi_WFC, { { 3, 3 }, { 4, 0 } } }, - { "WFCEDB", mi_VFCE, { { 3, 3 }, { 4, 8 }, { 5, 0 } } }, - { "WFCEDBS", mi_VFCE, { { 3, 3 }, { 4, 8 }, { 5, 1 } } }, - { "WFCESB", mi_VFCE, { { 3, 2 }, { 4, 8 }, { 5, 0 } } }, - { "WFCESBS", mi_VFCE, { { 3, 2 }, { 4, 8 }, { 5, 1 } } }, - { "WFCEXB", mi_VFCE, { { 3, 4 }, { 4, 8 }, { 5, 0 } } }, - { "WFCEXBS", mi_VFCE, { { 3, 4 }, { 4, 8 }, { 5, 1 } } }, - { "WFCHDB", mi_VFCH, { { 3, 3 }, { 4, 8 }, { 5, 0 } } }, - { "WFCHDBS", mi_VFCH, { { 3, 3 }, { 4, 8 }, { 5, 1 } } }, - { "WFCHEDB", mi_VFCHE, { { 3, 3 }, { 4, 8 }, { 5, 0 } } }, - { "WFCHEDBS", mi_VFCHE, { { 3, 3 }, { 4, 8 }, { 5, 1 } } }, - { "WFCHESB", mi_VFCHE, { { 3, 2 }, { 4, 8 }, { 5, 0 } } }, - { "WFCHESBS", mi_VFCHE, { { 3, 2 }, { 4, 8 }, { 5, 1 } } }, - { "WFCHEXB", mi_VFCHE, { { 3, 4 }, { 4, 8 }, { 5, 0 } } }, - { "WFCHEXBS", mi_VFCHE, { { 3, 4 }, { 4, 8 }, { 5, 1 } } }, - { "WFCHSB", mi_VFCH, { { 3, 2 }, { 4, 8 }, { 5, 0 } } }, - { "WFCHSBS", mi_VFCH, { { 3, 2 }, { 4, 8 }, { 5, 1 } } }, - { "WFCHXB", mi_VFCH, { { 3, 4 }, { 4, 8 }, { 5, 0 } } }, - { "WFCHXBS", mi_VFCH, { { 3, 4 }, { 4, 8 }, { 5, 1 } } }, - { "WFCSB", mi_WFC, { { 3, 2 }, { 4, 0 } } }, - { "WFCXB", mi_WFC, { { 3, 4 }, { 4, 0 } } }, - { "WFDDB", mi_VFD, { { 3, 3 }, { 4, 8 } } }, - { "WFDSB", mi_VFD, { { 3, 2 }, { 4, 8 } } }, - { "WFDXB", mi_VFD, { { 3, 4 }, { 4, 8 } } }, - { "WFIDB", mi_VFI, { { 2, 3 } } }, // operand with index 3 ORed with 8 - { "WFISB", mi_VFI, { { 2, 2 } } }, // operand with index 3 ORed with 8 - { "WFIXB", mi_VFI, { { 2, 4 } } }, // operand with index 3 ORed with 8 - { "WFKDB", mi_WFK, { { 3, 3 }, { 4, 0 } } }, - { "WFKEDB", mi_VFCE, { { 3, 3 }, { 4, 12 }, { 5, 0 } } }, - { "WFKEDBS", mi_VFCE, { { 3, 3 }, { 4, 12 }, { 5, 1 } } }, - { "WFKESB", mi_VFCE, { { 3, 2 }, { 4, 12 }, { 5, 0 } } }, - { "WFKESBS", mi_VFCE, { { 3, 2 }, { 4, 12 }, { 5, 1 } } }, - { "WFKEXB", mi_VFCE, { { 3, 4 }, { 4, 12 }, { 5, 0 } } }, - { "WFKEXBS", mi_VFCE, { { 3, 4 }, { 4, 12 }, { 5, 1 } } }, - { "WFKHDB", mi_VFCH, { { 3, 3 }, { 4, 12 }, { 5, 0 } } }, - { "WFKHDBS", mi_VFCH, { { 3, 3 }, { 4, 12 }, { 5, 1 } } }, - { "WFKHEDB", mi_VFCHE, { { 3, 3 }, { 4, 12 }, { 5, 0 } } }, - { "WFKHEDBS", mi_VFCHE, { { 3, 3 }, { 4, 12 }, { 5, 1 } } }, - { "WFKHESB", mi_VFCHE, { { 3, 2 }, { 4, 12 }, { 5, 0 } } }, - { "WFKHESBS", mi_VFCHE, { { 3, 2 }, { 4, 12 }, { 5, 1 } } }, - { "WFKHEXB", mi_VFCHE, { { 3, 4 }, { 4, 12 }, { 5, 0 } } }, - { "WFKHEXBS", mi_VFCHE, { { 3, 4 }, { 4, 12 }, { 5, 1 } } }, - { "WFKHSB", mi_VFCH, { { 3, 2 }, { 4, 12 }, { 5, 0 } } }, - { "WFKHSBS", mi_VFCH, { { 3, 2 }, { 4, 12 }, { 5, 1 } } }, - { "WFKHXB", mi_VFCH, { { 3, 4 }, { 4, 12 }, { 5, 0 } } }, - { "WFKHXBS", mi_VFCH, { { 3, 4 }, { 4, 12 }, { 5, 1 } } }, - { "WFKSB", mi_WFK, { { 3, 2 }, { 4, 0 } } }, - { "WFKXB", mi_WFK, { { 3, 4 }, { 4, 0 } } }, - { "WFLCDB", mi_VFPSO, { { 2, 3 }, { 3, 8 }, { 4, 0 } } }, - { "WFLCSB", mi_VFPSO, { { 2, 2 }, { 3, 8 }, { 4, 0 } } }, - { "WFLCXB", mi_VFPSO, { { 2, 4 }, { 3, 8 }, { 4, 0 } } }, - { "WFLLD", mi_VFLL, { { 2, 3 }, { 3, 8 } } }, - { "WFLLS", mi_VFLL, { { 2, 2 }, { 3, 8 } } }, - { "WFLNDB", mi_VFPSO, { { 2, 3 }, { 3, 8 }, { 4, 1 } } }, - { "WFLNSB", mi_VFPSO, { { 2, 2 }, { 3, 8 }, { 4, 1 } } }, - { "WFLNXB", mi_VFPSO, { { 2, 4 }, { 3, 8 }, { 4, 1 } } }, - { "WFLPDB", mi_VFPSO, { { 2, 3 }, { 3, 8 }, { 4, 2 } } }, - { "WFLPSB", mi_VFPSO, { { 2, 2 }, { 3, 8 }, { 4, 2 } } }, - { "WFLPXB", mi_VFPSO, { { 2, 4 }, { 3, 8 }, { 4, 2 } } }, - { "WFLRD", mi_VFLR, { { 2, 3 } } }, // operand with index 3 ORed with 8 - { "WFLRX", mi_VFLR, { { 2, 4 } } }, // operand with index 3 ORed with 8 - { "WFMADB", mi_VFMA, { { 4, 8 }, { 5, 3 } } }, - { "WFMASB", mi_VFMA, { { 4, 8 }, { 5, 2 } } }, - { "WFMAXB", mi_VFMA, { { 4, 8 }, { 5, 4 } } }, - { "WFMAXDB", mi_VFMAX, { { 3, 3 }, { 4, 8 } } }, - { "WFMAXSB", mi_VFMAX, { { 3, 2 }, { 4, 8 } } }, - { "WFMAXXB", mi_VFMAX, { { 3, 4 }, { 4, 8 } } }, - { "WFMDB", mi_VFM, { { 3, 3 }, { 4, 8 } } }, - { "WFMINDB", mi_VFMIN, { { 3, 3 }, { 4, 8 } } }, - { "WFMINSB", mi_VFMIN, { { 3, 2 }, { 4, 8 } } }, - { "WFMINXB", mi_VFMIN, { { 3, 4 }, { 4, 8 } } }, - { "WFMSB", mi_VFM, { { 3, 2 }, { 4, 8 } } }, - { "WFMSDB", mi_VFMS, { { 4, 8 }, { 5, 3 } } }, - { "WFMSSB", mi_VFMS, { { 4, 8 }, { 5, 2 } } }, - { "WFMSXB", mi_VFMS, { { 4, 8 }, { 5, 4 } } }, - { "WFMXB", mi_VFM, { { 3, 4 }, { 4, 8 } } }, - { "WFNMADB", mi_VFNMA, { { 4, 8 }, { 5, 3 } } }, - { "WFNMASB", mi_VFNMA, { { 4, 8 }, { 5, 2 } } }, - { "WFNMAXB", mi_VFNMA, { { 4, 8 }, { 5, 4 } } }, - { "WFNMSDB", mi_VFNMS, { { 4, 8 }, { 5, 3 } } }, - { "WFNMSSB", mi_VFNMS, { { 4, 8 }, { 5, 2 } } }, - { "WFNMSXB", mi_VFNMS, { { 4, 8 }, { 5, 4 } } }, - { "WFPSODB", mi_VFPSO, { { 2, 3 }, { 3, 8 } } }, - { "WFPSOSB", mi_VFPSO, { { 2, 2 }, { 3, 8 } } }, - { "WFPSOXB", mi_VFPSO, { { 2, 4 }, { 3, 8 } } }, - { "WFSDB", mi_VFS, { { 2, 3 }, { 3, 8 } } }, - { "WFSQDB", mi_VFSQ, { { 2, 3 }, { 3, 8 } } }, - { "WFSQSB", mi_VFSQ, { { 2, 2 }, { 3, 8 } } }, - { "WFSQXB", mi_VFSQ, { { 2, 4 }, { 3, 8 } } }, - { "WFSSB", mi_VFS, { { 2, 2 }, { 3, 8 } } }, - { "WFSXB", mi_VFS, { { 2, 4 }, { 3, 8 } } }, - { "WFTCIDB", mi_VFTCI, { { 3, 3 }, { 4, 8 } } }, - { "WFTCISB", mi_VFTCI, { { 3, 2 }, { 4, 8 } } }, - { "WFTCIXB", mi_VFTCI, { { 3, 4 }, { 4, 8 } } }, - { "WLDEB", mi_VFLL, { { 2, 2 }, { 3, 8 } } }, - { "WLEDB", mi_VFLR, { { 2, 3 } } }, // operand with index 3 ORed with 8 - { "XHHR", mi_RXSBG, { { 2, 0 }, { 3, 31 } } }, - { "XHHR", mi_RXSBG, { { 2, 0 }, { 3, 31 } } }, - { "XHLR", mi_RXSBG, { { 2, 0 }, { 3, 31 }, { 4, 32 } } }, - { "XLHR", mi_RXSBG, { { 2, 32 }, { 3, 63 }, { 4, 32 } } }, - { "XLHR", mi_RXSBG, { { 2, 32 }, { 3, 63 }, { 4, 32 } } }, + { "B", mi_BC, { { 0, 15 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BE", mi_BC, { { 0, 8 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BER", mi_BCR, { { 0, 8 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BH", mi_BC, { { 0, 2 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BHR", mi_BCR, { { 0, 2 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BI", mi_BIC, { { 0, 15 } }, UNI_SINCE_Z14 }, + { "BIE", mi_BIC, { { 0, 8 } }, UNI_SINCE_Z14 }, + { "BIH", mi_BIC, { { 0, 2 } }, UNI_SINCE_Z14 }, + { "BIL", mi_BIC, { { 0, 4 } }, UNI_SINCE_Z14 }, + { "BIM", mi_BIC, { { 0, 4 } }, UNI_SINCE_Z14 }, + { "BINE", mi_BIC, { { 0, 7 } }, UNI_SINCE_Z14 }, + { "BINH", mi_BIC, { { 0, 13 } }, UNI_SINCE_Z14 }, + { "BINL", mi_BIC, { { 0, 11 } }, UNI_SINCE_Z14 }, + { "BINM", mi_BIC, { { 0, 11 } }, UNI_SINCE_Z14 }, + { "BINO", mi_BIC, { { 0, 14 } }, UNI_SINCE_Z14 }, + { "BINP", mi_BIC, { { 0, 13 } }, UNI_SINCE_Z14 }, + { "BINZ", mi_BIC, { { 0, 7 } }, UNI_SINCE_Z14 }, + { "BIO", mi_BIC, { { 0, 1 } }, UNI_SINCE_Z14 }, + { "BIP", mi_BIC, { { 0, 2 } }, UNI_SINCE_Z14 }, + { "BIZ", mi_BIC, { { 0, 8 } }, UNI_SINCE_Z14 }, + { "BL", mi_BC, { { 0, 4 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BLR", mi_BCR, { { 0, 4 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BM", mi_BC, { { 0, 4 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BMR", mi_BCR, { { 0, 4 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNE", mi_BC, { { 0, 7 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNER", mi_BCR, { { 0, 7 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNH", mi_BC, { { 0, 13 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNHR", mi_BCR, { { 0, 13 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNL", mi_BC, { { 0, 11 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNLR", mi_BCR, { { 0, 11 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNM", mi_BC, { { 0, 11 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNMR", mi_BCR, { { 0, 11 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNO", mi_BC, { { 0, 14 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNOR", mi_BCR, { { 0, 14 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNP", mi_BC, { { 0, 13 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNPR", mi_BCR, { { 0, 13 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNZ", mi_BC, { { 0, 7 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BNZR", mi_BCR, { { 0, 7 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BO", mi_BC, { { 0, 1 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BOR", mi_BCR, { { 0, 1 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BP", mi_BC, { { 0, 2 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BPR", mi_BCR, { { 0, 2 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BR", mi_BCR, { { 0, 15 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BRE", mi_BRC, { { 0, 8 } }, UNI_ESA_SINCE_ZOP }, + { "BREL", mi_BRCL, { { 0, 8 } }, UNI_SINCE_ZOP }, + { "BRH", mi_BRC, { { 0, 2 } }, UNI_ESA_SINCE_ZOP }, + { "BRHL", mi_BRCL, { { 0, 2 } }, UNI_SINCE_ZOP }, + { "BRL", mi_BRC, { { 0, 4 } }, UNI_ESA_SINCE_ZOP }, + { "BRLL", mi_BRCL, { { 0, 4 } }, UNI_SINCE_ZOP }, + { "BRM", mi_BRC, { { 0, 4 } }, UNI_ESA_SINCE_ZOP }, + { "BRML", mi_BRCL, { { 0, 4 } }, UNI_SINCE_ZOP }, + { "BRNE", mi_BRC, { { 0, 7 } }, UNI_ESA_SINCE_ZOP }, + { "BRNEL", mi_BRCL, { { 0, 7 } }, UNI_SINCE_ZOP }, + { "BRNH", mi_BRC, { { 0, 13 } }, UNI_ESA_SINCE_ZOP }, + { "BRNHL", mi_BRCL, { { 0, 13 } }, UNI_SINCE_ZOP }, + { "BRNL", mi_BRC, { { 0, 11 } }, UNI_ESA_SINCE_ZOP }, + { "BRNLL", mi_BRCL, { { 0, 11 } }, UNI_SINCE_ZOP }, + { "BRNM", mi_BRC, { { 0, 11 } }, UNI_ESA_SINCE_ZOP }, + { "BRNML", mi_BRCL, { { 0, 11 } }, UNI_SINCE_ZOP }, + { "BRNO", mi_BRC, { { 0, 14 } }, UNI_ESA_SINCE_ZOP }, + { "BRNOL", mi_BRCL, { { 0, 14 } }, UNI_SINCE_ZOP }, + { "BRNP", mi_BRC, { { 0, 13 } }, UNI_ESA_SINCE_ZOP }, + { "BRNPL", mi_BRCL, { { 0, 13 } }, UNI_SINCE_ZOP }, + { "BRNZ", mi_BRC, { { 0, 7 } }, UNI_ESA_SINCE_ZOP }, + { "BRNZL", mi_BRCL, { { 0, 7 } }, UNI_SINCE_ZOP }, + { "BRO", mi_BRC, { { 0, 1 } }, UNI_ESA_SINCE_ZOP }, + { "BROL", mi_BRCL, { { 0, 1 } }, UNI_SINCE_ZOP }, + { "BRP", mi_BRC, { { 0, 2 } }, UNI_ESA_SINCE_ZOP }, + { "BRPL", mi_BRCL, { { 0, 2 } }, UNI_SINCE_ZOP }, + { "BRU", mi_BRC, { { 0, 15 } }, UNI_ESA_SINCE_ZOP }, + { "BRUL", mi_BRCL, { { 0, 15 } }, UNI_SINCE_ZOP }, + { "BRZ", mi_BRC, { { 0, 8 } }, UNI_ESA_SINCE_ZOP }, + { "BRZL", mi_BRCL, { { 0, 8 } }, UNI_SINCE_ZOP }, + { "BZ", mi_BC, { { 0, 8 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "BZR", mi_BCR, { { 0, 8 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "CGIBE", mi_CGIB, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CGIBH", mi_CGIB, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CGIBL", mi_CGIB, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CGIBNE", mi_CGIB, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CGIBNH", mi_CGIB, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CGIBNL", mi_CGIB, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CGIJE", mi_CGIJ, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CGIJH", mi_CGIJ, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CGIJL", mi_CGIJ, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CGIJNE", mi_CGIJ, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CGIJNH", mi_CGIJ, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CGIJNL", mi_CGIJ, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CGITE", mi_CGIT, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CGITH", mi_CGIT, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CGITL", mi_CGIT, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CGITNE", mi_CGIT, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CGITNH", mi_CGIT, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CGITNL", mi_CGIT, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CGRBE", mi_CGRB, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CGRBH", mi_CGRB, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CGRBL", mi_CGRB, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CGRBNE", mi_CGRB, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CGRBNH", mi_CGRB, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CGRBNL", mi_CGRB, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CGRJE", mi_CGRJ, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CGRJH", mi_CGRJ, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CGRJL", mi_CGRJ, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CGRJNE", mi_CGRJ, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CGRJNH", mi_CGRJ, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CGRJNL", mi_CGRJ, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CGRTE", mi_CGRT, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CGRTH", mi_CGRT, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CGRTL", mi_CGRT, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CGRTNE", mi_CGRT, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CGRTNH", mi_CGRT, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CGRTNL", mi_CGRT, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CIBE", mi_CIB, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CIBH", mi_CIB, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CIBL", mi_CIB, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CIBNE", mi_CIB, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CIBNH", mi_CIB, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CIBNL", mi_CIB, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CIJE", mi_CIJ, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CIJH", mi_CIJ, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CIJL", mi_CIJ, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CIJNE", mi_CIJ, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CIJNH", mi_CIJ, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CIJNL", mi_CIJ, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CITE", mi_CIT, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CITH", mi_CIT, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CITL", mi_CIT, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CITNE", mi_CIT, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CITNH", mi_CIT, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CITNL", mi_CIT, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLFITE", mi_CLFIT, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLFITH", mi_CLFIT, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLFITL", mi_CLFIT, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLFITNE", mi_CLFIT, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLFITNH", mi_CLFIT, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLFITNL", mi_CLFIT, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLGIBE", mi_CLGIB, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLGIBH", mi_CLGIB, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLGIBL", mi_CLGIB, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLGIBNE", mi_CLGIB, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLGIBNH", mi_CLGIB, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLGIBNL", mi_CLGIB, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLGIJE", mi_CLGIJ, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLGIJH", mi_CLGIJ, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLGIJL", mi_CLGIJ, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLGIJNE", mi_CLGIJ, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLGIJNH", mi_CLGIJ, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLGIJNL", mi_CLGIJ, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLGITE", mi_CLGIT, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLGITH", mi_CLGIT, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLGITL", mi_CLGIT, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLGITNE", mi_CLGIT, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLGITNH", mi_CLGIT, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLGITNL", mi_CLGIT, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLGRBE", mi_CLGRB, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLGRBH", mi_CLGRB, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLGRBL", mi_CLGRB, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLGRBNE", mi_CLGRB, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLGRBNH", mi_CLGRB, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLGRBNL", mi_CLGRB, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLGRJE", mi_CLGRJ, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLGRJH", mi_CLGRJ, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLGRJL", mi_CLGRJ, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLGRJNE", mi_CLGRJ, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLGRJNH", mi_CLGRJ, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLGRJNL", mi_CLGRJ, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLGRTE", mi_CLGRT, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLGRTH", mi_CLGRT, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLGRTL", mi_CLGRT, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLGRTNE", mi_CLGRT, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLGRTNH", mi_CLGRT, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLGRTNL", mi_CLGRT, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLGTE", mi_CLGT, { { 1, 8 } }, UNI_SINCE_Z12 }, + { "CLGTH", mi_CLGT, { { 1, 2 } }, UNI_SINCE_Z12 }, + { "CLGTL", mi_CLGT, { { 1, 4 } }, UNI_SINCE_Z12 }, + { "CLGTNE", mi_CLGT, { { 1, 6 } }, UNI_SINCE_Z12 }, + { "CLGTNH", mi_CLGT, { { 1, 12 } }, UNI_SINCE_Z12 }, + { "CLGTNL", mi_CLGT, { { 1, 10 } }, UNI_SINCE_Z12 }, + { "CLIBE", mi_CLIB, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLIBH", mi_CLIB, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLIBL", mi_CLIB, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLIBNE", mi_CLIB, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLIBNH", mi_CLIB, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLIBNL", mi_CLIB, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLIJE", mi_CLIJ, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLIJH", mi_CLIJ, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLIJL", mi_CLIJ, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLIJNE", mi_CLIJ, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLIJNH", mi_CLIJ, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLIJNL", mi_CLIJ, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLRBE", mi_CLRB, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLRBH", mi_CLRB, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLRBL", mi_CLRB, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLRBNE", mi_CLRB, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLRBNH", mi_CLRB, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLRBNL", mi_CLRB, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLRJE", mi_CLRJ, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLRJH", mi_CLRJ, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLRJL", mi_CLRJ, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLRJNE", mi_CLRJ, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLRJNH", mi_CLRJ, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLRJNL", mi_CLRJ, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLRTE", mi_CLRT, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CLRTH", mi_CLRT, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CLRTL", mi_CLRT, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CLRTNE", mi_CLRT, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CLRTNH", mi_CLRT, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CLRTNL", mi_CLRT, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CLTE", mi_CLT, { { 1, 8 } }, UNI_SINCE_Z12 }, + { "CLTH", mi_CLT, { { 1, 2 } }, UNI_SINCE_Z12 }, + { "CLTL", mi_CLT, { { 1, 4 } }, UNI_SINCE_Z12 }, + { "CLTNE", mi_CLT, { { 1, 6 } }, UNI_SINCE_Z12 }, + { "CLTNH", mi_CLT, { { 1, 12 } }, UNI_SINCE_Z12 }, + { "CLTNL", mi_CLT, { { 1, 10 } }, UNI_SINCE_Z12 }, + { "CRBE", mi_CRB, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CRBH", mi_CRB, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CRBL", mi_CRB, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CRBNE", mi_CRB, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CRBNH", mi_CRB, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CRBNL", mi_CRB, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CRJE", mi_CRJ, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CRJH", mi_CRJ, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CRJL", mi_CRJ, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CRJNE", mi_CRJ, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CRJNH", mi_CRJ, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CRJNL", mi_CRJ, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "CRTE", mi_CRT, { { 2, 8 } }, UNI_SINCE_Z10 }, + { "CRTH", mi_CRT, { { 2, 2 } }, UNI_SINCE_Z10 }, + { "CRTL", mi_CRT, { { 2, 4 } }, UNI_SINCE_Z10 }, + { "CRTNE", mi_CRT, { { 2, 6 } }, UNI_SINCE_Z10 }, + { "CRTNH", mi_CRT, { { 2, 12 } }, UNI_SINCE_Z10 }, + { "CRTNL", mi_CRT, { { 2, 10 } }, UNI_SINCE_Z10 }, + { "J", mi_BRC, { { 0, 15 } }, UNI_ESA_SINCE_ZOP }, + { "JAS", mi_BRAS, {}, UNI_ESA_SINCE_ZOP }, + { "JASL", mi_BRASL, {}, UNI_ESA_SINCE_ZOP }, + { "JC", mi_BRC, {}, UNI_ESA_SINCE_ZOP }, + { "JCT", mi_BRCT, {}, UNI_ESA_SINCE_ZOP }, + { "JCTG", mi_BRCTG, {}, UNI_SINCE_ZOP }, + { "JE", mi_BRC, { { 0, 8 } }, UNI_ESA_SINCE_ZOP }, + { "JH", mi_BRC, { { 0, 2 } }, UNI_ESA_SINCE_ZOP }, + { "JL", mi_BRC, { { 0, 4 } }, UNI_ESA_SINCE_ZOP }, + { "JLE", mi_BRCL, { { 0, 8 } }, UNI_SINCE_ZOP }, + { "JLH", mi_BRCL, { { 0, 2 } }, UNI_SINCE_ZOP }, + { "JLL", mi_BRCL, { { 0, 4 } }, UNI_SINCE_ZOP }, + { "JLM", mi_BRCL, { { 0, 4 } }, UNI_SINCE_ZOP }, + { "JLNE", mi_BRCL, { { 0, 7 } }, UNI_SINCE_ZOP }, + { "JLNH", mi_BRCL, { { 0, 13 } }, UNI_SINCE_ZOP }, + { "JLNL", mi_BRCL, { { 0, 11 } }, UNI_SINCE_ZOP }, + { "JLNM", mi_BRCL, { { 0, 11 } }, UNI_SINCE_ZOP }, + { "JLNO", mi_BRCL, { { 0, 14 } }, UNI_SINCE_ZOP }, + { "JLNOP", mi_BRCL, { { 0, 0 } }, UNI_ESA_SINCE_ZOP }, + { "JLNP", mi_BRCL, { { 0, 13 } }, UNI_SINCE_ZOP }, + { "JLNZ", mi_BRCL, { { 0, 7 } }, UNI_SINCE_ZOP }, + { "JLO", mi_BRCL, { { 0, 1 } }, UNI_SINCE_ZOP }, + { "JLP", mi_BRCL, { { 0, 2 } }, UNI_SINCE_ZOP }, + { "JLU", mi_BRCL, { { 0, 15 } }, UNI_SINCE_ZOP }, + { "JLZ", mi_BRCL, { { 0, 8 } }, UNI_SINCE_ZOP }, + { "JM", mi_BRC, { { 0, 4 } }, UNI_ESA_SINCE_ZOP }, + { "JNE", mi_BRC, { { 0, 7 } }, UNI_ESA_SINCE_ZOP }, + { "JNH", mi_BRC, { { 0, 13 } }, UNI_ESA_SINCE_ZOP }, + { "JNL", mi_BRC, { { 0, 11 } }, UNI_ESA_SINCE_ZOP }, + { "JNM", mi_BRC, { { 0, 11 } }, UNI_ESA_SINCE_ZOP }, + { "JNO", mi_BRC, { { 0, 14 } }, UNI_ESA_SINCE_ZOP }, + { "JNOP", mi_BRC, { { 0, 0 } }, UNI_ESA_SINCE_ZOP }, + { "JNP", mi_BRC, { { 0, 13 } }, UNI_ESA_SINCE_ZOP }, + { "JNZ", mi_BRC, { { 0, 7 } }, UNI_ESA_SINCE_ZOP }, + { "JO", mi_BRC, { { 0, 1 } }, UNI_ESA_SINCE_ZOP }, + { "JP", mi_BRC, { { 0, 2 } }, UNI_ESA_SINCE_ZOP }, + { "JXH", mi_BRXH, {}, UNI_ESA_SINCE_ZOP }, + { "JXHG", mi_BRXHG, {}, UNI_SINCE_ZOP }, + { "JXLE", mi_BRXLE, {}, UNI_ESA_SINCE_ZOP }, + { "JXLEG", mi_BRXLG, {}, UNI_SINCE_ZOP }, + { "JZ", mi_BRC, { { 0, 8 } }, UNI_ESA_SINCE_ZOP }, + { "LDRV", mi_VLLEBRZ, { { 2, 3 } }, UNI_SINCE_Z15 }, + { "LERV", mi_VLLEBRZ, { { 2, 6 } }, UNI_SINCE_Z15 }, + { "LHHR", mi_RISBHGZ, { { 2, 0 }, { 3, 31 } }, UNI_SINCE_Z11 }, + { "LHLR", mi_RISBHGZ, { { 2, 0 }, { 3, 31 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "LLCHHR", mi_RISBHGZ, { { 2, 24 }, { 3, 31 } }, UNI_SINCE_Z11 }, + { "LLCHLR", mi_RISBHGZ, { { 2, 24 }, { 3, 31 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "LLCLHR", mi_RISBLGZ, { { 2, 24 }, { 3, 31 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "LLHFR", mi_RISBLGZ, { { 2, 0 }, { 3, 31 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "LLHHHR", mi_RISBHGZ, { { 2, 16 }, { 3, 31 } }, UNI_SINCE_Z11 }, + { "LLHHLR", mi_RISBHGZ, { { 2, 16 }, { 3, 31 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "LLHLHR", mi_RISBLGZ, { { 2, 16 }, { 3, 31 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "LOCE", mi_LOC, { { 2, 8 } }, UNI_SINCE_Z11 }, + { "LOCFHE", mi_LOCFH, { { 2, 8 } }, UNI_SINCE_Z13 }, + { "LOCFHH", mi_LOCFH, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "LOCFHL", mi_LOCFH, { { 2, 4 } }, UNI_SINCE_Z13 }, + { "LOCFHNE", mi_LOCFH, { { 2, 7 } }, UNI_SINCE_Z13 }, + { "LOCFHNH", mi_LOCFH, { { 2, 13 } }, UNI_SINCE_Z13 }, + { "LOCFHNL", mi_LOCFH, { { 2, 11 } }, UNI_SINCE_Z13 }, + { "LOCFHNO", mi_LOCFH, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "LOCFHO", mi_LOCFH, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "LOCFHRE", mi_LOCFHR, { { 2, 8 } }, UNI_SINCE_Z13 }, + { "LOCFHRH", mi_LOCFHR, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "LOCFHRL", mi_LOCFHR, { { 2, 4 } }, UNI_SINCE_Z13 }, + { "LOCFHRNE", mi_LOCFHR, { { 2, 7 } }, UNI_SINCE_Z13 }, + { "LOCFHRNH", mi_LOCFHR, { { 2, 13 } }, UNI_SINCE_Z13 }, + { "LOCFHRNL", mi_LOCFHR, { { 2, 11 } }, UNI_SINCE_Z13 }, + { "LOCFHRNO", mi_LOCFHR, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "LOCFHRO", mi_LOCFHR, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "LOCGE", mi_LOCG, { { 2, 8 } }, UNI_SINCE_Z11 }, + { "LOCGH", mi_LOCG, { { 2, 2 } }, UNI_SINCE_Z11 }, + { "LOCGHIE", mi_LOCGHI, { { 2, 8 } }, UNI_SINCE_Z13 }, + { "LOCGHIH", mi_LOCGHI, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "LOCGHIL", mi_LOCGHI, { { 2, 4 } }, UNI_SINCE_Z13 }, + { "LOCGHINE", mi_LOCGHI, { { 2, 7 } }, UNI_SINCE_Z13 }, + { "LOCGHINH", mi_LOCGHI, { { 2, 13 } }, UNI_SINCE_Z13 }, + { "LOCGHINL", mi_LOCGHI, { { 2, 11 } }, UNI_SINCE_Z13 }, + { "LOCGHINO", mi_LOCGHI, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "LOCGHIO", mi_LOCGHI, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "LOCGL", mi_LOCG, { { 2, 4 } }, UNI_SINCE_Z11 }, + { "LOCGNE", mi_LOCG, { { 2, 6 } }, UNI_SINCE_Z11 }, + { "LOCGNH", mi_LOCG, { { 2, 12 } }, UNI_SINCE_Z11 }, + { "LOCGNL", mi_LOCG, { { 2, 10 } }, UNI_SINCE_Z11 }, + { "LOCGNO", mi_LOCG, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "LOCGO", mi_LOCG, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "LOCGRE", mi_LOCGR, { { 2, 8 } }, UNI_SINCE_Z11 }, + { "LOCGRH", mi_LOCGR, { { 2, 2 } }, UNI_SINCE_Z11 }, + { "LOCGRL", mi_LOCGR, { { 2, 4 } }, UNI_SINCE_Z11 }, + { "LOCGRNE", mi_LOCGR, { { 2, 6 } }, UNI_SINCE_Z11 }, + { "LOCGRNH", mi_LOCGR, { { 2, 12 } }, UNI_SINCE_Z11 }, + { "LOCGRNL", mi_LOCGR, { { 2, 10 } }, UNI_SINCE_Z11 }, + { "LOCGRNO", mi_LOCGR, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "LOCGRO", mi_LOCGR, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "LOCH", mi_LOC, { { 2, 2 } }, UNI_SINCE_Z11 }, + { "LOCHHIE", mi_LOCHHI, { { 2, 8 } }, UNI_SINCE_Z13 }, + { "LOCHHIH", mi_LOCHHI, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "LOCHHIL", mi_LOCHHI, { { 2, 4 } }, UNI_SINCE_Z13 }, + { "LOCHHINE", mi_LOCHHI, { { 2, 7 } }, UNI_SINCE_Z13 }, + { "LOCHHINH", mi_LOCHHI, { { 2, 13 } }, UNI_SINCE_Z13 }, + { "LOCHHINL", mi_LOCHHI, { { 2, 11 } }, UNI_SINCE_Z13 }, + { "LOCHHINO", mi_LOCHHI, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "LOCHHIO", mi_LOCHHI, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "LOCHIE", mi_LOCHI, { { 2, 8 } }, UNI_SINCE_Z13 }, + { "LOCHIH", mi_LOCHI, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "LOCHIL", mi_LOCHI, { { 2, 4 } }, UNI_SINCE_Z13 }, + { "LOCHINE", mi_LOCHI, { { 2, 7 } }, UNI_SINCE_Z13 }, + { "LOCHINH", mi_LOCHI, { { 2, 13 } }, UNI_SINCE_Z13 }, + { "LOCHINL", mi_LOCHI, { { 2, 11 } }, UNI_SINCE_Z13 }, + { "LOCHINO", mi_LOCHI, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "LOCHIO", mi_LOCHI, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "LOCL", mi_LOC, { { 2, 4 } }, UNI_SINCE_Z11 }, + { "LOCNE", mi_LOC, { { 2, 6 } }, UNI_SINCE_Z11 }, + { "LOCNH", mi_LOC, { { 2, 12 } }, UNI_SINCE_Z11 }, + { "LOCNL", mi_LOC, { { 2, 10 } }, UNI_SINCE_Z11 }, + { "LOCNO", mi_LOC, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "LOCO", mi_LOC, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "LOCRE", mi_LOCR, { { 2, 8 } }, UNI_SINCE_Z11 }, + { "LOCRH", mi_LOCR, { { 2, 2 } }, UNI_SINCE_Z11 }, + { "LOCRL", mi_LOCR, { { 2, 4 } }, UNI_SINCE_Z11 }, + { "LOCRNE", mi_LOCR, { { 2, 6 } }, UNI_SINCE_Z11 }, + { "LOCRNH", mi_LOCR, { { 2, 12 } }, UNI_SINCE_Z11 }, + { "LOCRNL", mi_LOCR, { { 2, 10 } }, UNI_SINCE_Z11 }, + { "LOCRNO", mi_LOCR, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "LOCRO", mi_LOCR, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "NHHR", mi_RNSBG, { { 2, 0 }, { 3, 31 } }, UNI_SINCE_Z11 }, + { "NHLR", mi_RNSBG, { { 2, 0 }, { 3, 31 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "NLHR", mi_RNSBG, { { 2, 32 }, { 3, 63 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "NOP", mi_BC, { { 0, 0 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "NOPR", mi_BCR, { { 0, 0 } }, UNI_ESA_XA_370_DOS_SINCE_ZOP }, + { "NOTGR", mi_NOGRK, { { 2, 0 } }, UNI_SINCE_Z15 }, + { "NOTR", mi_NORK, { { 2, 0 } }, UNI_SINCE_Z15 }, + { "OHHR", mi_ROSBG, { { 2, 0 }, { 3, 31 } }, UNI_SINCE_Z11 }, + { "OHLR", mi_ROSBG, { { 2, 0 }, { 3, 31 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "OLHR", mi_ROSBG, { { 2, 32 }, { 3, 63 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "SELFHRE", mi_SELFHR, { { 3, 8 } }, UNI_SINCE_Z15 }, + { "SELFHRH", mi_SELFHR, { { 3, 2 } }, UNI_SINCE_Z15 }, + { "SELFHRL", mi_SELFHR, { { 3, 4 } }, UNI_SINCE_Z15 }, + { "SELFHRNE", mi_SELFHR, { { 3, 7 } }, UNI_SINCE_Z15 }, + { "SELFHRNH", mi_SELFHR, { { 3, 13 } }, UNI_SINCE_Z15 }, + { "SELFHRNL", mi_SELFHR, { { 3, 11 } }, UNI_SINCE_Z15 }, + { "SELFHRNO", mi_SELFHR, { { 3, 14 } }, UNI_SINCE_Z15 }, + { "SELFHRO", mi_SELFHR, { { 3, 1 } }, UNI_SINCE_Z15 }, + { "SELGRE", mi_SELGR, { { 3, 8 } }, UNI_SINCE_Z15 }, + { "SELGRH", mi_SELGR, { { 3, 2 } }, UNI_SINCE_Z15 }, + { "SELGRL", mi_SELGR, { { 3, 4 } }, UNI_SINCE_Z15 }, + { "SELGRNE", mi_SELGR, { { 3, 7 } }, UNI_SINCE_Z15 }, + { "SELGRNH", mi_SELGR, { { 3, 13 } }, UNI_SINCE_Z15 }, + { "SELGRNL", mi_SELGR, { { 3, 11 } }, UNI_SINCE_Z15 }, + { "SELGRNO", mi_SELGR, { { 3, 14 } }, UNI_SINCE_Z15 }, + { "SELGRO", mi_SELGR, { { 3, 1 } }, UNI_SINCE_Z15 }, + { "SELRE", mi_SELR, { { 3, 8 } }, UNI_SINCE_Z15 }, + { "SELRH", mi_SELR, { { 3, 2 } }, UNI_SINCE_Z15 }, + { "SELRL", mi_SELR, { { 3, 4 } }, UNI_SINCE_Z15 }, + { "SELRNE", mi_SELR, { { 3, 7 } }, UNI_SINCE_Z15 }, + { "SELRNH", mi_SELR, { { 3, 13 } }, UNI_SINCE_Z15 }, + { "SELRNL", mi_SELR, { { 3, 11 } }, UNI_SINCE_Z15 }, + { "SELRNO", mi_SELR, { { 3, 14 } }, UNI_SINCE_Z15 }, + { "SELRO", mi_SELR, { { 3, 1 } }, UNI_SINCE_Z15 }, + { "STDRV", mi_VSTEBRG, { { 2, 0 } }, UNI_SINCE_Z15 }, + { "STERV", mi_VSTEBRF, { { 2, 0 } }, UNI_SINCE_Z15 }, + { "STOCE", mi_STOC, { { 2, 8 } }, UNI_SINCE_Z11 }, + { "STOCFHE", mi_STOCFH, { { 2, 8 } }, UNI_SINCE_Z13 }, + { "STOCFHH", mi_STOCFH, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "STOCFHL", mi_STOCFH, { { 2, 4 } }, UNI_SINCE_Z13 }, + { "STOCFHNE", mi_STOCFH, { { 2, 7 } }, UNI_SINCE_Z13 }, + { "STOCFHNH", mi_STOCFH, { { 2, 13 } }, UNI_SINCE_Z13 }, + { "STOCFHNL", mi_STOCFH, { { 2, 11 } }, UNI_SINCE_Z13 }, + { "STOCFHNO", mi_STOCFH, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "STOCFHO", mi_STOCFH, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "STOCGE", mi_STOCG, { { 2, 8 } }, UNI_SINCE_Z11 }, + { "STOCGH", mi_STOCG, { { 2, 2 } }, UNI_SINCE_Z11 }, + { "STOCGL", mi_STOCG, { { 2, 4 } }, UNI_SINCE_Z11 }, + { "STOCGNE", mi_STOCG, { { 2, 6 } }, UNI_SINCE_Z11 }, + { "STOCGNH", mi_STOCG, { { 2, 12 } }, UNI_SINCE_Z11 }, + { "STOCGNL", mi_STOCG, { { 2, 10 } }, UNI_SINCE_Z11 }, + { "STOCGNO", mi_STOCG, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "STOCGO", mi_STOCG, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "STOCH", mi_STOC, { { 2, 2 } }, UNI_SINCE_Z11 }, + { "STOCL", mi_STOC, { { 2, 4 } }, UNI_SINCE_Z11 }, + { "STOCNE", mi_STOC, { { 2, 6 } }, UNI_SINCE_Z11 }, + { "STOCNH", mi_STOC, { { 2, 12 } }, UNI_SINCE_Z11 }, + { "STOCNL", mi_STOC, { { 2, 10 } }, UNI_SINCE_Z11 }, + { "STOCNO", mi_STOC, { { 2, 14 } }, UNI_SINCE_Z13 }, + { "STOCO", mi_STOC, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VAB", mi_VA, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VACCB", mi_VACC, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VACCCQ", mi_VACCC, { { 3, 4 } }, UNI_SINCE_Z13 }, + { "VACCF", mi_VACC, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VACCG", mi_VACC, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VACCH", mi_VACC, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VACCQ", mi_VACC, { { 3, 4 } }, UNI_SINCE_Z13 }, + { "VACQ", mi_VAC, { { 3, 4 } }, UNI_SINCE_Z13 }, + { "VAF", mi_VA, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VAG", mi_VA, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VAH", mi_VA, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VAQ", mi_VA, { { 3, 4 } }, UNI_ESA_XA_370_SINCE_Z13 }, + { "VAVGB", mi_VAVG, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VAVGF", mi_VAVG, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VAVGG", mi_VAVG, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VAVGH", mi_VAVG, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VAVGLB", mi_VAVGL, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VAVGLF", mi_VAVGL, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VAVGLG", mi_VAVGL, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VAVGLH", mi_VAVGL, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VCDG", mi_VCFPS, {}, UNI_SINCE_Z13 }, + { "VCDGB", mi_VCFPS, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VCDLG", mi_VCFPL, {}, UNI_SINCE_Z13 }, + { "VCDLGB", mi_VCFPL, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VCEFB", mi_VCFPS, { { 2, 0 } }, UNI_SINCE_Z15 }, + { "VCELFB", mi_VCFPL, { { 2, 0 } }, UNI_SINCE_Z15 }, + { "VCEQB", mi_VCEQ, { { 3, 0 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCEQBS", mi_VCEQ, { { 3, 0 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCEQF", mi_VCEQ, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCEQFS", mi_VCEQ, { { 3, 2 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCEQG", mi_VCEQ, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCEQGS", mi_VCEQ, { { 3, 3 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCEQH", mi_VCEQ, { { 3, 1 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCEQHS", mi_VCEQ, { { 3, 1 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCFEB", mi_VCSFP, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "VCGD", mi_VCSFP, {}, UNI_SINCE_Z13 }, + { "VCGDB", mi_VCSFP, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VCHB", mi_VCH, { { 3, 0 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCHBS", mi_VCH, { { 3, 0 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCHF", mi_VCH, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCHFS", mi_VCH, { { 3, 2 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCHG", mi_VCH, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCHGS", mi_VCH, { { 3, 3 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCHH", mi_VCH, { { 3, 1 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCHHS", mi_VCH, { { 3, 1 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCHLB", mi_VCHL, { { 3, 0 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCHLBS", mi_VCHL, { { 3, 0 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCHLF", mi_VCHL, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCHLFS", mi_VCHL, { { 3, 2 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCHLG", mi_VCHL, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCHLGS", mi_VCHL, { { 3, 3 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCHLH", mi_VCHL, { { 3, 1 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VCHLHS", mi_VCHL, { { 3, 1 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VCLFEB", mi_VCLFP, { { 2, 0 } }, UNI_SINCE_Z15 }, + { "VCLGDB", mi_VCLGD, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VCLZB", mi_VCLZ, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VCLZF", mi_VCLZ, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VCLZG", mi_VCLZ, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VCLZH", mi_VCLZ, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VECB", mi_VEC, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VECF", mi_VEC, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VECG", mi_VEC, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VECH", mi_VEC, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VECLB", mi_VECL, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VECLF", mi_VECL, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VECLG", mi_VECL, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VECLH", mi_VECL, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VERIMB", mi_VERIM, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VERIMF", mi_VERIM, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VERIMG", mi_VERIM, { { 4, 3 } }, UNI_SINCE_Z13 }, + { "VERIMH", mi_VERIM, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VERLLB", mi_VERLL, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VERLLF", mi_VERLL, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VERLLG", mi_VERLL, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VERLLH", mi_VERLL, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VERLLVB", mi_VERLLV, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VERLLVF", mi_VERLLV, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VERLLVG", mi_VERLLV, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VERLLVH", mi_VERLLV, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VESLB", mi_VESL, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VESLF", mi_VESL, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VESLG", mi_VESL, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VESLH", mi_VESL, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VESLVB", mi_VESLV, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VESLVF", mi_VESLV, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VESLVG", mi_VESLV, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VESLVH", mi_VESLV, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VESRAB", mi_VESRA, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VESRAF", mi_VESRA, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VESRAG", mi_VESRA, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VESRAH", mi_VESRA, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VESRAVB", mi_VESRAV, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VESRAVF", mi_VESRAV, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VESRAVG", mi_VESRAV, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VESRAVH", mi_VESRAV, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VESRLB", mi_VESRL, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VESRLF", mi_VESRL, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VESRLG", mi_VESRL, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VESRLH", mi_VESRL, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VESRLVB", mi_VESRLV, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VESRLVF", mi_VESRLV, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VESRLVG", mi_VESRLV, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VESRLVH", mi_VESRLV, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VFADB", mi_VFA, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VFAEB", mi_VFAE, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VFAEBS", mi_VFAE, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VFAEF", mi_VFAE, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VFAEFS", mi_VFAE, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VFAEH", mi_VFAE, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VFAEHS", mi_VFAE, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VFAEZB", mi_VFAE, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VFAEZBS", mi_VFAE, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VFAEZF", mi_VFAE, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VFAEZFS", mi_VFAE, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VFAEZH", mi_VFAE, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VFAEZHS", mi_VFAE, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VFASB", mi_VFA, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "VFCEDB", mi_VFCE, { { 3, 3 }, { 4, 0 }, { 5, 0 } }, UNI_SINCE_Z13 }, + { "VFCEDBS", mi_VFCE, { { 3, 3 }, { 4, 0 }, { 5, 1 } }, UNI_SINCE_Z13 }, + { "VFCESB", mi_VFCE, { { 3, 2 }, { 4, 0 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "VFCESBS", mi_VFCE, { { 3, 2 }, { 4, 0 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "VFCHDB", mi_VFCH, { { 3, 3 }, { 4, 0 }, { 5, 0 } }, UNI_SINCE_Z13 }, + { "VFCHDBS", mi_VFCH, { { 3, 3 }, { 4, 0 }, { 5, 1 } }, UNI_SINCE_Z13 }, + { "VFCHEDB", mi_VFCHE, { { 3, 3 }, { 4, 0 }, { 5, 0 } }, UNI_SINCE_Z13 }, + { "VFCHEDBS", mi_VFCHE, { { 3, 3 }, { 4, 0 }, { 5, 1 } }, UNI_SINCE_Z13 }, + { "VFCHESB", mi_VFCHE, { { 3, 2 }, { 4, 0 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "VFCHESBS", mi_VFCHE, { { 3, 2 }, { 4, 0 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "VFCHSB", mi_VFCH, { { 3, 2 }, { 4, 0 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "VFCHSBS", mi_VFCH, { { 3, 2 }, { 4, 0 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "VFDDB", mi_VFD, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VFDSB", mi_VFD, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "VFEEB", mi_VFEE, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VFEEBS", mi_VFEE, { { 3, 0 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VFEEF", mi_VFEE, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VFEEFS", mi_VFEE, { { 3, 2 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VFEEH", mi_VFEE, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VFEEHS", mi_VFEE, { { 3, 1 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VFEEZB", mi_VFEE, { { 3, 0 }, { 4, 2 } }, UNI_SINCE_Z13 }, + { "VFEEZBS", mi_VFEE, { { 3, 0 }, { 4, 3 } }, UNI_SINCE_Z13 }, + { "VFEEZF", mi_VFEE, { { 3, 2 }, { 4, 2 } }, UNI_SINCE_Z13 }, + { "VFEEZFS", mi_VFEE, { { 3, 2 }, { 4, 3 } }, UNI_SINCE_Z13 }, + { "VFEEZH", mi_VFEE, { { 3, 1 }, { 4, 2 } }, UNI_SINCE_Z13 }, + { "VFEEZHS", mi_VFEE, { { 3, 1 }, { 4, 3 } }, UNI_SINCE_Z13 }, + { "VFENEB", mi_VFENE, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VFENEBS", mi_VFENE, { { 3, 0 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VFENEF", mi_VFENE, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VFENEFS", mi_VFENE, { { 3, 2 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VFENEH", mi_VFENE, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VFENEHS", mi_VFENE, { { 3, 1 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VFENEZB", mi_VFENE, { { 3, 0 }, { 4, 2 } }, UNI_SINCE_Z13 }, + { "VFENEZBS", mi_VFENE, { { 3, 0 }, { 4, 3 } }, UNI_SINCE_Z13 }, + { "VFENEZF", mi_VFENE, { { 3, 2 }, { 4, 2 } }, UNI_SINCE_Z13 }, + { "VFENEZFS", mi_VFENE, { { 3, 2 }, { 4, 3 } }, UNI_SINCE_Z13 }, + { "VFENEZH", mi_VFENE, { { 3, 1 }, { 4, 2 } }, UNI_SINCE_Z13 }, + { "VFENEZHS", mi_VFENE, { { 3, 1 }, { 4, 3 } }, UNI_SINCE_Z13 }, + { "VFIDB", mi_VFI, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VFISB", mi_VFI, { { 2, 2 } }, UNI_SINCE_Z14 }, + { "VFKEDB", mi_VFCE, { { 3, 3 }, { 4, 4 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "VFKEDBS", mi_VFCE, { { 3, 3 }, { 4, 4 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "VFKESB", mi_VFCE, { { 3, 2 }, { 4, 4 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "VFKESBS", mi_VFCE, { { 3, 2 }, { 4, 4 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "VFKHDB", mi_VFCH, { { 3, 3 }, { 4, 4 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "VFKHDBS", mi_VFCH, { { 3, 3 }, { 4, 4 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "VFKHEDB", mi_VFCHE, { { 3, 3 }, { 4, 4 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "VFKHEDBS", mi_VFCHE, { { 3, 3 }, { 4, 4 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "VFKHESB", mi_VFCHE, { { 3, 2 }, { 4, 4 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "VFKHESBS", mi_VFCHE, { { 3, 2 }, { 4, 4 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "VFKHSB", mi_VFCH, { { 3, 2 }, { 4, 4 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "VFKHSBS", mi_VFCH, { { 3, 2 }, { 4, 4 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "VFLCDB", mi_VFPSO, { { 2, 3 }, { 3, 0 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VFLCSB", mi_VFPSO, { { 2, 2 }, { 3, 0 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "VFLLS", mi_VFLL, { { 2, 2 }, { 3, 0 } }, UNI_SINCE_Z14 }, + { "VFLNDB", mi_VFPSO, { { 2, 3 }, { 3, 0 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VFLNSB", mi_VFPSO, { { 2, 2 }, { 3, 0 }, { 4, 1 } }, UNI_SINCE_Z14 }, + { "VFLPDB", mi_VFPSO, { { 2, 3 }, { 3, 0 }, { 4, 2 } }, UNI_SINCE_Z13 }, + { "VFLPSB", mi_VFPSO, { { 2, 2 }, { 3, 0 }, { 4, 2 } }, UNI_SINCE_Z14 }, + { "VFLRD", mi_VFLR, { { 2, 3 } }, UNI_SINCE_Z14 }, + { "VFMADB", mi_VFMA, { { 4, 0 }, { 5, 3 } }, UNI_SINCE_Z13 }, + { "VFMASB", mi_VFMA, { { 4, 0 }, { 5, 2 } }, UNI_SINCE_Z14 }, + { "VFMAXDB", mi_VFMAX, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "VFMAXSB", mi_VFMAX, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "VFMDB", mi_VFM, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VFMINDB", mi_VFMIN, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "VFMINSB", mi_VFMIN, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "VFMSB", mi_VFM, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "VFMSDB", mi_VFMS, { { 4, 0 }, { 5, 3 } }, UNI_SINCE_Z13 }, + { "VFMSSB", mi_VFMS, { { 4, 0 }, { 5, 2 } }, UNI_SINCE_Z14 }, + { "VFNMADB", mi_VFNMA, { { 4, 0 }, { 5, 3 } }, UNI_SINCE_Z14 }, + { "VFNMASB", mi_VFNMA, { { 4, 0 }, { 5, 2 } }, UNI_SINCE_Z14 }, + { "VFNMSDB", mi_VFNMS, { { 4, 0 }, { 5, 3 } }, UNI_SINCE_Z14 }, + { "VFNMSSB", mi_VFNMS, { { 4, 0 }, { 5, 2 } }, UNI_SINCE_Z14 }, + { "VFPSODB", mi_VFPSO, { { 2, 3 }, { 3, 0 } }, UNI_SINCE_Z13 }, + { "VFPSOSB", mi_VFPSO, { { 2, 2 }, { 3, 0 } }, UNI_SINCE_Z14 }, + { "VFSDB", mi_VFS, { { 2, 3 }, { 3, 0 } }, UNI_SINCE_Z13 }, + { "VFSQDB", mi_VFSQ, { { 2, 3 }, { 3, 0 } }, UNI_SINCE_Z13 }, + { "VFSQSB", mi_VFSQ, { { 2, 2 }, { 3, 0 } }, UNI_SINCE_Z14 }, + { "VFSSB", mi_VFS, { { 2, 2 }, { 3, 0 } }, UNI_SINCE_Z14 }, + { "VFTCIDB", mi_VFTCI, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VFTCISB", mi_VFTCI, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "VGFMAB", mi_VGFMA, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VGFMAF", mi_VGFMA, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VGFMAG", mi_VGFMA, { { 4, 3 } }, UNI_SINCE_Z13 }, + { "VGFMAH", mi_VGFMA, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VGFMB", mi_VGFM, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VGFMF", mi_VGFM, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VGFMG", mi_VGFM, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VGFMH", mi_VGFM, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VGMB", mi_VGM, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VGMF", mi_VGM, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VGMG", mi_VGM, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VGMH", mi_VGM, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VISTRB", mi_VISTR, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VISTRBS", mi_VISTR, { { 3, 0 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VISTRF", mi_VISTR, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VISTRFS", mi_VISTR, { { 3, 2 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VISTRH", mi_VISTR, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VISTRHS", mi_VISTR, { { 3, 1 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VLBRF", mi_VLBR, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "VLBRG", mi_VLBR, { { 2, 3 } }, UNI_SINCE_Z15 }, + { "VLBRH", mi_VLBR, { { 2, 1 } }, UNI_SINCE_Z15 }, + { "VLBRQ", mi_VLBR, { { 2, 4 } }, UNI_SINCE_Z15 }, + { "VLBRREPF", mi_VLBRREP, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "VLBRREPG", mi_VLBRREP, { { 2, 3 } }, UNI_SINCE_Z15 }, + { "VLBRREPH", mi_VLBRREP, { { 2, 1 } }, UNI_SINCE_Z15 }, + { "VLCB", mi_VLC, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VLCF", mi_VLC, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VLCG", mi_VLC, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VLCH", mi_VLC, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VLDE", mi_VFLL, {}, UNI_SINCE_Z13 }, + { "VLDEB", mi_VFLL, { { 2, 2 }, { 3, 0 } }, UNI_SINCE_Z13 }, + { "VLED", mi_VFLR, {}, UNI_SINCE_Z13 }, + { "VLEDB", mi_VFLR, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VLERF", mi_VLER, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "VLERG", mi_VLER, { { 2, 3 } }, UNI_SINCE_Z15 }, + { "VLERH", mi_VLER, { { 2, 1 } }, UNI_SINCE_Z15 }, + { "VLGVB", mi_VLGV, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VLGVF", mi_VLGV, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VLGVG", mi_VLGV, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VLGVH", mi_VLGV, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VLLEBRZE", mi_VLLEBRZ, { { 2, 6 } }, UNI_SINCE_Z15 }, + { "VLLEBRZF", mi_VLLEBRZ, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "VLLEBRZG", mi_VLLEBRZ, { { 2, 3 } }, UNI_SINCE_Z15 }, + { "VLLEBRZH", mi_VLLEBRZ, { { 2, 1 } }, UNI_SINCE_Z15 }, + { "VLLEZB", mi_VLLEZ, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VLLEZF", mi_VLLEZ, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VLLEZG", mi_VLLEZ, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VLLEZH", mi_VLLEZ, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VLLEZLF", mi_VLLEZ, { { 2, 6 } }, UNI_SINCE_Z14 }, + { "VLPB", mi_VLP, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VLPF", mi_VLP, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VLPG", mi_VLP, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VLPH", mi_VLP, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VLREPB", mi_VLREP, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VLREPF", mi_VLREP, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VLREPG", mi_VLREP, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VLREPH", mi_VLREP, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VLVGB", mi_VLVG, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VLVGF", mi_VLVG, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VLVGG", mi_VLVG, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VLVGH", mi_VLVG, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMAEB", mi_VMAE, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VMAEF", mi_VMAE, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VMAEH", mi_VMAE, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VMAHB", mi_VMAH, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VMAHF", mi_VMAH, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VMAHH", mi_VMAH, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VMALB", mi_VMAL, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VMALEB", mi_VMALE, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VMALEF", mi_VMALE, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VMALEH", mi_VMALE, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VMALF", mi_VMAL, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VMALHB", mi_VMALH, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VMALHF", mi_VMALH, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VMALHH", mi_VMALH, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VMALHW", mi_VMAL, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VMALOB", mi_VMALO, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VMALOF", mi_VMALO, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VMALOH", mi_VMALO, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VMAOB", mi_VMAO, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VMAOF", mi_VMAO, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VMAOH", mi_VMAO, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VMEB", mi_VME, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMEF", mi_VME, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMEH", mi_VME, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMHB", mi_VMH, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMHF", mi_VMH, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMHH", mi_VMH, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMLB", mi_VML, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMLEB", mi_VMLE, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMLEF", mi_VMLE, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMLEH", mi_VMLE, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMLF", mi_VML, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMLHB", mi_VMLH, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMLHF", mi_VMLH, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMLHH", mi_VMLH, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMLHW", mi_VML, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMLOB", mi_VMLO, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMLOF", mi_VMLO, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMLOH", mi_VMLO, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMNB", mi_VMN, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMNF", mi_VMN, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMNG", mi_VMN, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VMNH", mi_VMN, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMNLB", mi_VMNL, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMNLF", mi_VMNL, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMNLG", mi_VMNL, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VMNLH", mi_VMNL, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMOB", mi_VMO, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMOF", mi_VMO, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMOH", mi_VMO, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMRHB", mi_VMRH, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMRHF", mi_VMRH, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMRHG", mi_VMRH, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VMRHH", mi_VMRH, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMRLB", mi_VMRL, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMRLF", mi_VMRL, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMRLG", mi_VMRL, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VMRLH", mi_VMRL, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMSLG", mi_VMSL, { { 4, 3 } }, UNI_SINCE_Z14 }, + { "VMXB", mi_VMX, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMXF", mi_VMX, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMXG", mi_VMX, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VMXH", mi_VMX, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VMXLB", mi_VMXL, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VMXLF", mi_VMXL, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VMXLG", mi_VMXL, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VMXLH", mi_VMXL, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VNOT", mi_VNO, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VONE", mi_VGBM, { { 1, 65535 } }, UNI_SINCE_Z13 }, + { "VPKF", mi_VPK, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VPKG", mi_VPK, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VPKH", mi_VPK, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VPKLSF", mi_VPKLS, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VPKLSFS", mi_VPKLS, { { 3, 2 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VPKLSG", mi_VPKLS, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VPKLSGS", mi_VPKLS, { { 3, 3 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VPKLSH", mi_VPKLS, { { 3, 1 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VPKLSHS", mi_VPKLS, { { 3, 1 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VPKSF", mi_VPKS, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VPKSFS", mi_VPKS, { { 3, 2 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VPKSG", mi_VPKS, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VPKSGS", mi_VPKS, { { 3, 3 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VPKSH", mi_VPKS, { { 3, 1 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "VPKSHS", mi_VPKS, { { 3, 1 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "VPOPCTB", mi_VPOPCT, { { 2, 0 } }, UNI_SINCE_Z14 }, + { "VPOPCTF", mi_VPOPCT, { { 2, 2 } }, UNI_SINCE_Z14 }, + { "VPOPCTG", mi_VPOPCT, { { 2, 3 } }, UNI_SINCE_Z14 }, + { "VPOPCTH", mi_VPOPCT, { { 2, 1 } }, UNI_SINCE_Z14 }, + { "VREPB", mi_VREP, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VREPF", mi_VREP, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VREPG", mi_VREP, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VREPH", mi_VREP, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VREPIB", mi_VREPI, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VREPIF", mi_VREPI, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VREPIG", mi_VREPI, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "VREPIH", mi_VREPI, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VSB", mi_VS, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VSBCBIQ", mi_VSBCBI, { { 4, 4 } }, UNI_SINCE_Z13 }, + { "VSBIQ", mi_VSBI, { { 4, 4 } }, UNI_SINCE_Z13 }, + { "VSCBIB", mi_VSCBI, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VSCBIF", mi_VSCBI, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VSCBIG", mi_VSCBI, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VSCBIH", mi_VSCBI, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VSCBIQ", mi_VSCBI, { { 3, 4 } }, UNI_SINCE_Z13 }, + { "VSEGB", mi_VSEG, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VSEGF", mi_VSEG, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VSEGH", mi_VSEG, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VSF", mi_VS, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VSG", mi_VS, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VSH", mi_VS, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VSQ", mi_VS, { { 3, 4 } }, UNI_ESA_XA_370_SINCE_Z13 }, + { "VSTBRF", mi_VSTBR, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "VSTBRG", mi_VSTBR, { { 2, 3 } }, UNI_SINCE_Z15 }, + { "VSTBRH", mi_VSTBR, { { 2, 1 } }, UNI_SINCE_Z15 }, + { "VSTBRQ", mi_VSTBR, { { 2, 4 } }, UNI_SINCE_Z15 }, + { "VSTERF", mi_VSTER, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "VSTERG", mi_VSTER, { { 2, 3 } }, UNI_SINCE_Z15 }, + { "VSTERH", mi_VSTER, { { 2, 1 } }, UNI_SINCE_Z15 }, + { "VSTRCB", mi_VSTRC, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VSTRCBS", mi_VSTRC, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VSTRCF", mi_VSTRC, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VSTRCFS", mi_VSTRC, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VSTRCH", mi_VSTRC, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VSTRCHS", mi_VSTRC, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VSTRCZB", mi_VSTRC, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VSTRCZBS", mi_VSTRC, { { 4, 0 } }, UNI_SINCE_Z13 }, + { "VSTRCZF", mi_VSTRC, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VSTRCZFS", mi_VSTRC, { { 4, 2 } }, UNI_SINCE_Z13 }, + { "VSTRCZH", mi_VSTRC, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VSTRCZHS", mi_VSTRC, { { 4, 1 } }, UNI_SINCE_Z13 }, + { "VSTRSB", mi_VSTRS, { { 4, 0 } }, UNI_SINCE_Z15 }, + { "VSTRSF", mi_VSTRS, { { 4, 2 } }, UNI_SINCE_Z15 }, + { "VSTRSH", mi_VSTRS, { { 4, 1 } }, UNI_SINCE_Z15 }, + { "VSTRSZB", mi_VSTRS, { { 4, 0 }, { 5, 2 } }, UNI_SINCE_Z15 }, + { "VSUMB", mi_VSUM, { { 3, 0 } }, UNI_SINCE_Z13 }, + { "VSUMGF", mi_VSUMG, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VSUMGH", mi_VSUMG, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VSUMH", mi_VSUM, { { 3, 1 } }, UNI_SINCE_Z13 }, + { "VSUMQF", mi_VSUMQ, { { 3, 2 } }, UNI_SINCE_Z13 }, + { "VSUMQG", mi_VSUMQ, { { 3, 3 } }, UNI_SINCE_Z13 }, + { "VUPHB", mi_VUPH, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VUPHF", mi_VUPH, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VUPHH", mi_VUPH, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VUPLB", mi_VUPL, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VUPLF", mi_VUPL, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VUPLHB", mi_VUPLH, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VUPLHF", mi_VUPLH, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VUPLHH", mi_VUPLH, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VUPLHW", mi_VUPL, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VUPLLB", mi_VUPLL, { { 2, 0 } }, UNI_SINCE_Z13 }, + { "VUPLLF", mi_VUPLL, { { 2, 2 } }, UNI_SINCE_Z13 }, + { "VUPLLH", mi_VUPLL, { { 2, 1 } }, UNI_SINCE_Z13 }, + { "VZERO", mi_VGBM, { { 0, 1 } }, UNI_SINCE_Z13 }, + { "WCDGB", mi_VCFPS, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "WCDLGB", mi_VCFPL, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "WCEFB", mi_VCFPS, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "WCELFB", mi_VCFPL, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "WCFEB", mi_VCSFP, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "WCGDB", mi_VCSFP, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "WCLFEB", mi_VCLFP, { { 2, 2 } }, UNI_SINCE_Z15 }, + { "WCLGDB", mi_VCLGD, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "WFADB", mi_VFA, { { 3, 3 }, { 4, 8 } }, UNI_SINCE_Z13 }, + { "WFASB", mi_VFA, { { 3, 2 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFAXB", mi_VFA, { { 3, 4 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFCDB", mi_WFC, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "WFCEDB", mi_VFCE, { { 3, 3 }, { 4, 8 }, { 5, 0 } }, UNI_SINCE_Z13 }, + { "WFCEDBS", mi_VFCE, { { 3, 3 }, { 4, 8 }, { 5, 1 } }, UNI_SINCE_Z13 }, + { "WFCESB", mi_VFCE, { { 3, 2 }, { 4, 8 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFCESBS", mi_VFCE, { { 3, 2 }, { 4, 8 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFCEXB", mi_VFCE, { { 3, 4 }, { 4, 8 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFCEXBS", mi_VFCE, { { 3, 4 }, { 4, 8 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFCHDB", mi_VFCH, { { 3, 3 }, { 4, 8 }, { 5, 0 } }, UNI_SINCE_Z13 }, + { "WFCHDBS", mi_VFCH, { { 3, 3 }, { 4, 8 }, { 5, 1 } }, UNI_SINCE_Z13 }, + { "WFCHEDB", mi_VFCHE, { { 3, 3 }, { 4, 8 }, { 5, 0 } }, UNI_SINCE_Z13 }, + { "WFCHEDBS", mi_VFCHE, { { 3, 3 }, { 4, 8 }, { 5, 1 } }, UNI_SINCE_Z13 }, + { "WFCHESB", mi_VFCHE, { { 3, 2 }, { 4, 8 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFCHESBS", mi_VFCHE, { { 3, 2 }, { 4, 8 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFCHEXB", mi_VFCHE, { { 3, 4 }, { 4, 8 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFCHEXBS", mi_VFCHE, { { 3, 4 }, { 4, 8 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFCHSB", mi_VFCH, { { 3, 2 }, { 4, 8 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFCHSBS", mi_VFCH, { { 3, 2 }, { 4, 8 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFCHXB", mi_VFCH, { { 3, 4 }, { 4, 8 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFCHXBS", mi_VFCH, { { 3, 4 }, { 4, 8 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFCSB", mi_WFC, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "WFCXB", mi_WFC, { { 3, 4 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "WFDDB", mi_VFD, { { 3, 3 }, { 4, 8 } }, UNI_SINCE_Z13 }, + { "WFDSB", mi_VFD, { { 3, 2 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFDXB", mi_VFD, { { 3, 4 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFIDB", mi_VFI, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "WFISB", mi_VFI, { { 2, 2 } }, UNI_SINCE_Z14 }, + { "WFIXB", mi_VFI, { { 2, 4 } }, UNI_SINCE_Z14 }, + { "WFKDB", mi_WFK, { { 3, 3 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "WFKEDB", mi_VFCE, { { 3, 3 }, { 4, 12 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFKEDBS", mi_VFCE, { { 3, 3 }, { 4, 12 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFKESB", mi_VFCE, { { 3, 2 }, { 4, 12 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFKESBS", mi_VFCE, { { 3, 2 }, { 4, 12 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFKEXB", mi_VFCE, { { 3, 4 }, { 4, 12 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFKEXBS", mi_VFCE, { { 3, 4 }, { 4, 12 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFKHDB", mi_VFCH, { { 3, 3 }, { 4, 12 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFKHDBS", mi_VFCH, { { 3, 3 }, { 4, 12 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFKHEDB", mi_VFCHE, { { 3, 3 }, { 4, 12 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFKHEDBS", mi_VFCHE, { { 3, 3 }, { 4, 12 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFKHESB", mi_VFCHE, { { 3, 2 }, { 4, 12 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFKHESBS", mi_VFCHE, { { 3, 2 }, { 4, 12 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFKHEXB", mi_VFCHE, { { 3, 4 }, { 4, 12 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFKHEXBS", mi_VFCHE, { { 3, 4 }, { 4, 12 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFKHSB", mi_VFCH, { { 3, 2 }, { 4, 12 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFKHSBS", mi_VFCH, { { 3, 2 }, { 4, 12 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFKHXB", mi_VFCH, { { 3, 4 }, { 4, 12 }, { 5, 0 } }, UNI_SINCE_Z14 }, + { "WFKHXBS", mi_VFCH, { { 3, 4 }, { 4, 12 }, { 5, 1 } }, UNI_SINCE_Z14 }, + { "WFKSB", mi_WFK, { { 3, 2 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "WFKXB", mi_WFK, { { 3, 4 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "WFLCDB", mi_VFPSO, { { 2, 3 }, { 3, 8 }, { 4, 0 } }, UNI_SINCE_Z13 }, + { "WFLCSB", mi_VFPSO, { { 2, 2 }, { 3, 8 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "WFLCXB", mi_VFPSO, { { 2, 4 }, { 3, 8 }, { 4, 0 } }, UNI_SINCE_Z14 }, + { "WFLLD", mi_VFLL, { { 2, 3 }, { 3, 8 } }, UNI_SINCE_Z14 }, + { "WFLLS", mi_VFLL, { { 2, 2 }, { 3, 8 } }, UNI_SINCE_Z14 }, + { "WFLNDB", mi_VFPSO, { { 2, 3 }, { 3, 8 }, { 4, 1 } }, UNI_SINCE_Z13 }, + { "WFLNSB", mi_VFPSO, { { 2, 2 }, { 3, 8 }, { 4, 1 } }, UNI_SINCE_Z14 }, + { "WFLNXB", mi_VFPSO, { { 2, 4 }, { 3, 8 }, { 4, 1 } }, UNI_SINCE_Z14 }, + { "WFLPDB", mi_VFPSO, { { 2, 3 }, { 3, 8 }, { 4, 2 } }, UNI_SINCE_Z13 }, + { "WFLPSB", mi_VFPSO, { { 2, 2 }, { 3, 8 }, { 4, 2 } }, UNI_SINCE_Z14 }, + { "WFLPXB", mi_VFPSO, { { 2, 4 }, { 3, 8 }, { 4, 2 } }, UNI_SINCE_Z14 }, + { "WFLRD", mi_VFLR, { { 2, 3 } }, UNI_SINCE_Z14 }, + { "WFLRX", mi_VFLR, { { 2, 4 } }, UNI_SINCE_Z14 }, + { "WFMADB", mi_VFMA, { { 4, 8 }, { 5, 3 } }, UNI_SINCE_Z13 }, + { "WFMASB", mi_VFMA, { { 4, 8 }, { 5, 2 } }, UNI_SINCE_Z14 }, + { "WFMAXB", mi_VFMA, { { 4, 8 }, { 5, 4 } }, UNI_SINCE_Z14 }, + { "WFMAXDB", mi_VFMAX, { { 3, 3 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFMAXSB", mi_VFMAX, { { 3, 2 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFMAXXB", mi_VFMAX, { { 3, 4 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFMDB", mi_VFM, { { 3, 3 }, { 4, 8 } }, UNI_SINCE_Z13 }, + { "WFMINDB", mi_VFMIN, { { 3, 3 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFMINSB", mi_VFMIN, { { 3, 2 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFMINXB", mi_VFMIN, { { 3, 4 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFMSB", mi_VFM, { { 3, 2 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFMSDB", mi_VFMS, { { 4, 8 }, { 5, 3 } }, UNI_SINCE_Z13 }, + { "WFMSSB", mi_VFMS, { { 4, 8 }, { 5, 2 } }, UNI_SINCE_Z14 }, + { "WFMSXB", mi_VFMS, { { 4, 8 }, { 5, 4 } }, UNI_SINCE_Z14 }, + { "WFMXB", mi_VFM, { { 3, 4 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFNMADB", mi_VFNMA, { { 4, 8 }, { 5, 3 } }, UNI_SINCE_Z14 }, + { "WFNMASB", mi_VFNMA, { { 4, 8 }, { 5, 2 } }, UNI_SINCE_Z14 }, + { "WFNMAXB", mi_VFNMA, { { 4, 8 }, { 5, 4 } }, UNI_SINCE_Z14 }, + { "WFNMSDB", mi_VFNMS, { { 4, 8 }, { 5, 3 } }, UNI_SINCE_Z14 }, + { "WFNMSSB", mi_VFNMS, { { 4, 8 }, { 5, 2 } }, UNI_SINCE_Z14 }, + { "WFNMSXB", mi_VFNMS, { { 4, 8 }, { 5, 4 } }, UNI_SINCE_Z14 }, + { "WFPSODB", mi_VFPSO, { { 2, 3 }, { 3, 8 } }, UNI_SINCE_Z13 }, + { "WFPSOSB", mi_VFPSO, { { 2, 2 }, { 3, 8 } }, UNI_SINCE_Z14 }, + { "WFPSOXB", mi_VFPSO, { { 2, 4 }, { 3, 8 } }, UNI_SINCE_Z14 }, + { "WFSDB", mi_VFS, { { 2, 3 }, { 3, 8 } }, UNI_SINCE_Z13 }, + { "WFSQDB", mi_VFSQ, { { 2, 3 }, { 3, 8 } }, UNI_SINCE_Z13 }, + { "WFSQSB", mi_VFSQ, { { 2, 2 }, { 3, 8 } }, UNI_SINCE_Z14 }, + { "WFSQXB", mi_VFSQ, { { 2, 4 }, { 3, 8 } }, UNI_SINCE_Z14 }, + { "WFSSB", mi_VFS, { { 2, 2 }, { 3, 8 } }, UNI_SINCE_Z14 }, + { "WFSXB", mi_VFS, { { 2, 4 }, { 3, 8 } }, UNI_SINCE_Z14 }, + { "WFTCIDB", mi_VFTCI, { { 3, 3 }, { 4, 8 } }, UNI_SINCE_Z13 }, + { "WFTCISB", mi_VFTCI, { { 3, 2 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WFTCIXB", mi_VFTCI, { { 3, 4 }, { 4, 8 } }, UNI_SINCE_Z14 }, + { "WLDEB", mi_VFLL, { { 2, 2 }, { 3, 8 } }, UNI_SINCE_Z13 }, + { "WLEDB", mi_VFLR, { { 2, 3 } }, UNI_SINCE_Z13 }, + { "XHHR", mi_RXSBG, { { 2, 0 }, { 3, 31 } }, UNI_SINCE_Z11 }, + { "XHLR", mi_RXSBG, { { 2, 0 }, { 3, 31 }, { 4, 32 } }, UNI_SINCE_Z11 }, + { "XLHR", mi_RXSBG, { { 2, 32 }, { 3, 63 }, { 4, 32 } }, UNI_SINCE_Z11 }, }; #ifdef __cpp_lib_ranges @@ -3077,4 +3126,5 @@ const mnemonic_code& instruction::get_mnemonic_codes(std::string_view name) assert(result); return *result; } -std::span instruction::all_mnemonic_codes() { return mnemonic_codes; } + +std::span instruction::all_mnemonic_codes() { return mnemonic_codes; } \ No newline at end of file diff --git a/parser_library/src/context/instruction.h b/parser_library/src/context/instruction.h index 06bd3a1c3..9316804b4 100644 --- a/parser_library/src/context/instruction.h +++ b/parser_library/src/context/instruction.h @@ -28,8 +28,34 @@ #include "checking/instr_operand.h" #include "diagnostic.h" #include "id_storage.h" +#include "instruction_set_version.h" + namespace hlasm_plugin::parser_library::context { +enum class z_arch_affiliation : uint16_t +{ + NO_AFFILIATION = 0, + SINCE_ZOP, + SINCE_YOP, + SINCE_Z9, + SINCE_Z10, + SINCE_Z11, + SINCE_Z12, + SINCE_Z13, + SINCE_Z14, + SINCE_Z15, +}; + +struct instruction_set_affiliation +{ + z_arch_affiliation z_arch : 4; + uint16_t esa : 1; + uint16_t xa : 1; + uint16_t _370 : 1; + uint16_t dos : 1; + uint16_t uni : 1; +}; + // all mach_format types for operands of machine instructions: // formats with length 16 are arranged in range (0,2),formats with length 32 are arranged in range(3,20),formats with // length 48 are arranged in range (21,77) @@ -259,6 +285,14 @@ struct instruction_format_definition // machine instruction representation for checking class machine_instruction { + enum class size_identifier : unsigned char + { + LENGTH_0 = 0, + LENGTH_16, + LENGTH_32, + LENGTH_48, + }; + // Generates a bitmask for an arbitrary machine instruction indicating which operands // are of the RI type (and therefore are modified by transform_reloc_imm_operands) static constexpr unsigned char generate_reladdr_bitmask(std::span operands) @@ -281,22 +315,24 @@ class machine_instruction static constexpr char get_length_by_format(mach_format instruction_format) { - auto interval = (int)(instruction_format); - if (interval >= (int)mach_format::length_48) - return 48; - if (interval >= (int)mach_format::length_32) - return 32; - if (interval >= (int)mach_format::length_16) - return 16; - return 0; + auto interval = static_cast(instruction_format); + if (interval >= static_cast(mach_format::length_48)) + return static_cast(size_identifier::LENGTH_48); + if (interval >= static_cast(mach_format::length_32)) + return static_cast(size_identifier::LENGTH_32); + if (interval >= static_cast(mach_format::length_16)) + return static_cast(size_identifier::LENGTH_16); + return static_cast(size_identifier::LENGTH_0); } inline_string<7> m_name; - mach_format m_format; - char m_size_in_bits; - unsigned short m_page_no; + unsigned short m_size_identifier : 2; // Size is only 16,32,48 bits i.e. 0x10,0x20,0x30 (low nibble is always zero) + unsigned short m_page_no : 14; // PoP has less than 16k pages + + instruction_set_affiliation m_instr_set_affiliation; + mach_format m_format; reladdr_transform_mask m_reladdr_mask; unsigned char m_optional_op_count; unsigned char m_operand_len; @@ -307,11 +343,13 @@ class machine_instruction constexpr machine_instruction(std::string_view name, mach_format format, std::span operands, - unsigned short page_no) + unsigned short page_no, + instruction_set_affiliation instr_set_affiliation) : m_name(name) - , m_format(format) - , m_size_in_bits(get_length_by_format(format)) + , m_size_identifier(get_length_by_format(format)) , m_page_no(page_no) + , m_instr_set_affiliation(instr_set_affiliation) + , m_format(format) , m_reladdr_mask(generate_reladdr_bitmask(operands)) #ifdef __cpp_lib_ranges , m_optional_op_count( @@ -325,20 +363,36 @@ class machine_instruction { assert(operands.size() <= std::numeric_limits::max()); } - constexpr machine_instruction(std::string_view name, instruction_format_definition ifd, unsigned short page_no) - : machine_instruction(name, ifd.format, ifd.op_format, page_no) + constexpr machine_instruction(std::string_view name, + instruction_format_definition ifd, + unsigned short page_no, + instruction_set_affiliation instr_set_affiliation) + : machine_instruction(name, ifd.format, ifd.op_format, page_no, instr_set_affiliation) {} constexpr std::string_view name() const { return m_name.to_string_view(); } mach_format format() const { return m_format; } - constexpr size_t page_no() const { return m_page_no; } - constexpr size_t size_in_bits() const { return m_size_in_bits; } + constexpr size_t size_in_bits() const + { + switch (static_cast(m_size_identifier)) + { + case size_identifier::LENGTH_0: + return 0; + case size_identifier::LENGTH_16: + return 16; + case size_identifier::LENGTH_32: + return 32; + default: + return 48; + } + } constexpr reladdr_transform_mask reladdr_mask() const { return m_reladdr_mask; } constexpr std::span operands() const { return std::span(m_operands, m_operand_len); } constexpr size_t optional_operand_count() const { return m_optional_op_count; } + constexpr const instruction_set_affiliation& instr_set_affiliation() const { return m_instr_set_affiliation; }; bool check_nth_operand(size_t place, const checking::machine_operand* operand); bool check(std::string_view name_of_instruction, @@ -373,12 +427,14 @@ class mnemonic_code reladdr_transform_mask m_reladdr_mask; + instruction_set_affiliation m_instr_set_affiliation; + inline_string<9> m_name; // Generates a bitmask for an arbitrary mnemonic indicating which operands // are of the RI type (and therefore are modified by transform_reloc_imm_operands) - static constexpr unsigned char generate_reladdr_bitmask(const machine_instruction* instruction, - std::initializer_list> replaced) + static constexpr unsigned char generate_reladdr_bitmask( + const machine_instruction* instruction, std::initializer_list> replaced) { unsigned char result = 0; @@ -409,17 +465,21 @@ class mnemonic_code public: constexpr mnemonic_code(std::string_view name, const machine_instruction* instr, - std::initializer_list> replaced) + std::initializer_list> replaced, + instruction_set_affiliation instr_set_affiliation) : m_instruction(instr) , m_replaced {} , m_replaced_count((unsigned char)replaced.size()) , m_reladdr_mask(generate_reladdr_bitmask(instr, replaced)) + , m_instr_set_affiliation(instr_set_affiliation) , m_name(name) { assert(replaced.size() <= m_replaced.size()); - size_t i = 0; - for (const auto& r : replaced) - m_replaced[i++] = r; + for (size_t i = 0; const auto& [a, b] : replaced) + { + m_replaced[i] = std::make_pair(static_cast(a), static_cast(b)); + i++; + } }; constexpr const machine_instruction* instruction() const { return m_instruction; } @@ -433,6 +493,7 @@ class mnemonic_code } constexpr reladdr_transform_mask reladdr_mask() const { return m_reladdr_mask; } constexpr std::string_view name() const { return m_name.to_string_view(); } + constexpr const instruction_set_affiliation& instr_set_affiliation() const { return m_instr_set_affiliation; }; }; // machine instruction common representation diff --git a/parser_library/src/diagnostic.cpp b/parser_library/src/diagnostic.cpp index d0c4f57d5..15ec7f5cf 100644 --- a/parser_library/src/diagnostic.cpp +++ b/parser_library/src/diagnostic.cpp @@ -55,7 +55,7 @@ std::string concat(Args&&... args) // diagnostic_op errors -// asembler instruction errors +// assembler instruction errors diagnostic_op diagnostic_op::error_I999(std::string_view instr_name, const range& range) { @@ -506,7 +506,7 @@ diagnostic_op diagnostic_op::error_A133_EQU_len_att_format(const range& range) return diagnostic_op(diagnostic_severity::error, "A133", "Error at EQU instruction: operand representing length attribute value must either be an absolute value in the " - "range 0 throught 65535 or must be omitted", + "range 0 through 65535 or must be omitted", range); } @@ -515,7 +515,7 @@ diagnostic_op diagnostic_op::error_A134_EQU_type_att_format(const range& range) return diagnostic_op(diagnostic_severity::error, "A134", "Error at EQU instruction: operand representing type attribute value must either be an absolute value in the " - "range 0 throught 255 or must be omitted", + "range 0 through 255 or must be omitted", range); } @@ -1243,7 +1243,7 @@ diagnostic_op diagnostic_op::warning_A243_END_expr_format(const range& range) { return diagnostic_op(diagnostic_severity::warning, "A243", - "First operand must either be an expresison or the operand must be omitted", + "First operand must either be an expression or the operand must be omitted", range); } @@ -1751,7 +1751,7 @@ diagnostic_op diagnostic_op::warn_M136(const range& range) } diagnostic_op diagnostic_op::error_optional_number_of_operands( - std::string_view instr_name, int optional_no, int operands_no, const range& range) + std::string_view instr_name, size_t optional_no, size_t operands_no, const range& range) { if (optional_no == 0) return error_M000(instr_name, operands_no, range); @@ -1762,7 +1762,7 @@ diagnostic_op diagnostic_op::error_optional_number_of_operands( } diagnostic_op hlasm_plugin::parser_library::diagnostic_op::error_M000( - std::string_view instr_name, int number, const range& range) + std::string_view instr_name, size_t number, const range& range) { return diagnostic_op(diagnostic_severity::error, "M000", @@ -1770,7 +1770,7 @@ diagnostic_op hlasm_plugin::parser_library::diagnostic_op::error_M000( range); } -diagnostic_op diagnostic_op::error_M001(std::string_view instr_name, int one, int two, const range& range) +diagnostic_op diagnostic_op::error_M001(std::string_view instr_name, size_t one, size_t two, const range& range) { return diagnostic_op(diagnostic_severity::error, "M001", @@ -1791,7 +1791,7 @@ diagnostic_op hlasm_plugin::parser_library::diagnostic_op::error_M010(std::strin range); } -diagnostic_op diagnostic_op::error_M002(std::string_view instr_name, int one, int two, const range& range) +diagnostic_op diagnostic_op::error_M002(std::string_view instr_name, size_t one, size_t two, const range& range) { return diagnostic_op(diagnostic_severity::error, "M002", @@ -1903,7 +1903,7 @@ diagnostic_op diagnostic_op::error_E033(const range& range) diagnostic_op diagnostic_op::error_E042(const range& range) { - return diagnostic_op(diagnostic_severity::error, "E042", "Macro name ommited - ASPACE instead", range); + return diagnostic_op(diagnostic_severity::error, "E042", "Macro name omitted - ASPACE instead", range); } diagnostic_op diagnostic_op::error_E043(const range& range) @@ -2067,7 +2067,7 @@ diagnostic_op diagnostic_op::error_E071(const range& range) diagnostic_op diagnostic_op::error_E072(const range& range) { - return diagnostic_op(diagnostic_severity::error, "E072", "SYSNDX limit reached, macro call supressed.", range); + return diagnostic_op(diagnostic_severity::error, "E072", "SYSNDX limit reached, macro call suppressed.", range); } diagnostic_op diagnostic_op::error_E073(const range& range) @@ -2411,7 +2411,7 @@ diagnostic_op diagnostic_op::error_U006_duplicate_base_specified(const range& ra return diagnostic_op(diagnostic_severity::error, "U006", "Base registers must be distinct.", range); } -diagnostic_s diagnostic_s::error_W002(std::string_view ws_uri, std::string_view ws_name) +diagnostic_s diagnostic_s::error_W0002(std::string_view ws_uri, std::string_view ws_name) { return diagnostic_s(std::string(ws_uri), {}, @@ -2421,7 +2421,7 @@ diagnostic_s diagnostic_s::error_W002(std::string_view ws_uri, std::string_view {}); } -diagnostic_s diagnostic_s::error_W003(std::string_view file_name, std::string_view ws_name) +diagnostic_s diagnostic_s::error_W0003(std::string_view file_name, std::string_view ws_name) { return diagnostic_s(std::string(file_name), {}, @@ -2431,7 +2431,7 @@ diagnostic_s diagnostic_s::error_W003(std::string_view file_name, std::string_vi {}); } -diagnostic_s diagnostic_s::error_W004(std::string_view file_name, std::string_view ws_name) +diagnostic_s diagnostic_s::error_W0004(std::string_view file_name, std::string_view ws_name) { return diagnostic_s(std::string(file_name), {}, @@ -2443,7 +2443,7 @@ diagnostic_s diagnostic_s::error_W004(std::string_view file_name, std::string_vi {}); } -diagnostic_s diagnostic_s::error_W005(std::string_view file_name, std::string_view proc_group) +diagnostic_s diagnostic_s::error_W0005(std::string_view file_name, std::string_view proc_group) { return diagnostic_s(std::string(file_name), {}, @@ -2453,7 +2453,7 @@ diagnostic_s diagnostic_s::error_W005(std::string_view file_name, std::string_vi {}); } -diagnostic_s diagnostic_s::error_W006(std::string_view file_name, std::string_view proc_group) +diagnostic_s diagnostic_s::error_W0006(std::string_view file_name, std::string_view proc_group) { return diagnostic_s(std::string(file_name), {}, @@ -2463,6 +2463,20 @@ diagnostic_s diagnostic_s::error_W006(std::string_view file_name, std::string_vi {}); } +diagnostic_s diagnostic_s::error_W0007(std::string_view file_name, std::string_view proc_group) +{ + return diagnostic_s(std::string(file_name), + {}, + diagnostic_severity::warning, + "W0007", + concat("The processor group '", + proc_group, + "' from '", + file_name, + "' refers to invalid OPTABLE value. Using value UNI as default."), + {}); +} + diagnostic_s diagnostic_s::error_L0001(std::string_view path) { return diagnostic_s(std::string(path), {}, "L0001", concat("Unable to load library: ", path, ".")); diff --git a/parser_library/src/diagnostic.h b/parser_library/src/diagnostic.h index 584cddfb7..74d0294d7 100644 --- a/parser_library/src/diagnostic.h +++ b/parser_library/src/diagnostic.h @@ -407,11 +407,11 @@ struct diagnostic_op static bool is_error(const diagnostic_op& diag); - static diagnostic_op error_M000(std::string_view instr_name, int number, const range& range); + static diagnostic_op error_M000(std::string_view instr_name, size_t number, const range& range); - static diagnostic_op error_M001(std::string_view instr_name, int one, int two, const range& range); + static diagnostic_op error_M001(std::string_view instr_name, size_t one, size_t two, const range& range); - static diagnostic_op error_M002(std::string_view instr_name, int one, int two, const range& range); + static diagnostic_op error_M002(std::string_view instr_name, size_t one, size_t two, const range& range); static diagnostic_op error_M003(std::string_view instr_name, const range& range); @@ -497,7 +497,7 @@ struct diagnostic_op static diagnostic_op warn_M136(const range& range); static diagnostic_op error_optional_number_of_operands( - std::string_view instr_name, int optional_no, int operands_no, const range& range); + std::string_view instr_name, size_t optional_no, size_t operands_no, const range& range); static diagnostic_op error_M010(std::string_view instr_name, const range& range); @@ -805,15 +805,17 @@ class diagnostic_s static diagnostic_s warning_L0005(std::string_view pattern, size_t limit); - static diagnostic_s error_W002(std::string_view file_name, std::string_view ws_name); + static diagnostic_s error_W0002(std::string_view file_name, std::string_view ws_name); - static diagnostic_s error_W003(std::string_view file_name, std::string_view ws_name); + static diagnostic_s error_W0003(std::string_view file_name, std::string_view ws_name); - static diagnostic_s error_W004(std::string_view file_name, std::string_view ws_name); + static diagnostic_s error_W0004(std::string_view file_name, std::string_view ws_name); - static diagnostic_s error_W005(std::string_view file_name, std::string_view proc_group); + static diagnostic_s error_W0005(std::string_view file_name, std::string_view proc_group); - static diagnostic_s error_W006(std::string_view file_name, std::string_view proc_group); + static diagnostic_s error_W0006(std::string_view file_name, std::string_view proc_group); + + static diagnostic_s error_W0007(std::string_view file_name, std::string_view proc_group); /* E01x - wrong format diff --git a/parser_library/src/instruction_set_version.h b/parser_library/src/instruction_set_version.h new file mode 100644 index 000000000..8c8a0c1a5 --- /dev/null +++ b/parser_library/src/instruction_set_version.h @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2022 Broadcom. + * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Broadcom, Inc. - initial API and implementation + */ + +#ifndef HLASMPARSER_PARSERLIBRARY_INSTRUCTION_SET_VERSION_H +#define HLASMPARSER_PARSERLIBRARY_INSTRUCTION_SET_VERSION_H + +#include +#include +#include + +// Available instruction sets versions +namespace hlasm_plugin::parser_library { +enum class instruction_set_version +{ + ZOP = 1, + YOP, + Z9, + Z10, + Z11, + Z12, + Z13, + Z14, + Z15, + ESA, + XA, + _370, + DOS, + UNI +}; + +constexpr std::array, 23> instr_set_version_equivalents = { { + { std::string_view("370"), instruction_set_version::_370 }, + { std::string_view("DOS"), instruction_set_version::DOS }, + { std::string_view("ESA"), instruction_set_version::ESA }, + { std::string_view("UNI"), instruction_set_version::UNI }, + { std::string_view("XA"), instruction_set_version::XA }, + { std::string_view("YOP"), instruction_set_version::YOP }, + { std::string_view("Z10"), instruction_set_version::Z10 }, + { std::string_view("Z11"), instruction_set_version::Z11 }, + { std::string_view("Z12"), instruction_set_version::Z12 }, + { std::string_view("Z13"), instruction_set_version::Z13 }, + { std::string_view("Z14"), instruction_set_version::Z14 }, + { std::string_view("Z15"), instruction_set_version::Z15 }, + { std::string_view("Z9"), instruction_set_version::Z9 }, + { std::string_view("ZOP"), instruction_set_version::ZOP }, + { std::string_view("ZS1"), instruction_set_version::ZOP }, + { std::string_view("ZS2"), instruction_set_version::YOP }, + { std::string_view("ZS3"), instruction_set_version::Z9 }, + { std::string_view("ZS4"), instruction_set_version::Z10 }, + { std::string_view("ZS5"), instruction_set_version::Z11 }, + { std::string_view("ZS6"), instruction_set_version::Z12 }, + { std::string_view("ZS7"), instruction_set_version::Z13 }, + { std::string_view("ZS8"), instruction_set_version::Z14 }, + { std::string_view("ZS9"), instruction_set_version::Z15 }, +} }; + +#if __cpp_lib_ranges +static_assert(std::ranges::is_sorted( + instr_set_version_equivalents, {}, &std::pair::first)); +#else +static_assert(std::is_sorted(std::begin(instr_set_version_equivalents), + std::end(instr_set_version_equivalents), + [](const auto& l, const auto& r) { return l.first < r.first; })); +#endif + +} // namespace hlasm_plugin::parser_library + +#endif \ No newline at end of file diff --git a/parser_library/src/lsp/completion_item.cpp b/parser_library/src/lsp/completion_item.cpp index 46a5fe6cc..9a799bbf4 100644 --- a/parser_library/src/lsp/completion_item.cpp +++ b/parser_library/src/lsp/completion_item.cpp @@ -32,208 +32,228 @@ completion_item_s::completion_item_s(std::string label, , kind(kind) {} -const std::set completion_item_s::instruction_completion_items_ = - [] { - using namespace context; - - std::set result; +namespace { +void process_machine_instruction(const context::machine_instruction& machine_instr, + std::set& items) +{ + std::stringstream doc_ss(" "); + std::stringstream detail_ss(""); // operands used for hover - e.g. V,D12U(X,B)[,M] + std::stringstream autocomplete(""); // operands used for autocomplete - e.g. V,D12U(X,B) [,M] + autocomplete << machine_instr.name() << " "; - for (const auto& machine_instr : instruction::all_machine_instructions()) + for (size_t i = 0; i < machine_instr.operands().size(); i++) + { + const auto& op = machine_instr.operands()[i]; + if (machine_instr.optional_operand_count() == 1 && machine_instr.operands().size() - i == 1) + { + autocomplete << " ["; + detail_ss << "["; + if (i != 0) + { + autocomplete << ","; + detail_ss << ","; + } + detail_ss << op.to_string() << "]"; + autocomplete << op.to_string() << "]"; + } + else if (machine_instr.optional_operand_count() == 2 && machine_instr.operands().size() - i == 2) + { + autocomplete << " ["; + detail_ss << "["; + if (i != 0) + { + autocomplete << ","; + detail_ss << ","; + } + detail_ss << op.to_string() << "]"; + autocomplete << op.to_string() << "[,"; + } + else if (machine_instr.optional_operand_count() == 2 && machine_instr.operands().size() - i == 1) + { + detail_ss << op.to_string() << "]]"; + autocomplete << op.to_string() << "]]"; + } + else { - std::stringstream doc_ss(" "); - std::stringstream detail_ss(""); // operands used for hover - e.g. V,D12U(X,B)[,M] - std::stringstream autocomplete(""); // operands used for autocomplete - e.g. V,D12U(X,B) [,M] + if (i != 0) + { + autocomplete << ","; + detail_ss << ","; + } + detail_ss << op.to_string(); + autocomplete << op.to_string(); + } + } + doc_ss << "Machine instruction " << std::endl + << "Instruction format: " << context::instruction::mach_format_to_string(machine_instr.format()); + items.emplace(std::string(machine_instr.name()), + "Operands: " + detail_ss.str(), + autocomplete.str(), + doc_ss.str(), + completion_item_kind::mach_instr); +} - autocomplete << machine_instr.name() << " "; +void process_assembler_instruction(const context::assembler_instruction& asm_instr, + std::set& items) +{ + std::stringstream doc_ss(" "); + std::stringstream detail_ss(""); + + detail_ss << asm_instr.name() << " " << asm_instr.description(); + doc_ss << "Assembler instruction"; + items.emplace(std::string(asm_instr.name()), + detail_ss.str(), + std::string(asm_instr.name()) + " " /*+ description*/, + doc_ss.str(), + completion_item_kind::asm_instr); +} + +void process_mnemonic_code( + const context::mnemonic_code& mnemonic_instr, std::set& items) +{ + std::stringstream doc_ss(" "); + std::stringstream detail_ss(""); + std::stringstream subs_ops_mnems(" "); + std::stringstream subs_ops_nomnems(" "); + + // get mnemonic operands + size_t iter_over_mnem = 0; + + const auto& mach_operands = mnemonic_instr.instruction()->operands(); + auto no_optional = mnemonic_instr.instruction()->optional_operand_count(); + bool first = true; + std::vector mnemonic_with_operand_ommited = { "VNOT", "NOTR", "NOTGR" }; + + + auto replaces = mnemonic_instr.replaced_operands(); - for (size_t i = 0; i < machine_instr.operands().size(); i++) + for (size_t i = 0; i < mach_operands.size(); i++) + { + if (replaces.size() > iter_over_mnem) + { + auto [position, value] = replaces[iter_over_mnem]; + // can still replace mnemonics + if (position == i) { - const auto& op = machine_instr.operands()[i]; - if (machine_instr.optional_operand_count() == 1 && machine_instr.operands().size() - i == 1) + // mnemonics can be substituted when no_optional is 1, but not 2 -> 2 not implemented + if (no_optional == 1 && mach_operands.size() - i == 1) { - autocomplete << " ["; - detail_ss << "["; + subs_ops_mnems << "["; if (i != 0) - { - autocomplete << ","; - detail_ss << ","; - } - detail_ss << op.to_string() << "]"; - autocomplete << op.to_string() << "]"; + subs_ops_mnems << ","; + subs_ops_mnems << std::to_string(value) + "]"; + continue; } - else if (machine_instr.optional_operand_count() == 2 && machine_instr.operands().size() - i == 2) + // replace current for mnemonic + if (i != 0) + subs_ops_mnems << ","; + if (std::find(mnemonic_with_operand_ommited.begin(), + mnemonic_with_operand_ommited.end(), + mnemonic_instr.name()) + != mnemonic_with_operand_ommited.end()) { - autocomplete << " ["; - detail_ss << "["; - if (i != 0) - { - autocomplete << ","; - detail_ss << ","; - } - detail_ss << op.to_string() << "]"; - autocomplete << op.to_string() << "[,"; - } - else if (machine_instr.optional_operand_count() == 2 && machine_instr.operands().size() - i == 1) - { - detail_ss << op.to_string() << "]]"; - autocomplete << op.to_string() << "]]"; + subs_ops_mnems << mach_operands[i - 1].to_string(); } else - { - if (i != 0) - { - autocomplete << ","; - detail_ss << ","; - } - detail_ss << op.to_string(); - autocomplete << op.to_string(); - } + subs_ops_mnems << std::to_string(value); + iter_over_mnem++; + continue; } - doc_ss << "Machine instruction " << std::endl - << "Instruction format: " << instruction::mach_format_to_string(machine_instr.format()); - result.emplace(std::string(machine_instr.name()), - "Operands: " + detail_ss.str(), - autocomplete.str(), - doc_ss.str(), - completion_item_kind::mach_instr); } - - for (const auto& asm_instr : instruction::all_assembler_instructions()) + // do not replace by a mnemonic + std::string curr_op_with_mnem = ""; + std::string curr_op_without_mnem = ""; + if (no_optional == 0) { - std::stringstream doc_ss(" "); - std::stringstream detail_ss(""); - - // int min_op = asm_instr.second.min_operands; - // int max_op = asm_instr.second.max_operands; - - detail_ss << asm_instr.name() << " " << asm_instr.description(); - doc_ss << "Assembler instruction"; - result.emplace(std::string(asm_instr.name()), - detail_ss.str(), - std::string(asm_instr.name()) + " " /*+ description*/, - doc_ss.str(), - completion_item_kind::asm_instr); + if (i != 0) + curr_op_with_mnem += ","; + if (!first) + curr_op_without_mnem += ","; + curr_op_with_mnem += mach_operands[i].to_string(); + curr_op_without_mnem += mach_operands[i].to_string(); } - - for (const auto& mnemonic_instr : instruction::all_mnemonic_codes()) + else if (no_optional == 1 && mach_operands.size() - i == 1) { - std::stringstream doc_ss(" "); - std::stringstream detail_ss(""); - std::stringstream subs_ops_mnems(" "); - std::stringstream subs_ops_nomnems(" "); + curr_op_with_mnem += "["; + curr_op_without_mnem += "["; + if (i != 0) + curr_op_with_mnem += ","; + if (!first) + curr_op_without_mnem += ","; + curr_op_with_mnem += mach_operands[i].to_string() + "]"; + curr_op_without_mnem += mach_operands[i].to_string() + "]"; + } + else if (no_optional == 2 && mach_operands.size() - i == 1) + { + curr_op_with_mnem += mach_operands[i].to_string() + "]]"; + curr_op_without_mnem += mach_operands[i].to_string() + "]]"; + } + else if (no_optional == 2 && mach_operands.size() - i == 2) + { + curr_op_with_mnem += "["; + curr_op_without_mnem += "["; + if (i != 0) + curr_op_with_mnem += ","; + if (!first) + curr_op_without_mnem += ","; + curr_op_with_mnem += mach_operands[i].to_string() + "[,"; + curr_op_without_mnem += mach_operands[i].to_string() + "[,"; + } + subs_ops_mnems << curr_op_with_mnem; + subs_ops_nomnems << curr_op_without_mnem; + first = false; + } + detail_ss << "Operands: " + subs_ops_nomnems.str(); + doc_ss << "Mnemonic code for " << mnemonic_instr.instruction()->name() << " instruction" << std::endl + << "Substituted operands: " << subs_ops_mnems.str() << std::endl + << "Instruction format: " + << context::instruction::mach_format_to_string(mnemonic_instr.instruction()->format()); + items.emplace(std::string(mnemonic_instr.name()), + detail_ss.str(), + std::string(mnemonic_instr.name()) + " " + subs_ops_nomnems.str(), + doc_ss.str(), + completion_item_kind::mach_instr); +} - // get mnemonic operands - size_t iter_over_mnem = 0; +void process_ca_instruction( + const context::ca_instruction& ca_instr, std::set& items) +{ + items.emplace(std::string(ca_instr.name()), + "", + std::string(ca_instr.name()), + "Conditional Assembly", + completion_item_kind::ca_instr); +} - const auto& mach_operands = mnemonic_instr.instruction()->operands(); - auto no_optional = mnemonic_instr.instruction()->optional_operand_count(); - bool first = true; - std::vector mnemonic_with_operand_ommited = { "VNOT", "NOTR", "NOTGR" }; +} // namespace +const std::set completion_item_s::m_instruction_completion_items = + [] { + std::set result; - auto replaces = mnemonic_instr.replaced_operands(); + for (const auto& instr : context::instruction::all_ca_instructions()) + { + process_ca_instruction(instr, result); + } - for (size_t i = 0; i < mach_operands.size(); i++) - { - if (replaces.size() > iter_over_mnem) - { - auto [position, value] = replaces[iter_over_mnem]; - // can still replace mnemonics - if (position == i) - { - // mnemonics can be substituted when no_optional is 1, but not 2 -> 2 not implemented - if (no_optional == 1 && mach_operands.size() - i == 1) - { - subs_ops_mnems << "["; - if (i != 0) - subs_ops_mnems << ","; - subs_ops_mnems << std::to_string(value) + "]"; - continue; - } - // replace current for mnemonic - if (i != 0) - subs_ops_mnems << ","; - if (std::find(mnemonic_with_operand_ommited.begin(), - mnemonic_with_operand_ommited.end(), - mnemonic_instr.name()) - != mnemonic_with_operand_ommited.end()) - { - subs_ops_mnems << mach_operands[i - 1].to_string(); - } - else - subs_ops_mnems << std::to_string(value); - iter_over_mnem++; - continue; - } - } - // do not replace by a mnemonic - std::string curr_op_with_mnem = ""; - std::string curr_op_without_mnem = ""; - if (no_optional == 0) - { - if (i != 0) - curr_op_with_mnem += ","; - if (!first) - curr_op_without_mnem += ","; - curr_op_with_mnem += mach_operands[i].to_string(); - curr_op_without_mnem += mach_operands[i].to_string(); - } - else if (no_optional == 1 && mach_operands.size() - i == 1) - { - curr_op_with_mnem += "["; - curr_op_without_mnem += "["; - if (i != 0) - curr_op_with_mnem += ","; - if (!first) - curr_op_without_mnem += ","; - curr_op_with_mnem += mach_operands[i].to_string() + "]"; - curr_op_without_mnem += mach_operands[i].to_string() + "]"; - } - else if (no_optional == 2 && mach_operands.size() - i == 1) - { - curr_op_with_mnem += mach_operands[i].to_string() + "]]"; - curr_op_without_mnem += mach_operands[i].to_string() + "]]"; - } - else if (no_optional == 2 && mach_operands.size() - i == 2) - { - curr_op_with_mnem += "["; - curr_op_without_mnem += "["; - if (i != 0) - curr_op_with_mnem += ","; - if (!first) - curr_op_without_mnem += ","; - curr_op_with_mnem += mach_operands[i].to_string() + "[,"; - curr_op_without_mnem += mach_operands[i].to_string() + "[,"; - } - subs_ops_mnems << curr_op_with_mnem; - subs_ops_nomnems << curr_op_without_mnem; - first = false; - } - detail_ss << "Operands: " + subs_ops_nomnems.str(); - doc_ss << "Mnemonic code for " << mnemonic_instr.instruction()->name() << " instruction" << std::endl - << "Substituted operands: " << subs_ops_mnems.str() << std::endl - << "Instruction format: " - << instruction::mach_format_to_string(mnemonic_instr.instruction()->format()); - result.emplace(std::string(mnemonic_instr.name()), - detail_ss.str(), - std::string(mnemonic_instr.name()) + " " + subs_ops_nomnems.str(), - doc_ss.str(), - completion_item_kind::mach_instr); + for (const auto& instr : context::instruction::all_assembler_instructions()) + { + process_assembler_instruction(instr, result); } - for (const auto& ca_instr : instruction::all_ca_instructions()) + for (const auto& instr : context::instruction::all_machine_instructions()) { - result.emplace(std::string(ca_instr.name()), - "", - std::string(ca_instr.name()), - "Conditional Assembly", - completion_item_kind::ca_instr); + process_machine_instruction(instr, result); } - return result; - }(); + for (const auto& instr : context::instruction::all_mnemonic_codes()) + { + process_mnemonic_code(instr, result); + } + return result; + }(); bool operator==(const completion_item_s& lhs, const completion_item_s& rhs) { @@ -241,5 +261,4 @@ bool operator==(const completion_item_s& lhs, const completion_item_s& rhs) && lhs.documentation == rhs.documentation && lhs.kind == rhs.kind; } - } // namespace hlasm_plugin::parser_library::lsp \ No newline at end of file diff --git a/parser_library/src/lsp/completion_item.h b/parser_library/src/lsp/completion_item.h index 605b79751..10cdcb6fa 100644 --- a/parser_library/src/lsp/completion_item.h +++ b/parser_library/src/lsp/completion_item.h @@ -19,6 +19,7 @@ #include #include +#include "context/hlasm_context.h" #include "protocol.h" namespace hlasm_plugin::parser_library::lsp { @@ -28,8 +29,7 @@ using completion_list_s = std::vector; // representation of completion item based on LSP struct completion_item_s { -public: - // contents directly passed via the contrusctor + // contents directly passed via the constructor completion_item_s(std::string label, std::string detail, std::string insert_text, @@ -60,7 +60,7 @@ struct completion_item_s } }; - static const std::set instruction_completion_items_; + static const std::set m_instruction_completion_items; }; bool operator==(const completion_item_s& lhs, const completion_item_s& rhs); diff --git a/parser_library/src/lsp/lsp_context.cpp b/parser_library/src/lsp/lsp_context.cpp index 3daca0d0e..c06875f0e 100644 --- a/parser_library/src/lsp/lsp_context.cpp +++ b/parser_library/src/lsp/lsp_context.cpp @@ -111,10 +111,10 @@ void lsp_context::document_symbol_macro(document_symbol_list_s& result, long long& limit, document_symbol_cache& cache) const { - auto m = std::find_if(macros_.begin(), macros_.end(), [&document_uri](const auto& mac) { + auto m = std::find_if(m_macros.begin(), m_macros.end(), [&document_uri](const auto& mac) { return mac.first->definition_location.file == document_uri; }); - if (m == macros_.end()) + if (m == m_macros.end()) return; const auto& [def, info] = *m; @@ -187,9 +187,9 @@ const std::vector>>& if (auto it = cache.occurences.find(document_uri); it != cache.occurences.end()) return it->second; - const auto& file = files_.find(document_uri); + const auto& file = m_files.find(document_uri); std::vector>> copy_occurences; - for (const auto& [uri, info] : files_) + for (const auto& [uri, info] : m_files) { if (info->type != file_type::COPY) continue; @@ -326,14 +326,14 @@ void lsp_context::document_symbol_symbol(document_symbol_list_s& modified, void lsp_context::document_symbol_opencode_ord_symbol(document_symbol_list_s& result, long long& limit) const { - const auto& symbol_list = hlasm_ctx_->ord_ctx.symbols(); + const auto& symbol_list = m_hlasm_ctx->ord_ctx.symbols(); std::map children_of_sects; for (const auto& [id, sym_var] : symbol_list) { const auto* sym = std::get_if(&sym_var); if (sym && sym->attributes().origin == context::symbol_origin::SECT) { - if (auto sect = hlasm_ctx_->ord_ctx.get_section(id)) + if (auto sect = m_hlasm_ctx->ord_ctx.get_section(id)) { children_of_sects.try_emplace(sect, document_symbol_list_s {}); --limit; @@ -377,7 +377,7 @@ void lsp_context::document_symbol_opencode_ord_symbol(document_symbol_list_s& re } else { - const auto* sect_sym = hlasm_ctx_->ord_ctx.get_symbol(sect->name); + const auto* sect_sym = m_hlasm_ctx->ord_ctx.get_symbol(sect->name); auto& children = children_of_sects.find(sect)->second; unsigned long i = 1; if (do_not_need_nodes(sym.proc_stack(), sect_sym->proc_stack(), i)) @@ -402,7 +402,7 @@ void lsp_context::document_symbol_opencode_ord_symbol(document_symbol_list_s& re for (auto&& [sect, children] : children_of_sects) { - const auto& sym = *hlasm_ctx_->ord_ctx.get_symbol(sect->name); + const auto& sym = *m_hlasm_ctx->ord_ctx.get_symbol(sect->name); if (sym.proc_stack().size() == 1) { result.emplace_back(*sect->name, @@ -438,7 +438,7 @@ void lsp_context::document_symbol_opencode_var_seq_symbol_aux(document_symbol_li if (uri == name_to_uri_cache.end() || uri->second.empty()) return; - if (const auto& file = files_.find(std::string(uri->second)); file != files_.end()) + if (const auto& file = m_files.find(std::string(uri->second)); file != m_files.end()) { if (file->second->type == file_type::MACRO) document_symbol_macro(item.children, file->first, item.symbol_range, limit, cache); @@ -453,14 +453,14 @@ void lsp_context::document_symbol_opencode_var_seq_symbol_aux(document_symbol_li document_symbol_list_s lsp_context::document_symbol(const std::string& document_uri, long long limit) const { document_symbol_list_s result; - const auto& file = files_.find(document_uri); - if (file == files_.end() || limit <= 0) + const auto& file = m_files.find(document_uri); + if (file == m_files.end() || limit <= 0) return result; std::unordered_map name_to_uri; - for (const auto& [def, info] : macros_) + for (const auto& [def, info] : m_macros) name_to_uri.insert_or_assign(*def->id, info->definition_location.file); - for (const auto& [def, info] : hlasm_ctx_->copy_members()) + for (const auto& [def, info] : m_hlasm_ctx->copy_members()) name_to_uri.insert_or_assign(*info->name, info->definition_location.file); document_symbol_cache cache; @@ -479,7 +479,7 @@ document_symbol_list_s lsp_context::document_symbol(const std::string& document_ document_symbol_opencode_ord_symbol(result, limit); document_symbol_opencode_var_seq_symbol_aux(result, name_to_uri, limit, cache); - for (const auto& sym : opencode_->variable_definitions) + for (const auto& sym : m_opencode->variable_definitions) { if (limit <= 0) break; @@ -502,11 +502,11 @@ document_symbol_list_s lsp_context::document_symbol(const std::string& document_ void lsp_context::add_file(file_info file_i) { std::string name = file_i.name; - files_.try_emplace(std::move(name), std::make_unique(std::move(file_i))); + m_files.try_emplace(std::move(name), std::make_unique(std::move(file_i))); } lsp_context::lsp_context(std::shared_ptr h_ctx) - : hlasm_ctx_(std::move(h_ctx)) + : m_hlasm_ctx(std::move(h_ctx)) {} void lsp_context::add_copy(context::copy_member_ptr copy, text_data_ref_t text_data) @@ -519,37 +519,37 @@ void lsp_context::add_macro(macro_info_ptr macro_i, text_data_ref_t text_data) if (macro_i->external) add_file(file_info(macro_i->macro_definition, std::move(text_data))); - macros_[macro_i->macro_definition] = macro_i; + m_macros[macro_i->macro_definition] = macro_i; } void lsp_context::add_opencode(opencode_info_ptr opencode_i, text_data_ref_t text_data) { - opencode_ = std::move(opencode_i); - add_file(file_info(hlasm_ctx_->opencode_file_name(), std::move(text_data))); + m_opencode = std::move(opencode_i); + add_file(file_info(m_hlasm_ctx->opencode_file_name(), std::move(text_data))); - // distribute all occurences as all files are present - for (const auto& [_, m] : macros_) + // distribute all occurrences as all files are present + for (const auto& [_, m] : m_macros) distribute_macro_i(m); - distribute_file_occurences(opencode_->file_occurences); + distribute_file_occurences(m_opencode->file_occurences); - for (const auto& [name, file] : files_) + for (const auto& [name, file] : m_files) file->process_occurrences(); } macro_info_ptr lsp_context::get_macro_info(context::id_index macro_name) const { // This function does not respect OPSYN, so we do not use hlasm_context::get_macro_definition - auto it = hlasm_ctx_->macros().find(macro_name); - if (it == hlasm_ctx_->macros().end()) + auto it = m_hlasm_ctx->macros().find(macro_name); + if (it == m_hlasm_ctx->macros().end()) return nullptr; else - return macros_.at(it->second); + return m_macros.at(it->second); } const file_info* lsp_context::get_file_info(const std::string& file_name) const { - if (auto it = files_.find(file_name); it != files_.end()) + if (auto it = m_files.find(file_name); it != m_files.end()) return it->second.get(); else return nullptr; @@ -591,13 +591,13 @@ location_list lsp_context::references(const std::string& document_uri, const pos if (macro_scope) collect_references(result, *occ, macro_scope->file_occurences_); else - collect_references(result, *occ, opencode_->file_occurences); + collect_references(result, *occ, m_opencode->file_occurences); } else { - for (const auto& [_, mac_i] : macros_) + for (const auto& [_, mac_i] : m_macros) collect_references(result, *occ, mac_i->file_occurences_); - collect_references(result, *occ, opencode_->file_occurences); + collect_references(result, *occ, m_opencode->file_occurences); } return result; @@ -635,8 +635,8 @@ completion_list_s lsp_context::completion(const std::string& document_uri, const char trigger_char, completion_trigger_kind trigger_kind) const { - auto file_it = files_.find(document_uri); - if (file_it == files_.end()) + auto file_it = m_files.find(document_uri); + if (file_it == m_files.end()) return completion_list_s(); const text_data_ref_t& text = file_it->second->data; @@ -659,7 +659,7 @@ completion_list_s lsp_context::complete_var(const file_info& file, position pos) completion_list_s items; - const vardef_storage& var_defs = scope ? scope->var_definitions : opencode_->variable_definitions; + const vardef_storage& var_defs = scope ? scope->var_definitions : m_opencode->variable_definitions; for (const auto& vardef : var_defs) { items.emplace_back( @@ -674,7 +674,7 @@ completion_list_s lsp_context::complete_seq(const file_info& file, position pos) auto macro_i = file.find_scope(pos); const context::label_storage& seq_syms = - macro_i ? macro_i->macro_definition->labels : hlasm_ctx_->current_scope().sequence_symbols; + macro_i ? macro_i->macro_definition->labels : m_hlasm_ctx->current_scope().sequence_symbols; completion_list_s items; for (const auto& [_, sym] : seq_syms) @@ -724,8 +724,8 @@ bool is_comment(std::string_view line) { return line.substr(0, 1) == "*" || line std::string lsp_context::get_macro_documentation(const macro_info& m) const { // Get file, where the macro is defined - auto it = files_.find(m.definition_location.file); - if (it == files_.end()) + auto it = m_files.find(m.definition_location.file); + if (it == m_files.end()) return ""; const text_data_ref_t& text = it->second->data; @@ -768,10 +768,21 @@ std::string lsp_context::get_macro_documentation(const macro_info& m) const completion_list_s lsp_context::complete_instr(const file_info&, position) const { - completion_list_s result(completion_item_s::instruction_completion_items_.begin(), - completion_item_s::instruction_completion_items_.end()); + completion_list_s result; - for (const auto& [_, macro_i] : macros_) + // Store only instructions from the currently active instruction set + for (const auto& instr : completion_item_s::m_instruction_completion_items) + { + auto id = m_hlasm_ctx->ids().find(instr.label); + + auto it = m_hlasm_ctx->instruction_map().find(id); + if (it != m_hlasm_ctx->instruction_map().end()) + { + result.emplace_back(instr); + } + } + + for (const auto& [_, macro_i] : m_macros) { const context::macro_definition& m = *macro_i->macro_definition; @@ -795,25 +806,25 @@ bool files_present( void lsp_context::distribute_macro_i(macro_info_ptr macro_i) { - assert(files_present(files_, macro_i->file_scopes_)); + assert(files_present(m_files, macro_i->file_scopes_)); for (const auto& [file, slices] : macro_i->file_scopes_) - files_[file]->update_slices(file_slice_t::transform_slices(slices, macro_i)); + m_files[file]->update_slices(file_slice_t::transform_slices(slices, macro_i)); distribute_file_occurences(macro_i->file_occurences_); } void lsp_context::distribute_file_occurences(const file_occurences_t& occurences) { - assert(files_present(files_, occurences)); + assert(files_present(m_files, occurences)); for (const auto& [file, occs] : occurences) - files_[file]->update_occurences(occs); + m_files[file]->update_occurences(occs); } occurence_scope_t lsp_context::find_occurence_with_scope(const std::string& document_uri, const position pos) const { - if (auto file = files_.find(document_uri); file != files_.end()) + if (auto file = m_files.find(document_uri); file != m_files.end()) return file->second->find_occurence_with_scope(pos); return std::make_pair(nullptr, nullptr); } @@ -824,21 +835,21 @@ std::optional lsp_context::find_definition_location( switch (occ.kind) { case lsp::occurence_kind::ORD: { - auto sym = hlasm_ctx_->ord_ctx.get_symbol(occ.name); + auto sym = m_hlasm_ctx->ord_ctx.get_symbol(occ.name); if (sym) return sym->symbol_location; break; } case lsp::occurence_kind::SEQ: { const context::label_storage& seq_syms = - macro_scope_i ? macro_scope_i->macro_definition->labels : hlasm_ctx_->current_scope().sequence_symbols; + macro_scope_i ? macro_scope_i->macro_definition->labels : m_hlasm_ctx->current_scope().sequence_symbols; if (auto sym = seq_syms.find(occ.name); sym != seq_syms.end()) return sym->second->symbol_location; break; } case lsp::occurence_kind::VAR: { const vardef_storage& var_syms = - macro_scope_i ? macro_scope_i->var_definitions : opencode_->variable_definitions; + macro_scope_i ? macro_scope_i->var_definitions : m_opencode->variable_definitions; auto sym = std::find_if( var_syms.begin(), var_syms.end(), [&occ](const auto& var) { return var.name == occ.name; }); @@ -855,17 +866,25 @@ std::optional lsp_context::find_definition_location( case lsp::occurence_kind::INSTR: { if (occ.opcode) { - if (auto it = macros_.find(occ.opcode); it != macros_.end()) + if (auto it = m_macros.find(occ.opcode); it != m_macros.end()) return it->second->definition_location; } break; } case lsp::occurence_kind::COPY_OP: { - auto copy = std::find_if(files_.begin(), files_.end(), [&](const auto& f) { +#ifdef __cpp_lib_ranges + auto copy = std::ranges::find_if(m_files, [&](const auto& f) { return f.second->type == file_type::COPY && std::get(f.second->owner)->name == occ.name; }); - if (copy != files_.end()) +#else + auto copy = std::find_if(m_files.begin(), m_files.end(), [&](const auto& f) { + return f.second->type == file_type::COPY + && std::get(f.second->owner)->name == occ.name; + }); +#endif + + if (copy != m_files.end()) return std::get(copy->second->owner)->definition_location; break; } @@ -880,7 +899,7 @@ hover_result lsp_context::find_hover(const symbol_occurence& occ, macro_info_ptr switch (occ.kind) { case lsp::occurence_kind::ORD: { - auto sym = hlasm_ctx_->ord_ctx.get_symbol(occ.name); + auto sym = m_hlasm_ctx->ord_ctx.get_symbol(occ.name); if (sym) return hover_text(*sym); break; @@ -890,7 +909,7 @@ hover_result lsp_context::find_hover(const symbol_occurence& occ, macro_info_ptr case lsp::occurence_kind::VAR: { const vardef_storage& var_syms = - macro_scope_i ? macro_scope_i->var_definitions : opencode_->variable_definitions; + macro_scope_i ? macro_scope_i->var_definitions : m_opencode->variable_definitions; auto sym = std::find_if(var_syms.begin(), var_syms.end(), [&](const auto& var) { return var.name == occ.name; }); @@ -901,14 +920,14 @@ hover_result lsp_context::find_hover(const symbol_occurence& occ, macro_info_ptr case lsp::occurence_kind::INSTR: { if (occ.opcode) { - auto it = macros_.find(occ.opcode); - assert(it != macros_.end()); + auto it = m_macros.find(occ.opcode); + assert(it != m_macros.end()); return get_macro_documentation(*it->second); } else { - auto it = completion_item_s::instruction_completion_items_.find(*occ.name); - if (it == completion_item_s::instruction_completion_items_.end()) + auto it = completion_item_s::m_instruction_completion_items.find(*occ.name); + if (it == completion_item_s::m_instruction_completion_items.end()) return ""; return it->detail + " \n" + it->documentation; } diff --git a/parser_library/src/lsp/lsp_context.h b/parser_library/src/lsp/lsp_context.h index e8192897c..f17fe55c8 100644 --- a/parser_library/src/lsp/lsp_context.h +++ b/parser_library/src/lsp/lsp_context.h @@ -26,11 +26,11 @@ namespace hlasm_plugin::parser_library::lsp { class lsp_context final : public feature_provider { - opencode_info_ptr opencode_; - std::unordered_map files_; - std::unordered_map macros_; + opencode_info_ptr m_opencode; + std::unordered_map m_files; + std::unordered_map m_macros; - std::shared_ptr hlasm_ctx_; + std::shared_ptr m_hlasm_ctx; struct document_symbol_cache { diff --git a/parser_library/src/processing/instruction_sets/low_language_processor.cpp b/parser_library/src/processing/instruction_sets/low_language_processor.cpp index 7f6eb3910..d25132925 100644 --- a/parser_library/src/processing/instruction_sets/low_language_processor.cpp +++ b/parser_library/src/processing/instruction_sets/low_language_processor.cpp @@ -223,9 +223,9 @@ low_language_processor::transform_result low_language_processor::transform_mnemo // operands obtained from the user const auto& operands = stmt.operands_ref().value; // the name of the instruction (mnemonic) obtained from the user - auto instr_name = *stmt.opcode_ref().value; + const auto& instr_name = *stmt.opcode_ref().value; // the associated mnemonic structure with the given name - auto mnemonic = context::instruction::get_mnemonic_codes(instr_name); + const auto& mnemonic = context::instruction::get_mnemonic_codes(instr_name); // the machine instruction structure associated with the given instruction name auto curr_instr = mnemonic.instruction(); @@ -239,7 +239,7 @@ low_language_processor::transform_result low_language_processor::transform_mnemo { auto curr_diag = diagnostic_op::error_optional_number_of_operands(instr_name, curr_instr->optional_operand_count(), - (int)curr_instr->operands().size() - (int)replaced.size(), + curr_instr->operands().size() - replaced.size(), stmt.stmt_range_ref()); add_diagnostic(curr_diag); @@ -247,7 +247,7 @@ low_language_processor::transform_result low_language_processor::transform_mnemo } std::vector substituted_mnems; - for (auto mnem : replaced) + for (const auto& mnem : replaced) substituted_mnems.push_back(std::make_unique((int)mnem.second)); std::vector operand_vector; diff --git a/parser_library/src/processing/instruction_sets/mach_processor.h b/parser_library/src/processing/instruction_sets/mach_processor.h index 6fb0f6823..537c2de52 100644 --- a/parser_library/src/processing/instruction_sets/mach_processor.h +++ b/parser_library/src/processing/instruction_sets/mach_processor.h @@ -22,8 +22,6 @@ namespace hlasm_plugin::parser_library::processing { // processor of machine instructions class mach_processor : public low_language_processor { - checking::machine_checker checker; - public: mach_processor(analyzing_context ctx, branching_provider& branch_provider, diff --git a/parser_library/src/processing/op_code.cpp b/parser_library/src/processing/op_code.cpp index 518136f30..dea54083e 100644 --- a/parser_library/src/processing/op_code.cpp +++ b/parser_library/src/processing/op_code.cpp @@ -50,7 +50,7 @@ processing_status_cache_key::processing_status_cache_key(const processing_status : form(s.first.form) , occurence(s.first.occurence) , is_alias(s.second.type == context::instruction_type::ASM && s.second.value && *s.second.value == "ALIAS") - , loctr_len(generate_loctr_len(s.second.value)) - , rel_addr(get_reladdr_bitmask(s.second.value)) + , loctr_len(s.second.type != context::instruction_type::MACH ? 1 : generate_loctr_len(s.second.value)) + , rel_addr(s.second.type != context::instruction_type::MACH ? 0 : get_reladdr_bitmask(s.second.value)) {} } // namespace hlasm_plugin::parser_library::processing diff --git a/parser_library/src/semantics/statement.h b/parser_library/src/semantics/statement.h index a7d1af36f..485c9366f 100644 --- a/parser_library/src/semantics/statement.h +++ b/parser_library/src/semantics/statement.h @@ -23,7 +23,7 @@ namespace hlasm_plugin::parser_library::semantics { -// structure representing core fields of statmenent +// structure representing core fields of statement struct core_statement { virtual const range& stmt_range_ref() const = 0; diff --git a/parser_library/src/workspaces/file_manager_impl.cpp b/parser_library/src/workspaces/file_manager_impl.cpp index 882b83f75..dbcb8f973 100644 --- a/parser_library/src/workspaces/file_manager_impl.cpp +++ b/parser_library/src/workspaces/file_manager_impl.cpp @@ -141,7 +141,8 @@ void file_manager_impl::did_open_file(const std::string& document_uri, version_t void file_manager_impl::did_change_file( const std::string& document_uri, version_t, const document_change* changes, size_t ch_size) { - // the version is the version after the changes -> I dont see how is that useful + // TODO + // the version is the version after the changes -> I don't see how is that useful // should we just overwrite the version?? // on the other hand, the spec clearly specifies that each change increments version by one. diff --git a/parser_library/src/workspaces/processor_group.cpp b/parser_library/src/workspaces/processor_group.cpp index e950050ab..bc9e996c6 100644 --- a/parser_library/src/workspaces/processor_group.cpp +++ b/parser_library/src/workspaces/processor_group.cpp @@ -31,32 +31,59 @@ struct translate_pp_options return cics_preprocessor_options(opt.prolog, opt.epilog, opt.leasm); } }; +} // namespace + +processor_group::processor_group(const std::string& pg_name, + std::string_view pg_file_name, + const config::assembler_options& asm_options, + const config::preprocessor_options& pp) + : m_pg_name(pg_name) + , m_asm_opts(translate_assembler_options(asm_options, pg_file_name)) + , m_prep_opts(std::visit(translate_pp_options {}, pp.options)) +{} -asm_option translate_assembler_options(const config::assembler_options& asm_options) +instruction_set_version processor_group::find_instruction_set( + std::string_view optable, std::string_view pg_file_name) const +{ +#ifdef __cpp_lib_ranges + auto it = std::ranges::lower_bound( + instr_set_version_equivalents, optable, {}, [](const auto& instr) { return instr.first; }); +#else + auto it = std::lower_bound(std::begin(instr_set_version_equivalents), + std::end(instr_set_version_equivalents), + optable, + [](const auto& l, const auto& r) { return l.first < r; }); +#endif + + if (it == std::end(instr_set_version_equivalents) || it->first != optable) + { + add_diagnostic(diagnostic_s::error_W0007(pg_file_name, m_pg_name)); + return asm_option::instr_set_default; + } + + return it->second; +} + +asm_option processor_group::translate_assembler_options( + const config::assembler_options& asm_options, std::string_view pg_file_name) const { return asm_option { asm_options.sysparm, asm_options.profile, + asm_options.optable.empty() ? asm_option::instr_set_default + : find_instruction_set(asm_options.optable, pg_file_name), asm_options.system_id.empty() ? asm_option::system_id_default : asm_options.system_id, }; } -} // namespace - -processor_group::processor_group( - const std::string& name, const config::assembler_options& asm_options, const config::preprocessor_options& pp) - : name_(name) - , asm_optns(translate_assembler_options(asm_options)) - , prep_opts(std::visit(translate_pp_options {}, pp.options)) -{} void processor_group::collect_diags() const { - for (auto&& lib : libs_) + for (auto&& lib : m_libs) { collect_diags_from_child(*lib); } } -void processor_group::add_library(std::unique_ptr library) { libs_.push_back(std::move(library)); } +void processor_group::add_library(std::unique_ptr library) { m_libs.push_back(std::move(library)); } } // namespace hlasm_plugin::parser_library::workspaces diff --git a/parser_library/src/workspaces/processor_group.h b/parser_library/src/workspaces/processor_group.h index bb8d94ca2..e961252be 100644 --- a/parser_library/src/workspaces/processor_group.h +++ b/parser_library/src/workspaces/processor_group.h @@ -17,6 +17,7 @@ #include "compiler_options.h" #include "diagnosable_impl.h" +#include "file_manager.h" #include "library.h" #include "preprocessor_options.h" @@ -31,26 +32,32 @@ namespace hlasm_plugin::parser_library::workspaces { class processor_group : public diagnosable_impl { public: - processor_group( - const std::string& name, const config::assembler_options& asm_options, const config::preprocessor_options& pp); + processor_group(const std::string& pg_name, + std::string_view pg_file_name, + const config::assembler_options& asm_options, + const config::preprocessor_options& pp); void collect_diags() const override; void add_library(std::unique_ptr library); - const std::string& name() const { return name_; } + const std::string& name() const { return m_pg_name; } - const std::vector>& libraries() const { return libs_; } + const std::vector>& libraries() const { return m_libs; } - const asm_option& asm_options() const { return asm_optns; } + const asm_option& asm_options() const { return m_asm_opts; } - const preprocessor_options& preprocessor() const { return prep_opts; } + const preprocessor_options& preprocessor() const { return m_prep_opts; } private: - std::vector> libs_; - std::string name_; - asm_option asm_optns; - preprocessor_options prep_opts; + std::vector> m_libs; + std::string m_pg_name; + asm_option m_asm_opts; + preprocessor_options m_prep_opts; + + instruction_set_version find_instruction_set(std::string_view optable, std::string_view pg_file_name) const; + asm_option translate_assembler_options( + const config::assembler_options& asm_options, std::string_view pg_file_name) const; }; } // namespace hlasm_plugin::parser_library::workspaces #endif // !HLASMPLUGIN_PARSERLIBRARY_PROCESSOR_GROUP_H diff --git a/parser_library/src/workspaces/workspace.cpp b/parser_library/src/workspaces/workspace.cpp index ef66a7253..03db9c9ca 100644 --- a/parser_library/src/workspaces/workspace.cpp +++ b/parser_library/src/workspaces/workspace.cpp @@ -44,7 +44,7 @@ workspace::workspace(const ws_uri& uri, , uri_(uri) , file_manager_(file_manager) , fm_vfm_(file_manager_) - , implicit_proc_grp("pg_implicit", {}, {}) + , implicit_proc_grp("pg_implicit", "", {}, {}) , ws_path_(uri) , global_config_(global_config) { @@ -150,37 +150,52 @@ const processor_group& workspace::get_proc_grp_by_program(const std::string& fil const ws_uri& workspace::uri() { return uri_; } -workspace_file_info workspace::parse_file(const std::string& file_uri) +bool workspace::is_config_file(const std::string& file_uri) const +{ + std::filesystem::path file_path(file_uri); + + return utils::path::equal(file_path, proc_grps_path_) || utils::path::equal(file_path, pgm_conf_path_); +} + +workspace_file_info workspace::parse_config_file() { workspace_file_info ws_file_info; - std::filesystem::path file_path(file_uri); - // add support for hlasm to vscode (auto detection??) and do the decision based on languageid - if (utils::path::equal(file_path, proc_grps_path_) || utils::path::equal(file_path, pgm_conf_path_)) + if (load_and_process_config()) { - if (load_and_process_config()) + // Reparse every opened file when configuration is changed + for (const auto& fname : opened_files_) { - for (auto fname : dependants_) - { - auto found = file_manager_.find_processor_file(fname); - if (found) - found->parse(*this, get_asm_options(fname), get_preprocessor_options(fname), &fm_vfm_); - } + auto found = file_manager_.find_processor_file(fname); + if (found) + found->parse(*this, get_asm_options(fname), get_preprocessor_options(fname), &fm_vfm_); + } - for (auto fname : dependants_) - { - auto found = file_manager_.find_processor_file(fname); - if (found) - filter_and_close_dependencies_(found->files_to_close(), found); - } + for (const auto& fname : dependants_) + { + auto found = file_manager_.find_processor_file(fname); + if (found) + filter_and_close_dependencies_(found->files_to_close(), found); } - ws_file_info.config_parsing = true; - return ws_file_info; } - // what about removing files??? what if depentands_ points to not existing file? + ws_file_info.config_parsing = true; + return ws_file_info; +} + +workspace_file_info workspace::parse_file(const std::string& file_uri) +{ + workspace_file_info ws_file_info; + + // TODO: add support for hlasm to vscode (auto detection??) and do the decision based on languageid + if (is_config_file(file_uri)) + { + return parse_config_file(); + } + + // TODO: what about removing files??? what if depentands_ points to not existing file? std::vector files_to_parse; - for (auto fname : dependants_) + for (const auto& fname : dependants_) { auto f = file_manager_.find_processor_file(fname); if (!f) @@ -202,13 +217,12 @@ workspace_file_info workspace::parse_file(const std::string& file_uri) files_to_parse.push_back(f); } - for (auto f : files_to_parse) + for (const auto& f : files_to_parse) { f->parse(*this, get_asm_options(f->get_file_name()), get_preprocessor_options(f->get_file_name()), &fm_vfm_); if (!f->dependencies().empty()) dependants_.insert(f->get_file_name()); - // if there is no processor group assigned to the program, delete diagnostics that may have been created if (cancel_ && cancel_->load()) // skip, if parsing was cancelled using the cancellation token continue; @@ -226,7 +240,7 @@ workspace_file_info workspace::parse_file(const std::string& file_uri) } // second check after all dependants are there to close all files that used to be dependencies - for (auto f : files_to_parse) + for (const auto& f : files_to_parse) filter_and_close_dependencies_(f->files_to_close(), f); return ws_file_info; @@ -243,11 +257,20 @@ void workspace::refresh_libraries() } } -workspace_file_info workspace::did_open_file(const std::string& file_uri) { return parse_file(file_uri); } +workspace_file_info workspace::did_open_file(const std::string& file_uri) +{ + if (!is_config_file(file_uri)) + opened_files_.emplace(file_uri); + + return parse_file(file_uri); +} void workspace::did_close_file(const std::string& file_uri) { diag_suppress_notified_[file_uri] = false; + + opened_files_.erase(file_uri); + // first check whether the file is a dependency // if so, simply close it, no other action is needed if (is_dependency_(file_uri)) @@ -502,9 +525,10 @@ bool workspace::load_and_process_config() config::pgm_conf pgm_config; config::proc_grps proc_groups; + file_ptr proc_grps_file; file_ptr pgm_conf_file; - bool load_ok = load_config(proc_groups, pgm_config, pgm_conf_file); + bool load_ok = load_config(proc_groups, pgm_config, proc_grps_file, pgm_conf_file); if (!load_ok) return false; @@ -529,7 +553,7 @@ bool workspace::load_and_process_config() // process processor groups for (auto& pg : proc_groups.pgroups) { - processor_group prc_grp(pg.name, pg.asm_options, pg.preprocessor); + processor_group prc_grp(pg.name, proc_grps_file->get_file_name(), pg.asm_options, pg.preprocessor); for (const auto& lib : pg.libs) { @@ -581,18 +605,19 @@ bool workspace::load_and_process_config() } else { - config_diags_.push_back(diagnostic_s::error_W004(pgm_conf_file->get_file_name(), name_)); + config_diags_.push_back(diagnostic_s::error_W0004(pgm_conf_file->get_file_name(), name_)); } } return true; } -bool workspace::load_config(config::proc_grps& proc_groups, config::pgm_conf& pgm_config, file_ptr& pgm_conf_file) +bool workspace::load_config( + config::proc_grps& proc_groups, config::pgm_conf& pgm_config, file_ptr& proc_grps_file, file_ptr& pgm_conf_file) { std::filesystem::path hlasm_base = utils::path::join(uri_, HLASM_PLUGIN_FOLDER); // proc_grps.json parse - file_ptr proc_grps_file = file_manager_.add_file(utils::path::join(hlasm_base, FILENAME_PROC_GRPS).string()); + proc_grps_file = file_manager_.add_file(utils::path::join(hlasm_base, FILENAME_PROC_GRPS).string()); if (proc_grps_file->update_and_get_bad()) return false; @@ -604,15 +629,15 @@ bool workspace::load_config(config::proc_grps& proc_groups, config::pgm_conf& pg for (const auto& pg : proc_groups.pgroups) { if (!pg.asm_options.valid()) - config_diags_.push_back(diagnostic_s::error_W005(proc_grps_file->get_file_name(), pg.name)); + config_diags_.push_back(diagnostic_s::error_W0005(proc_grps_file->get_file_name(), pg.name)); if (!pg.preprocessor.valid()) - config_diags_.push_back(diagnostic_s::error_W006(proc_grps_file->get_file_name(), pg.name)); + config_diags_.push_back(diagnostic_s::error_W0006(proc_grps_file->get_file_name(), pg.name)); } } catch (const nlohmann::json::exception&) { // could not load proc_grps - config_diags_.push_back(diagnostic_s::error_W002(proc_grps_file->get_file_name(), name_)); + config_diags_.push_back(diagnostic_s::error_W0002(proc_grps_file->get_file_name(), name_)); return false; } @@ -630,7 +655,7 @@ bool workspace::load_config(config::proc_grps& proc_groups, config::pgm_conf& pg } catch (const nlohmann::json::exception&) { - config_diags_.push_back(diagnostic_s::error_W003(pgm_conf_file->get_file_name(), name_)); + config_diags_.push_back(diagnostic_s::error_W0003(pgm_conf_file->get_file_name(), name_)); return false; } diff --git a/parser_library/src/workspaces/workspace.h b/parser_library/src/workspaces/workspace.h index 8964fcbd4..1966839fc 100644 --- a/parser_library/src/workspaces/workspace.h +++ b/parser_library/src/workspaces/workspace.h @@ -148,15 +148,23 @@ class workspace : public diagnosable_impl, public parse_lib_provider, public lsp void find_and_add_libs( std::string root, const std::string& path_pattern, processor_group& prc_grp, const library_local_options& opts); + bool is_config_file(const std::string& file_uri) const; + workspace_file_info parse_config_file(); + bool load_and_process_config(); // Loads the pgm_conf.json and proc_grps.json from disk, adds them to file_manager_ and parses both jsons. // Returns false if there is any error. - bool load_config(config::proc_grps& proc_groups, config::pgm_conf& pgm_config, file_ptr& pgm_conf_file); + bool load_config(config::proc_grps& proc_groups, + config::pgm_conf& pgm_config, + file_ptr& proc_grps_file, + file_ptr& pgm_conf_file); bool is_wildcard(const std::string& str); // files, that depend on others (e.g. open code files that use macros) - std::set dependants_; + std::set> dependants_; + + std::set> opened_files_; diagnostic_container config_diags_; diff --git a/parser_library/test/checking/mach_instr_check_test.cpp b/parser_library/test/checking/mach_instr_check_test.cpp index cdfbeb23c..d21177934 100644 --- a/parser_library/test/checking/mach_instr_check_test.cpp +++ b/parser_library/test/checking/mach_instr_check_test.cpp @@ -16,6 +16,7 @@ #include "analyzer.h" #include "checking/instruction_checker.h" +#include "context/instruction.h" using namespace hlasm_plugin::parser_library; using namespace hlasm_plugin::parser_library::checking; diff --git a/parser_library/test/config/proc_grps_test.cpp b/parser_library/test/config/proc_grps_test.cpp index c36c74a3e..ecc722664 100644 --- a/parser_library/test/config/proc_grps_test.cpp +++ b/parser_library/test/config/proc_grps_test.cpp @@ -53,9 +53,10 @@ TEST(proc_grps, assembler_options_read) std::make_pair(R"({})"_json, assembler_options {}), std::make_pair(R"({"PROFILE":"MAC"})"_json, assembler_options { "", "MAC" }), std::make_pair(R"({"SYSPARM":"TESTPARM"})"_json, assembler_options { "TESTPARM", "" }), - std::make_pair(R"({"SYSTEM_ID":"VSE"})"_json, assembler_options { "", "", "VSE" }), - std::make_pair(R"({"PROFILE":"MAC","SYSPARM":"TESTPARM","SYSTEM_ID":"VSE"})"_json, - assembler_options { "TESTPARM", "MAC", "VSE" }), + std::make_pair(R"({"OPTABLE":"ZS9"})"_json, assembler_options { "", "", "ZS9" }), + std::make_pair(R"({"SYSTEM_ID":"VSE"})"_json, assembler_options { "", "", "", "VSE" }), + std::make_pair(R"({"PROFILE":"MAC","SYSPARM":"TESTPARM","OPTABLE":"ZS9","SYSTEM_ID":"VSE"})"_json, + assembler_options { "TESTPARM", "MAC", "ZS9", "VSE" }), }; for (const auto& [input, expected] : cases) @@ -63,6 +64,7 @@ TEST(proc_grps, assembler_options_read) const auto ao = input.get(); EXPECT_EQ(ao.profile, expected.profile); EXPECT_EQ(ao.sysparm, expected.sysparm); + EXPECT_EQ(ao.optable, expected.optable); EXPECT_EQ(ao.system_id, expected.system_id); } } @@ -73,9 +75,10 @@ TEST(proc_grps, assembler_options_write) std::make_pair(R"({})"_json, assembler_options {}), std::make_pair(R"({"PROFILE":"MAC"})"_json, assembler_options { "", "MAC" }), std::make_pair(R"({"SYSPARM":"TESTPARM"})"_json, assembler_options { "TESTPARM", "" }), - std::make_pair(R"({"SYSTEM_ID":"VSE"})"_json, assembler_options { "", "", "VSE" }), - std::make_pair(R"({"PROFILE":"MAC","SYSPARM":"TESTPARM","SYSTEM_ID":"VSE"})"_json, - assembler_options { "TESTPARM", "MAC", "VSE" }), + std::make_pair(R"({"OPTABLE":"ZS9"})"_json, assembler_options { "", "", "ZS9" }), + std::make_pair(R"({"SYSTEM_ID":"VSE"})"_json, assembler_options { "", "", "", "VSE" }), + std::make_pair(R"({"PROFILE":"MAC","SYSPARM":"TESTPARM","OPTABLE":"ZS9","SYSTEM_ID":"VSE"})"_json, + assembler_options { "TESTPARM", "MAC", "ZS9", "VSE" }), }; for (const auto& [expected, input] : cases) @@ -213,6 +216,9 @@ TEST(proc_grps, assembler_options_validate) std::make_pair(assembler_options { "SYSPARM" }, true), std::make_pair(assembler_options { std::string(255, 'A') }, true), std::make_pair(assembler_options { std::string(256, 'A') }, false), + std::make_pair(assembler_options { "", "", "" }, true), + std::make_pair(assembler_options { "", "", "UNI" }, true), + std::make_pair(assembler_options { "", "", "A" }, false), }; for (const auto& [input, expected] : cases) diff --git a/parser_library/test/config/system_id_test.cpp b/parser_library/test/config/system_id_test.cpp index 7b49f88d7..217766309 100644 --- a/parser_library/test/config/system_id_test.cpp +++ b/parser_library/test/config/system_id_test.cpp @@ -24,7 +24,7 @@ TEST(system_id, basic_properties) &B SETC T'&SYSTEM_ID &C SETA K'&SYSTEM_ID )"; - analyzer a(input, analyzer_options { asm_option { "", "", "VSE" } }); + analyzer a(input, analyzer_options { asm_option { "", "", instruction_set_version::UNI, "VSE" } }); a.analyze(); a.collect_diags(); diff --git a/parser_library/test/context/CMakeLists.txt b/parser_library/test/context/CMakeLists.txt index 9ee63e68a..b1b3b811a 100644 --- a/parser_library/test/context/CMakeLists.txt +++ b/parser_library/test/context/CMakeLists.txt @@ -15,6 +15,7 @@ target_sources(library_test PRIVATE context_test.cpp data_attribute_test.cpp dependency_collector_test.cpp + instruction_test.cpp literals_test.cpp macro_test.cpp ord_sym_test.cpp diff --git a/parser_library/test/context/instruction_test.cpp b/parser_library/test/context/instruction_test.cpp new file mode 100644 index 000000000..a06fd6adb --- /dev/null +++ b/parser_library/test/context/instruction_test.cpp @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2022 Broadcom. + * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Broadcom, Inc. - initial API and implementation + */ + +#include "gtest/gtest.h" + +#include "../common_testing.h" +#include "../mock_parse_lib_provider.h" +#include "context/instruction.h" + +// clang-format off +std::unordered_map> instruction_compatibility_matrix = { + { "ADDFRR", { {instruction_set_version::ESA }, {instruction_set_version::XA } } }, + { "VACD", { {instruction_set_version::ESA }, { instruction_set_version::XA }, { instruction_set_version::_370 } } }, + { "CLRCH", { {instruction_set_version::UNI }, { instruction_set_version::_370 } } }, + { "CLRIO", { {instruction_set_version::UNI }, { instruction_set_version::_370 }, { instruction_set_version::DOS } } }, + { "DFLTCC", { {instruction_set_version::UNI }, { instruction_set_version::Z15 } } }, + { "VLER", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::ESA }, { instruction_set_version::XA }, { instruction_set_version::_370 } } }, + { "AGH", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 } } }, + { "CDPT", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 } } }, + { "VA", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::ESA }, { instruction_set_version::XA }, { instruction_set_version::_370 } } }, + { "BPP", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::Z12 } } }, + { "ADTRA", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::Z12 }, { instruction_set_version::Z11 } } }, + { "AGSI", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::Z12 }, { instruction_set_version::Z11 }, { instruction_set_version::Z10 } } }, + { "ADTR", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::Z12 }, { instruction_set_version::Z11 }, { instruction_set_version::Z10 }, { instruction_set_version::Z9 } } }, + { "CDSY", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::Z12 }, { instruction_set_version::Z11 }, { instruction_set_version::Z10 }, { instruction_set_version::Z9 }, { instruction_set_version::YOP } } }, + { "AG", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::Z12 }, { instruction_set_version::Z11 }, { instruction_set_version::Z10 }, { instruction_set_version::Z9 }, { instruction_set_version::YOP }, { instruction_set_version::ZOP } } }, + { "ADB", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::Z12 }, { instruction_set_version::Z11 }, { instruction_set_version::Z10 }, { instruction_set_version::Z9 }, { instruction_set_version::YOP }, { instruction_set_version::ZOP }, { instruction_set_version::ESA } } }, + { "BASSM", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::Z12 }, { instruction_set_version::Z11 }, { instruction_set_version::Z10 }, { instruction_set_version::Z9 }, { instruction_set_version::YOP }, { instruction_set_version::ZOP }, { instruction_set_version::ESA }, { instruction_set_version::XA } } }, + { "BAS", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::Z12 }, { instruction_set_version::Z11 }, { instruction_set_version::Z10 }, { instruction_set_version::Z9 }, { instruction_set_version::YOP }, { instruction_set_version::ZOP }, { instruction_set_version::ESA }, { instruction_set_version::XA }, { instruction_set_version::_370 } } }, + { "A", { {instruction_set_version::UNI }, { instruction_set_version::Z15 }, { instruction_set_version::Z14 }, { instruction_set_version::Z13 }, { instruction_set_version::Z12 }, { instruction_set_version::Z11 }, { instruction_set_version::Z10 }, { instruction_set_version::Z9 }, { instruction_set_version::YOP }, { instruction_set_version::ZOP }, { instruction_set_version::ESA }, { instruction_set_version::XA }, { instruction_set_version::_370 }, { instruction_set_version::DOS } } }, +}; +// clang-format on + +namespace { +struct instruction_sets_compatibility_params +{ + instruction_set_version instr_set; + + static instruction_sets_compatibility_params set_instr_set(instruction_set_version instr_set) + { + instruction_sets_compatibility_params params {}; + params.instr_set = instr_set; + + return params; + } +}; + +class instruction_sets_fixture : public ::testing::TestWithParam +{}; + +} // namespace + +INSTANTIATE_TEST_SUITE_P(instruction_test, + instruction_sets_fixture, + ::testing::Values(instruction_sets_compatibility_params::set_instr_set(instruction_set_version::ZOP), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::YOP), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::Z9), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::Z10), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::Z11), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::Z12), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::Z13), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::Z14), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::Z15), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::UNI), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::DOS), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::_370), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::XA), + instruction_sets_compatibility_params::set_instr_set(instruction_set_version::ESA))); + +TEST_P(instruction_sets_fixture, instruction_set_loading) +{ + auto instr_set = GetParam().instr_set; + std::string dummy_input; + analyzer a(dummy_input, analyzer_options { asm_option { "", "", instr_set } }); + + for (const auto& instr : instruction_compatibility_matrix) + { + auto id = a.hlasm_ctx().ids().find(instr.first); + + if (instr.second.find(instr_set) == instr.second.end()) + { + EXPECT_TRUE(id == nullptr) << "For instructions: " << instr.first; + } + else + { + EXPECT_TRUE(id != nullptr) << "For instructions: " << instr.first; + } + } +} + +namespace { +struct test_case +{ + instruction_set_version instr_set; + int expected_var_value; +}; +} // namespace + +TEST(instruction_sets_fixture, identical_macro_name_inline_definition) +{ + std::string input = R"( + MACRO + SAM31 + GBLA &VAR +&VAR SETA 1 + MEND + + GBLA &VAR +&VAR SETA 0 + SAM31 +)"; + + test_case cases[] = { { instruction_set_version::_370, 1 }, { instruction_set_version::Z11, 1 } }; + + for (const auto& c : cases) + { + analyzer a(input, analyzer_options { asm_option { "", "", c.instr_set } }); + a.analyze(); + a.collect_diags(); + EXPECT_EQ(a.diags().size(), 0); + + EXPECT_EQ(get_var_value(a.hlasm_ctx(), "VAR"), c.expected_var_value); + } +} + +TEST(instruction_sets_fixture, identical_macro_name_linked_definition) +{ + std::string input = R"( + GBLA &VAR +&VAR SETA 0 + SAM31 +)"; + + std::string macro = + R"( MACRO + SAM31 + GBLA &VAR +&VAR SETA 2 + MEND +)"; + + test_case cases[] = { { instruction_set_version::_370, 2 }, { instruction_set_version::Z11, 0 } }; + + mock_parse_lib_provider lib_provider { { "SAM31", macro } }; + + for (const auto& c : cases) + { + analyzer a(input, analyzer_options { asm_option { "", "", c.instr_set }, &lib_provider }); + a.analyze(); + a.collect_diags(); + EXPECT_EQ(a.diags().size(), 0); + + EXPECT_EQ(get_var_value(a.hlasm_ctx(), "VAR"), c.expected_var_value); + } +} + +TEST(instruction_sets_fixture, identical_macro_name_inline_and_linked_definition) +{ + std::string input = R"( + MACRO + SAM31 + GBLA &VAR +&VAR SETA 1 + MEND + + GBLA &VAR +&VAR SETA 0 + SAM31 +)"; + + std::string macro = + R"( MACRO + SAM31 + GBLA &VAR +&VAR SETA 2 + MEND +)"; + + test_case cases[] = { { instruction_set_version::_370, 1 }, { instruction_set_version::Z11, 1 } }; + + mock_parse_lib_provider lib_provider { { "SAM31", macro } }; + + for (const auto& c : cases) + { + analyzer a(input, analyzer_options { asm_option { "", "", c.instr_set }, &lib_provider }); + a.analyze(); + a.collect_diags(); + EXPECT_EQ(a.diags().size(), 0); + + EXPECT_EQ(get_var_value(a.hlasm_ctx(), "VAR"), c.expected_var_value); + } +} diff --git a/parser_library/test/lsp/CMakeLists.txt b/parser_library/test/lsp/CMakeLists.txt index ce2170afc..e70f1f2fd 100644 --- a/parser_library/test/lsp/CMakeLists.txt +++ b/parser_library/test/lsp/CMakeLists.txt @@ -13,6 +13,9 @@ target_sources(library_test PRIVATE analyzer_fixture.h lsp_context_copy_in_macro_test.cpp + lsp_context_document_symbol_ord_test.cpp + lsp_context_document_symbol_var_seq_test.cpp + lsp_context_instr_test.cpp lsp_context_macro_documentation_test.cpp lsp_context_macro_in_opencode_test.cpp lsp_context_nested_macro_test.cpp @@ -20,6 +23,4 @@ target_sources(library_test PRIVATE lsp_context_seq_sym_test.cpp lsp_context_var_sym_test.cpp lsp_features_test.cpp - lsp_context_document_symbol_ord_test.cpp - lsp_context_document_symbol_var_seq_test.cpp ) diff --git a/parser_library/test/lsp/lsp_context_instr_test.cpp b/parser_library/test/lsp/lsp_context_instr_test.cpp new file mode 100644 index 000000000..a2ab473a2 --- /dev/null +++ b/parser_library/test/lsp/lsp_context_instr_test.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2022 Broadcom. + * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Broadcom, Inc. - initial API and implementation + */ + +#include "gtest/gtest.h" + +#include "analyzer_fixture.h" +#include "instruction_set_version.h" + +using namespace hlasm_plugin::parser_library; +using namespace hlasm_plugin::parser_library::lsp; + + +struct lsp_context_instr : public ::testing::Test +{ + const static inline std::string input = + R"( +&VAR SETA 1 + ADR +)"; + + const static inline std::string opencode_file_name = "source"; + std::unique_ptr m_analyzer; + + lsp_context_instr() = default; + + std::unique_ptr new_analyzer(instruction_set_version instr_set = instruction_set_version::Z15) + { + auto a = std::make_unique(input, + analyzer_options { opencode_file_name, + &workspaces::empty_parse_lib_provider::instance, + asm_option { "", "", instr_set } }); + + a->analyze(); + return a; + } + + lsp::completion_list_s get_completion_list(instruction_set_version instr_set) + { + analyzer a(input, + analyzer_options { opencode_file_name, + &workspaces::empty_parse_lib_provider::instance, + asm_option { "", "", instr_set } }); + + a.analyze(); + + return a.context().lsp_ctx->completion( + opencode_file_name, { 2, 3 }, 'R', completion_trigger_kind::trigger_character); + } +}; + +namespace { +auto label_addfrr_compare = [](const auto& item) { return item.label == "ADDFRR"; }; +} +TEST_F(lsp_context_instr, ADDFRR_not_loaded) +{ + auto comp_list = get_completion_list(instruction_set_version::Z15); + + auto result = std::none_of(comp_list.begin(), comp_list.end(), label_addfrr_compare); + + EXPECT_TRUE(result); +} + +TEST_F(lsp_context_instr, ADDFRR_loaded) +{ + auto comp_list = get_completion_list(instruction_set_version::XA); + + auto result = std::any_of(comp_list.begin(), comp_list.end(), label_addfrr_compare); + + EXPECT_TRUE(result); +} +TEST_F(lsp_context_instr, ADDFRR_loaded_changed_instr_set) +{ + auto comp_list_z15 = get_completion_list(instruction_set_version::Z15); + auto comp_list_xa = get_completion_list(instruction_set_version::XA); + + auto result_z15 = std::none_of(comp_list_z15.begin(), comp_list_z15.end(), label_addfrr_compare); + + auto result_xa = std::any_of(comp_list_xa.begin(), comp_list_xa.end(), label_addfrr_compare); + + EXPECT_NE(comp_list_z15.size(), comp_list_xa.size()); + EXPECT_TRUE(result_z15); + EXPECT_TRUE(result_xa); +} diff --git a/parser_library/test/lsp/lsp_features_test.cpp b/parser_library/test/lsp/lsp_features_test.cpp index 2e7d754f4..e2d9938db 100644 --- a/parser_library/test/lsp/lsp_features_test.cpp +++ b/parser_library/test/lsp/lsp_features_test.cpp @@ -37,11 +37,7 @@ class lsp_features_test : public testing::Test MEND)" }, { "COPYFILE", R"(R2 EQU 2 LR R2,R2)" } }) - , a(contents, analyzer_options { SOURCE_FILE, &lib_provider }) - , instruction_count(context::instruction::all_machine_instructions().size() - + context::instruction::all_assembler_instructions().size() - + context::instruction::all_ca_instructions().size() - + context::instruction::all_mnemonic_codes().size()) {}; + , a(contents, analyzer_options { SOURCE_FILE, &lib_provider }) {}; void SetUp() override { a.analyze(); } void TearDown() override {} @@ -79,7 +75,6 @@ R1 MAC R2 std::string content; mock_parse_lib_provider lib_provider; analyzer a; - const size_t instruction_count; }; TEST_F(lsp_features_test, go_to) @@ -100,7 +95,7 @@ TEST_F(lsp_features_test, go_to) EXPECT_EQ(location(position(8, 13), SOURCE_FILE), a.context().lsp_ctx->definition(SOURCE_FILE, position(11, 15))); // forward jump in source, open code, ord symbol R1 EXPECT_EQ(location(position(22, 0), SOURCE_FILE), a.context().lsp_ctx->definition(SOURCE_FILE, position(21, 10))); - // jump from source to copy file, ord symbol R2 on machine instrution + // jump from source to copy file, ord symbol R2 on machine instruction EXPECT_EQ(location(position(0, 0), COPY_FILE), a.context().lsp_ctx->definition(SOURCE_FILE, position(21, 13))); // jump from source to copy file, ord symbol R2 on macro MAC EXPECT_EQ(location(position(0, 0), COPY_FILE), a.context().lsp_ctx->definition(SOURCE_FILE, position(23, 14))); diff --git a/parser_library/test/workspace/CMakeLists.txt b/parser_library/test/workspace/CMakeLists.txt index 2f41e8494..433817574 100644 --- a/parser_library/test/workspace/CMakeLists.txt +++ b/parser_library/test/workspace/CMakeLists.txt @@ -16,6 +16,7 @@ target_sources(library_test PRIVATE extension_handling_test.cpp file_with_text.h files_parse_lib_provider.h + instruction_sets_test.cpp load_config_test.cpp macro_cache_test.cpp pathmask_test.cpp diff --git a/parser_library/test/workspace/instruction_sets_test.cpp b/parser_library/test/workspace/instruction_sets_test.cpp new file mode 100644 index 000000000..39775f335 --- /dev/null +++ b/parser_library/test/workspace/instruction_sets_test.cpp @@ -0,0 +1,186 @@ +/* + * Copyright (c) 2022 Broadcom. + * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Broadcom, Inc. - initial API and implementation + */ + +#include +#include +#include + +#include "gtest/gtest.h" + +#include "../common_testing.h" +#include "file_with_text.h" +#include "utils/path.h" +#include "utils/platform.h" +#include "workspaces/file_impl.h" +#include "workspaces/file_manager_impl.h" +#include "workspaces/workspace.h" + +using namespace hlasm_plugin::parser_library; +using namespace hlasm_plugin::parser_library::workspaces; +using hlasm_plugin::utils::platform::is_windows; + +class workspace_instruction_sets_test : public diagnosable_impl, public testing::Test +{ +public: + void collect_diags() const override {} + size_t collect_and_get_diags_size(workspace& ws, file_manager& file_mngr) + { + diags().clear(); + collect_diags_from_child(ws); + collect_diags_from_child(file_mngr); + return diags().size(); + } +}; + +namespace { +std::string pgroups_file_optable_370 = R"({ + "pgroups": [ + { + "name": "P1", + "libs": [ + "lib" + ], + "asm_options": { + "OPTABLE": "370" + } + } + ] +})"; + +std::string pgroups_file_optable_Z10 = R"({ + "pgroups": [ + { + "name": "P1", + "libs": [ + "lib" + ], + "asm_options": { + "OPTABLE": "Z10" + } + } + ] +})"; + +std::string pgmconf_file = R"({ + "pgms": [ + { + "program": "source", + "pgroup": "P1" + } + ] +})"; + +std::string source = R"( + GBLA &VAR +&VAR SETA 0 + SAM31 + + AIF (&VAR EQ 2).END + NONSENSE + +.END ANOP + END)"; + +std::string sam31_macro = R"( MACRO + SAM31 + GBLA &VAR +&VAR SETA 2 + MEND)"; + +const char* sam31_macro_path = is_windows() ? "lib\\SAM31" : "lib/SAM31"; +std::string hlasmplugin_folder = is_windows() ? ".hlasmplugin\\" : ".hlasmplugin/"; + +enum class file_manager_opt_variant +{ + optable_370, + optable_Z10 +}; + +class file_manager_opt : public file_manager_impl +{ + std::unique_ptr generate_proc_grps_file(file_manager_opt_variant variant) + { + switch (variant) + { + case file_manager_opt_variant::optable_370: + return std::make_unique("proc_grps.json", pgroups_file_optable_370, *this); + case file_manager_opt_variant::optable_Z10: + return std::make_unique("proc_grps.json", pgroups_file_optable_Z10, *this); + } + throw std::logic_error("Not implemented"); + } + +public: + file_manager_opt(file_manager_opt_variant variant) + { + files_.emplace(hlasmplugin_folder + "proc_grps.json", generate_proc_grps_file(variant)); + files_.emplace(hlasmplugin_folder + "pgm_conf.json", + std::make_unique("pgm_conf.json", pgmconf_file, *this)); + files_.emplace("source", std::make_unique("source", source, *this)); + files_.emplace(sam31_macro_path, std::make_unique(sam31_macro_path, sam31_macro, *this)); + } + + list_directory_result list_directory_files(const std::string& path) override + { + if (path == "lib/" || path == "lib\\") + return { { { "SAM31", "SAM31" } }, hlasm_plugin::utils::path::list_directory_rc::done }; + + return { {}, hlasm_plugin::utils::path::list_directory_rc::not_exists }; + } +}; + +void change_instruction_set( + const range& change_range, const std::string& process_group, file_manager& fm, workspace& ws) +{ + std::vector changes; + changes.push_back(document_change({ change_range }, process_group.c_str(), process_group.size())); + + fm.did_change_file(hlasmplugin_folder + "proc_grps.json", 1, changes.data(), changes.size()); + ws.did_change_file(hlasmplugin_folder + "proc_grps.json", changes.data(), changes.size()); +} +} // namespace + +TEST_F(workspace_instruction_sets_test, changed_instr_set_370_Z10) +{ + file_manager_opt file_manager(file_manager_opt_variant::optable_370); + lib_config config; + workspace ws("", "workspace_name", file_manager, config); + ws.open(); + + ws.did_open_file("source"); + EXPECT_EQ(collect_and_get_diags_size(ws, file_manager), (size_t)0); + + // Change instruction set + change_instruction_set({ { 0, 0 }, { 12, 1 } }, pgroups_file_optable_Z10, file_manager, ws); + + collect_and_get_diags_size(ws, file_manager); + EXPECT_TRUE(matches_message_codes(diags(), { "E049" })); +} + +TEST_F(workspace_instruction_sets_test, changed_instr_set_Z10_370) +{ + file_manager_opt file_manager(file_manager_opt_variant::optable_Z10); + lib_config config; + workspace ws("", "workspace_name", file_manager, config); + ws.open(); + + ws.did_open_file("source"); + collect_and_get_diags_size(ws, file_manager); + EXPECT_TRUE(matches_message_codes(diags(), { "E049" })); + + // Change instruction set + change_instruction_set({ { 0, 0 }, { 12, 1 } }, pgroups_file_optable_370, file_manager, ws); + + EXPECT_EQ(collect_and_get_diags_size(ws, file_manager), (size_t)0); +} \ No newline at end of file diff --git a/parser_library/test/workspace/processor_group_test.cpp b/parser_library/test/workspace/processor_group_test.cpp index 40a681ca5..ffa69a773 100644 --- a/parser_library/test/workspace/processor_group_test.cpp +++ b/parser_library/test/workspace/processor_group_test.cpp @@ -21,10 +21,10 @@ using namespace hlasm_plugin::parser_library; using namespace hlasm_plugin::parser_library::workspaces; -auto asm_options(config::assembler_options o) { return processor_group("", std::move(o), {}).asm_options(); } +auto asm_options(config::assembler_options o) { return processor_group("", "", std::move(o), {}).asm_options(); } auto pp_options(decltype(config::preprocessor_options::options) o) { - return processor_group("", {}, config::preprocessor_options { .options = std::move(o) }).preprocessor(); + return processor_group("", "", {}, config::preprocessor_options { .options = std::move(o) }).preprocessor(); } TEST(processor_group, assembler_options) @@ -52,3 +52,88 @@ TEST(processor_group, preprocessor_options) EXPECT_EQ(pp_options(config::cics_preprocessor { .epilog = false }), cics(true, false, false)); EXPECT_EQ(pp_options(config::cics_preprocessor { .prolog = false, .leasm = true }), cics(false, true, true)); } + +class processor_group_test : public diagnosable_impl, public testing::Test +{ +public: + void collect_diags() const override {} +}; + +TEST_F(processor_group_test, asm_options_optable_valid) +{ + std::string grp_name = "Group"; + config::assembler_options asm_opts; + asm_opts.optable = "UNI"; + + const auto cases = { + std::make_pair("ZOP", instruction_set_version::ZOP), + std::make_pair("ZS1", instruction_set_version::ZOP), + std::make_pair("YOP", instruction_set_version::YOP), + std::make_pair("ZS2", instruction_set_version::YOP), + std::make_pair("Z9", instruction_set_version::Z9), + std::make_pair("ZS3", instruction_set_version::Z9), + std::make_pair("Z10", instruction_set_version::Z10), + std::make_pair("ZS4", instruction_set_version::Z10), + std::make_pair("Z11", instruction_set_version::Z11), + std::make_pair("ZS5", instruction_set_version::Z11), + std::make_pair("Z12", instruction_set_version::Z12), + std::make_pair("ZS6", instruction_set_version::Z12), + std::make_pair("Z13", instruction_set_version::Z13), + std::make_pair("ZS7", instruction_set_version::Z13), + std::make_pair("Z14", instruction_set_version::Z14), + std::make_pair("ZS8", instruction_set_version::Z14), + std::make_pair("Z15", instruction_set_version::Z15), + std::make_pair("ZS9", instruction_set_version::Z15), + std::make_pair("UNI", instruction_set_version::UNI), + std::make_pair("DOS", instruction_set_version::DOS), + std::make_pair("370", instruction_set_version::_370), + std::make_pair("XA", instruction_set_version::XA), + std::make_pair("ESA", instruction_set_version::ESA), + std::make_pair("", instruction_set_version::UNI), + }; + + for (const auto& [input, expected] : cases) + { + diags().clear(); + + asm_opts.optable = input; + workspaces::processor_group proc_group("Group", "", asm_opts, {}); + + auto instr_set = proc_group.asm_options().instr_set; + + collect_diags_from_child(proc_group); + EXPECT_EQ(diags().size(), (size_t)0); + + EXPECT_EQ(instr_set, expected); + } +} + +TEST_F(processor_group_test, asm_options_optable_invalid) +{ + std::string grp_name = "Group"; + config::assembler_options asm_opts; + asm_opts.optable = "UNI"; + + const auto cases = { + std::make_pair("klgadh", instruction_set_version::UNI), + std::make_pair("ZS5ZS6", instruction_set_version::UNI), + std::make_pair("ZS0", instruction_set_version::UNI), + std::make_pair("Z8", instruction_set_version::UNI), + }; + + for (const auto& [input, expected] : cases) + { + diags().clear(); + + asm_opts.optable = input; + workspaces::processor_group proc_group("Group", "", asm_opts, {}); + + auto instr_set = proc_group.asm_options().instr_set; + + collect_diags_from_child(proc_group); + EXPECT_EQ(diags().size(), (size_t)1); + EXPECT_TRUE(matches_message_codes(diags(), { "W0007" })); + + EXPECT_EQ(instr_set, expected); + } +} diff --git a/parser_library/test/workspace/workspace_test.cpp b/parser_library/test/workspace/workspace_test.cpp index e546c3338..0c8a5825a 100644 --- a/parser_library/test/workspace/workspace_test.cpp +++ b/parser_library/test/workspace/workspace_test.cpp @@ -348,13 +348,13 @@ TEST_F(workspace_test, did_close_file) // 3 files are open // - open codes source1 and source2 with syntax errors using macro ERROR // - macro file lib/ERROR with syntax error - // on first reparse, there should be 3 diagnotics from sources and lib/ERROR file + // on first reparse, there should be 3 diagnostics from sources and lib/ERROR file ws.did_open_file("source1"); ws.did_open_file("source2"); EXPECT_EQ(collect_and_get_diags_size(ws, file_manager), (size_t)3); EXPECT_TRUE(match_strings({ faulty_macro_path, "source2", "source1" })); - // when we close source1, only its diagnostics should disapear + // when we close source1, only its diagnostics should disappear // macro's and source2's diagnostics should stay as it is still open ws.did_close_file("source1"); EXPECT_EQ(collect_and_get_diags_size(ws, file_manager), (size_t)2); @@ -366,7 +366,7 @@ TEST_F(workspace_test, did_close_file) EXPECT_TRUE(match_strings({ faulty_macro_path, "source2" })); // if we remove the line using ERROR macro in the source2. its diagnostics will be removed as it is no longer a - // dependendancy of source2 + // dependency of source2 std::vector changes; std::string new_text = ""; changes.push_back(document_change({ { 0, 0 }, { 0, 6 } }, new_text.c_str(), new_text.size())); @@ -483,4 +483,4 @@ TEST_F(workspace_test, library_list_failure) ws.did_open_file("source1"); EXPECT_GE(collect_and_get_diags_size(ws, file_manager), (size_t)1); EXPECT_TRUE(std::any_of(diags().begin(), diags().end(), [](const auto& d) { return d.code == "L0001"; })); -} +} \ No newline at end of file